<?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>201575</bug_id>
          
          <creation_ts>2019-09-06 22:10:53 -0700</creation_ts>
          <short_desc>Option + arrow moves caret past whitespace on iOS</short_desc>
          <delta_ts>2022-02-09 10:14:11 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>REOPENED</bug_status>
          <resolution></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>
          
          <blocked>201531</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>koivisto</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>mifenton</cc>
    
    <cc>repstein</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1568835</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-09-06 22:10:53 -0700</bug_when>
    <thetext>See https://bugs.webkit.org/show_bug.cgi?id=201531.

This bug tracks the fix for the hardware keyboard.

&lt;rdar://problem/51404664&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568839</commentid>
    <comment_count>1</comment_count>
      <attachid>378278</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-09-06 22:22:00 -0700</bug_when>
    <thetext>Created attachment 378278
Fixes the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568843</commentid>
    <comment_count>2</comment_count>
      <attachid>378279</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-09-06 22:48:31 -0700</bug_when>
    <thetext>Created attachment 378279
Fixed non-iOS builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568850</commentid>
    <comment_count>3</comment_count>
      <attachid>378282</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-09-06 23:12:38 -0700</bug_when>
    <thetext>Created attachment 378282
GTK build fix attempt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568851</commentid>
    <comment_count>4</comment_count>
      <attachid>378283</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-09-06 23:21:58 -0700</bug_when>
    <thetext>Created attachment 378283
Another GTK build fix attempt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568852</commentid>
    <comment_count>5</comment_count>
      <attachid>378284</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-09-06 23:28:58 -0700</bug_when>
    <thetext>Created attachment 378284
Yet another GTK build fix attempt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569261</commentid>
    <comment_count>6</comment_count>
      <attachid>378399</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-09-09 13:01:04 -0700</bug_when>
    <thetext>Created attachment 378399
Fixed build more</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569450</commentid>
    <comment_count>7</comment_count>
      <attachid>378399</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-09-09 22:15:42 -0700</bug_when>
    <thetext>Comment on attachment 378399
Fixed build more

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

&gt; Source/WebCore/ChangeLog:16
&gt; +        are involed from author scripts.

Nit - involed =&gt; involved

&gt; Source/WebCore/editing/VisibleUnits.cpp:772
&gt; +    return findNextWordFromIndex(text, offset, NextWordDirection::Backward, iosMode);

Nit - maybe name the variable nextWordMode or whitespaceMode instead of iosMode? (Or perhaps more verbose — nextWordModeInIOS).

&gt; Source/WebCore/editing/VisibleUnits.h:45
&gt; +WEBCORE_EXPORT VisiblePosition nextWordPosition(const VisiblePosition &amp;, NextWordModeInIOS = NextWordModeInIOS::LegacyStopBeforeWord);

Nit - might consider removing the extra space before the ampersand in `const VisiblePosition &amp;`, while we’re touching this line.

&gt; Source/WebCore/platform/text/TextBoundaries.h:51
&gt; +    enum class NextWordDirection { Forward, Backward };

I usually use `enum class NextWordDirection : bool { ~ }` for these, but it doesn’t really matter since NextWordDirection isn’t stored anywhere.

&gt; Source/WebCore/platform/text/TextBoundaries.h:52
&gt; +    enum class NextWordModeInIOS { LegacyStopBeforeWord, StopAfterWord };

(Ditto with the bool enum class)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569458</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-09-09 23:00:23 -0700</bug_when>
    <thetext>Thanks for the review.

(In reply to Wenson Hsieh from comment #7)
&gt; Comment on attachment 378399 [details]
&gt; Fixed build more
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=378399&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:16
&gt; &gt; +        are involed from author scripts.
&gt; 
&gt; Nit - involed =&gt; involved

Fixed.

&gt; &gt; Source/WebCore/editing/VisibleUnits.cpp:772
&gt; &gt; +    return findNextWordFromIndex(text, offset, NextWordDirection::Backward, iosMode);
&gt; 
&gt; Nit - maybe name the variable nextWordMode or whitespaceMode instead of
&gt; iosMode? (Or perhaps more verbose — nextWordModeInIOS).

Will use nextWordModeInIOS. whitespaceMode isn&apos;t right because we consider delimiters such as &quot;,&quot; as well.

&gt; &gt; Source/WebCore/editing/VisibleUnits.h:45
&gt; &gt; +WEBCORE_EXPORT VisiblePosition nextWordPosition(const VisiblePosition &amp;, NextWordModeInIOS = NextWordModeInIOS::LegacyStopBeforeWord);
&gt; 
&gt; Nit - might consider removing the extra space before the ampersand in `const
&gt; VisiblePosition &amp;`, while we’re touching this line.

Sure, done.

&gt; &gt; Source/WebCore/platform/text/TextBoundaries.h:51
&gt; &gt; +    enum class NextWordDirection { Forward, Backward };
&gt; 
&gt; I usually use `enum class NextWordDirection : bool { ~ }` for these, but it
&gt; doesn’t really matter since NextWordDirection isn’t stored anywhere.

Thanks for catching that. I always forget to specify the enum class&apos; width. I&apos;ve been coding too long in old C/C++ :(

&gt; &gt; Source/WebCore/platform/text/TextBoundaries.h:52
&gt; &gt; +    enum class NextWordModeInIOS { LegacyStopBeforeWord, StopAfterWord };
&gt; 
&gt; (Ditto with the bool enum class)

Fixed this one too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569459</commentid>
    <comment_count>9</comment_count>
      <attachid>378444</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-09-09 23:01:23 -0700</bug_when>
    <thetext>Created attachment 378444
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569463</commentid>
    <comment_count>10</comment_count>
      <attachid>378444</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-09-09 23:27:06 -0700</bug_when>
    <thetext>Comment on attachment 378444
Patch for landing

Wait for EWS again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569482</commentid>
    <comment_count>11</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-09-10 02:36:51 -0700</bug_when>
    <thetext>Finally!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569487</commentid>
    <comment_count>12</comment_count>
      <attachid>378444</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-09-10 03:09:35 -0700</bug_when>
    <thetext>Comment on attachment 378444
Patch for landing

Ugh... wrong + :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569494</commentid>
    <comment_count>13</comment_count>
      <attachid>378444</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-10 03:54:06 -0700</bug_when>
    <thetext>Comment on attachment 378444
Patch for landing

Clearing flags on attachment: 378444

Committed r249709: &lt;https://trac.webkit.org/changeset/249709&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569495</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-10 03:54:07 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570618</commentid>
    <comment_count>15</comment_count>
    <who name="Russell Epstein">repstein</who>
    <bug_when>2019-09-13 09:53:36 -0700</bug_when>
    <thetext>Reverted r249709 for reason:

Layout test added in this patch has been consistently failing since it landed.

Committed r249838: &lt;https://trac.webkit.org/changeset/249838&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378278</attachid>
            <date>2019-09-06 22:22:00 -0700</date>
            <delta_ts>2019-09-06 22:48:30 -0700</delta_ts>
            <desc>Fixes the bug</desc>
            <filename>bug-201575-20190906222159.patch</filename>
            <type>text/plain</type>
            <size>44429</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDBjNGMwNjI5ZjZkNjdi
YzUyMDUyMzc4ZjlmMmYzYWNjZWI2OWQ5NC4uZGIyNzAyMjhjZjFiMjk0MDA4ZDE1YzlmNTVjZTZh
MzU5OTY2ZjhhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE5LTA5LTA2ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIE9wdGlvbiArIGFycm93IG1v
dmVzIGNhcmV0IHBhc3Qgd2hpdGVzcGFjZSBvbiBpT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTU3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBidWcgd2FzIGNhdXNlZCBieSBmaW5kTmV4dFdv
cmRGcm9tSW5kZXggb24gaU9TIGJlaGF2aW5nIGRpZmZlcmVudGx5IGZyb20gbWFjT1MgYW5kIFVJ
S2l0CisgICAgICAgIGJ5IHNraXBwaW5nIHRyYWlsaW5nIHdoaXRlc3BhY2UgYWZ0ZXIgYSB3b3Jk
IHdoZW4gbW92aW5nIGZvcndhcmQgYW5kIG5vdCBza2lwcGluZyBsZWFkaW5nCisgICAgICAgIHdo
aXRlc3BhY2Ugd2hlbiBtb3ZpbmcgYmFja3dhcmQuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRy
b2R1Y2VzIGEgbmV3IG1vZGUgKFN0b3BBZnRlcldvcmQpIG9mIGZpbmROZXh0V29yZEZyb21JbmRl
eCBpbiBpT1MgdGhhdAorICAgICAgICBiZXR0ZXIgbWF0Y2hlcyB0aGUgYmVoYXZpb3Igb2YgZmlu
ZE5leHRXb3JkRnJvbUluZGV4IG9uIG1hY09TIGFuZCBVSUtpdCwgYW5kIHVzZSBpdCBpbgorICAg
ICAgICB2YXJpb3VzIG1vZGlmeSogZnVuY3Rpb25zIG9mIEZyYW1lU2VsZWN0aW9uIHdoZW4gdGhl
IHNlbGVjdGlvbiB1cGRhdGUgaXMgdHJpZ2dlcmVkIGJ5IHVzZXIuCisKKyAgICAgICAgQWxsIG90
aGVyIGNhbGwgc2l0ZXMgYXMgd2VsbCBhcyB3aGVuIG1vZGlmeSogZnVuY3Rpb25zIGFyZSBpbnZv
bGVkIGZyb20gc2NyaXB0cywKKyAgICAgICAgd2UgdXNlIHRoZSBsZWdhY3kgbW9kZSAoTGVnYWN5
U3RvcEJlZm9yZVdvcmQpIHRvIG1pbmltaXplIHRoZSBjb21wYXRpYmlsaXR5IHJpc2sgZm9yIG5v
dy4KKworICAgICAgICBUZXN0OiBlZGl0aW5nL3NlbGVjdGlvbi9pb3MvbW92ZS1ieS13b3JkLXdp
dGgta2V5Ym9hcmQuaHRtbAorCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yOjp1cGRhdGVNYXJrZXJzRm9yV29yZHNBZmZlY3RlZEJ5RWRpdGlu
Zyk6CisgICAgICAgICogZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpuZXh0V29yZFdoaXRlc3BhY2VNb2RlSW5JT1MpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVTZWxlY3Rpb246Om5leHRXb3JkUG9zaXRpb25Gb3JQbGF0Zm9ybSk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5RXh0ZW5kaW5nUmlnaHQpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4dGVuZGluZ0ZvcndhcmQpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246Om1vZGlmeU1vdmluZ1JpZ2h0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lU2VsZWN0aW9uOjptb2RpZnlNb3ZpbmdGb3J3YXJkKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeHRlbmRpbmdMZWZ0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeHRlbmRpbmdCYWNrd2FyZCk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW92aW5nTGVmdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW92aW5nQmFja3dhcmQpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246Om1vZGlmeSk6CisgICAgICAgICogZWRpdGluZy9GcmFt
ZVNlbGVjdGlvbi5oOgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNlYXJjaEJ1ZmZlcjo6aXNXb3JkU3RhcnRNYXRjaCBjb25zdCk6CisgICAg
ICAgICogZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJldmlv
dXNXb3JkUG9zaXRpb25Cb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjpwcmV2aW91c1dvcmRQ
b3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpuZXh0V29yZFBvc2l0aW9uQm91bmRhcnkpOgor
ICAgICAgICAoV2ViQ29yZTo6bmV4dFdvcmRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpu
ZXh0V29yZEJvdW5kYXJ5SW5EaXJlY3Rpb24pOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVVu
aXRzLmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Qm91bmRhcmllcy5oOgorICAgICAg
ICAqIHBsYXRmb3JtL3RleHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6ZmluZE5leHRXb3JkRnJvbUluZGV4KTogQWRkZWQgYSBuZXcgbW9kZS4KKwogMjAxOS0wOS0w
NSAgSnVzdGluIEZhbiAgPGp1c3Rpbl9mYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVd
IEltcGxlbWVudCBHUFVVbmNhcHR1cmVkRXJyb3JFdmVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwCmluZGV4IDg5MWMxMjg4YzZlMzE0YWNjYWU5YjYyNzE5NzgxODgxZTc0MmRjMjUuLmQwZjhk
NjAwZmFhMWRjOGJlMWI3YzViNTk0NmQyNzJhZmEwYjY4ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAKQEAgLTI5ODEsNyArMjk4MSw3IEBAIHZvaWQgRWRpdG9yOjp1cGRhdGVNYXJrZXJz
Rm9yV29yZHNBZmZlY3RlZEJ5RWRpdGluZyhib29sIGRvTm90UmVtb3ZlSWZTZWxlY3Rpb25BCiAg
ICAgLy8gSWYgZG9Ob3RSZW1vdmVJZlNlbGVjdGlvbkF0V29yZEJvdW5kYXJ5IGlzIHRydWUsIGFu
ZCBmaXJzdCB3b3JkIGVuZHMgYXQgdGhlIHN0YXJ0IG9mIHNlbGVjdGlvbiwKICAgICAvLyB3ZSBj
aG9vc2UgbmV4dCB3b3JkIGFzIHRoZSBmaXJzdCB3b3JkLgogICAgIGlmIChkb05vdFJlbW92ZUlm
U2VsZWN0aW9uQXRXb3JkQm91bmRhcnkgJiYgZW5kT2ZGaXJzdFdvcmQgPT0gc3RhcnRPZlNlbGVj
dGlvbikgewotICAgICAgICBzdGFydE9mRmlyc3RXb3JkID0gbmV4dFdvcmRQb3NpdGlvbihzdGFy
dE9mRmlyc3RXb3JkKTsKKyAgICAgICAgc3RhcnRPZkZpcnN0V29yZCA9IG5leHRXb3JkUG9zaXRp
b24oc3RhcnRPZkZpcnN0V29yZCwgTmV4dFdvcmRNb2RlSW5JT1M6OkxlZ2FjeVN0b3BCZWZvcmVX
b3JkKTsKICAgICAgICAgZW5kT2ZGaXJzdFdvcmQgPSBlbmRPZldvcmQoc3RhcnRPZkZpcnN0V29y
ZCwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KTsKICAgICAgICAgaWYgKHN0YXJ0T2ZGaXJzdFdvcmQg
PT0gZW5kT2ZTZWxlY3Rpb24pCiAgICAgICAgICAgICByZXR1cm47CkBAIC0yOTkwLDcgKzI5OTAs
NyBAQCB2b2lkIEVkaXRvcjo6dXBkYXRlTWFya2Vyc0ZvcldvcmRzQWZmZWN0ZWRCeUVkaXRpbmco
Ym9vbCBkb05vdFJlbW92ZUlmU2VsZWN0aW9uQQogICAgIC8vIElmIGRvTm90UmVtb3ZlSWZTZWxl
Y3Rpb25BdFdvcmRCb3VuZGFyeSBpcyB0cnVlLCBhbmQgbGFzdCB3b3JkIGJlZ2lucyBhdCB0aGUg
ZW5kIG9mIHNlbGVjdGlvbiwKICAgICAvLyB3ZSBjaG9vc2UgcHJldmlvdXMgd29yZCBhcyB0aGUg
bGFzdCB3b3JkLgogICAgIGlmIChkb05vdFJlbW92ZUlmU2VsZWN0aW9uQXRXb3JkQm91bmRhcnkg
JiYgc3RhcnRPZkxhc3RXb3JkID09IGVuZE9mU2VsZWN0aW9uKSB7Ci0gICAgICAgIHN0YXJ0T2ZM
YXN0V29yZCA9IHByZXZpb3VzV29yZFBvc2l0aW9uKHN0YXJ0T2ZMYXN0V29yZCk7CisgICAgICAg
IHN0YXJ0T2ZMYXN0V29yZCA9IHByZXZpb3VzV29yZFBvc2l0aW9uKHN0YXJ0T2ZMYXN0V29yZCwg
TmV4dFdvcmRNb2RlSW5JT1M6OkxlZ2FjeVN0b3BCZWZvcmVXb3JkKTsKICAgICAgICAgZW5kT2ZM
YXN0V29yZCA9IGVuZE9mV29yZChzdGFydE9mTGFzdFdvcmQsIFJpZ2h0V29yZElmT25Cb3VuZGFy
eSk7CiAgICAgICAgIGlmIChlbmRPZkxhc3RXb3JkID09IHN0YXJ0T2ZTZWxlY3Rpb24pCiAgICAg
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1l
U2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3Bw
CmluZGV4IDc0ZmE2NGIwN2NmZTczYmU0ODQ4OTIzNmJlNGM4NjZlYmJkZTM1MzguLmRlYTg4NWM0
OGQ3YmQ4Y2QwNjY4OTk2OGQ1YmVhMGM3ODQ1YWRkYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC03MTEsMjAgKzcxMSwyNiBAQCBWaXNpYmxlUG9zaXRp
b24gRnJhbWVTZWxlY3Rpb246OmVuZEZvclBsYXRmb3JtKCkgY29uc3QKICAgICByZXR1cm4gcG9z
aXRpb25Gb3JQbGF0Zm9ybShmYWxzZSk7CiB9CiAKLVZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVj
dGlvbjo6bmV4dFdvcmRQb3NpdGlvbkZvclBsYXRmb3JtKGNvbnN0IFZpc2libGVQb3NpdGlvbiAm
b3JpZ2luYWxQb3NpdGlvbikKK3N0YXRpYyBOZXh0V29yZE1vZGVJbklPUyBuZXh0V29yZFdoaXRl
c3BhY2VNb2RlSW5JT1MoRVVzZXJUcmlnZ2VyZWQgdXNlclRyaWdnZXJlZCkKIHsKLSAgICBWaXNp
YmxlUG9zaXRpb24gcG9zaXRpb25BZnRlckN1cnJlbnRXb3JkID0gbmV4dFdvcmRQb3NpdGlvbihv
cmlnaW5hbFBvc2l0aW9uKTsKKyAgICByZXR1cm4gdXNlclRyaWdnZXJlZCA9PSBVc2VyVHJpZ2dl
cmVkID8gTmV4dFdvcmRNb2RlSW5JT1M6OlN0b3BBZnRlcldvcmQgOiBOZXh0V29yZE1vZGVJbklP
Uzo6TGVnYWN5U3RvcEJlZm9yZVdvcmQ7Cit9CisKK1Zpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVj
dGlvbjo6bmV4dFdvcmRQb3NpdGlvbkZvclBsYXRmb3JtKGNvbnN0IFZpc2libGVQb3NpdGlvbiAm
b3JpZ2luYWxQb3NpdGlvbiwgRVVzZXJUcmlnZ2VyZWQgdXNlclRyaWdnZXJlZCkKK3sKKyAgICBW
aXNpYmxlUG9zaXRpb24gcG9zaXRpb25BZnRlckN1cnJlbnRXb3JkID0gbmV4dFdvcmRQb3NpdGlv
bihvcmlnaW5hbFBvc2l0aW9uLCBuZXh0V29yZFdoaXRlc3BhY2VNb2RlSW5JT1ModXNlclRyaWdn
ZXJlZCkpOwogCiAgICAgaWYgKG1fZnJhbWUgJiYgbV9mcmFtZS0+ZWRpdG9yKCkuYmVoYXZpb3Io
KS5zaG91bGRTa2lwU3BhY2VXaGVuTW92aW5nUmlnaHQoKSkgewogICAgICAgICAvLyBJbiBvcmRl
ciB0byBza2lwIHNwYWNlcyB3aGVuIG1vdmluZyByaWdodCwgd2UgYWR2YW5jZSBvbmUKICAgICAg
ICAgLy8gd29yZCBmdXJ0aGVyIGFuZCB0aGVuIG1vdmUgb25lIHdvcmQgYmFjay4gR2l2ZW4gdGhl
CiAgICAgICAgIC8vIHNlbWFudGljcyBvZiBwcmV2aW91c1dvcmRQb3NpdGlvbigpIHRoaXMgd2ls
bCBwdXQgdXMgYXQgdGhlCiAgICAgICAgIC8vIGJlZ2lubmluZyBvZiB0aGUgd29yZCBmb2xsb3dp
bmcuCi0gICAgICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkFmdGVyU3BhY2luZ0FuZEZvbGxv
d2luZ1dvcmQgPSBuZXh0V29yZFBvc2l0aW9uKHBvc2l0aW9uQWZ0ZXJDdXJyZW50V29yZCk7Cisg
ICAgICAgIGF1dG8gd2hpdGVzcGFjZU1vZGUgPSBuZXh0V29yZFdoaXRlc3BhY2VNb2RlSW5JT1Mo
dXNlclRyaWdnZXJlZCk7CisgICAgICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkFmdGVyU3Bh
Y2luZ0FuZEZvbGxvd2luZ1dvcmQgPSBuZXh0V29yZFBvc2l0aW9uKHBvc2l0aW9uQWZ0ZXJDdXJy
ZW50V29yZCwgd2hpdGVzcGFjZU1vZGUpOwogICAgICAgICBpZiAocG9zaXRpb25BZnRlclNwYWNp
bmdBbmRGb2xsb3dpbmdXb3JkICE9IHBvc2l0aW9uQWZ0ZXJDdXJyZW50V29yZCkKLSAgICAgICAg
ICAgIHBvc2l0aW9uQWZ0ZXJDdXJyZW50V29yZCA9IHByZXZpb3VzV29yZFBvc2l0aW9uKHBvc2l0
aW9uQWZ0ZXJTcGFjaW5nQW5kRm9sbG93aW5nV29yZCk7CisgICAgICAgICAgICBwb3NpdGlvbkFm
dGVyQ3VycmVudFdvcmQgPSBwcmV2aW91c1dvcmRQb3NpdGlvbihwb3NpdGlvbkFmdGVyU3BhY2lu
Z0FuZEZvbGxvd2luZ1dvcmQsIHdoaXRlc3BhY2VNb2RlKTsKIAotICAgICAgICBib29sIG1vdmlu
Z0JhY2t3YXJkc01vdmVkUG9zaXRpb25Ub1N0YXJ0T2ZDdXJyZW50V29yZCA9IHBvc2l0aW9uQWZ0
ZXJDdXJyZW50V29yZCA9PSBwcmV2aW91c1dvcmRQb3NpdGlvbihuZXh0V29yZFBvc2l0aW9uKG9y
aWdpbmFsUG9zaXRpb24pKTsKKyAgICAgICAgYm9vbCBtb3ZpbmdCYWNrd2FyZHNNb3ZlZFBvc2l0
aW9uVG9TdGFydE9mQ3VycmVudFdvcmQgPSBwb3NpdGlvbkFmdGVyQ3VycmVudFdvcmQgPT0gcHJl
dmlvdXNXb3JkUG9zaXRpb24obmV4dFdvcmRQb3NpdGlvbihvcmlnaW5hbFBvc2l0aW9uLCB3aGl0
ZXNwYWNlTW9kZSksIHdoaXRlc3BhY2VNb2RlKTsKICAgICAgICAgaWYgKG1vdmluZ0JhY2t3YXJk
c01vdmVkUG9zaXRpb25Ub1N0YXJ0T2ZDdXJyZW50V29yZCkKICAgICAgICAgICAgIHBvc2l0aW9u
QWZ0ZXJDdXJyZW50V29yZCA9IHBvc2l0aW9uQWZ0ZXJTcGFjaW5nQW5kRm9sbG93aW5nV29yZDsK
ICAgICB9CkBAIC03MzksNyArNzQ1LDcgQEAgc3RhdGljIHZvaWQgYWRqdXN0UG9zaXRpb25Gb3JV
c2VyU2VsZWN0QWxsKFZpc2libGVQb3NpdGlvbiYgcG9zLCBib29sIGlzRm9yd2FyZCkKIH0KICNl
bmRpZgogCi1WaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4dGVuZGluZ1Jp
Z2h0KFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSkKK1Zpc2libGVQb3NpdGlvbiBGcmFtZVNl
bGVjdGlvbjo6bW9kaWZ5RXh0ZW5kaW5nUmlnaHQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5
LCBFVXNlclRyaWdnZXJlZCB1c2VyVHJpZ2dlcmVkKQogewogICAgIFZpc2libGVQb3NpdGlvbiBw
b3MobV9zZWxlY3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpOwogCkBAIC03
NTcsMTUgKzc2MywxNSBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4
dGVuZGluZ1JpZ2h0KFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eQogICAgICAgICBicmVhazsK
ICAgICBjYXNlIFdvcmRHcmFudWxhcml0eToKICAgICAgICAgaWYgKGRpcmVjdGlvbk9mRW5jbG9z
aW5nQmxvY2soKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpCi0gICAgICAgICAgICBwb3MgPSBuZXh0
V29yZFBvc2l0aW9uRm9yUGxhdGZvcm0ocG9zKTsKKyAgICAgICAgICAgIHBvcyA9IG5leHRXb3Jk
UG9zaXRpb25Gb3JQbGF0Zm9ybShwb3MsIHVzZXJUcmlnZ2VyZWQpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBwb3MgPSBwcmV2aW91c1dvcmRQb3NpdGlvbihwb3MpOworICAgICAgICAgICAg
cG9zID0gcHJldmlvdXNXb3JkUG9zaXRpb24ocG9zLCBuZXh0V29yZFdoaXRlc3BhY2VNb2RlSW5J
T1ModXNlclRyaWdnZXJlZCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIExpbmVCb3VuZGFy
eToKICAgICAgICAgaWYgKGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBUZXh0RGlyZWN0
aW9uOjpMVFIpCi0gICAgICAgICAgICBwb3MgPSBtb2RpZnlFeHRlbmRpbmdGb3J3YXJkKGdyYW51
bGFyaXR5KTsKKyAgICAgICAgICAgIHBvcyA9IG1vZGlmeUV4dGVuZGluZ0ZvcndhcmQoZ3JhbnVs
YXJpdHksIHVzZXJUcmlnZ2VyZWQpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBwb3MgPSBt
b2RpZnlFeHRlbmRpbmdCYWNrd2FyZChncmFudWxhcml0eSk7CisgICAgICAgICAgICBwb3MgPSBt
b2RpZnlFeHRlbmRpbmdCYWNrd2FyZChncmFudWxhcml0eSwgdXNlclRyaWdnZXJlZCk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0eToKICAgICBjYXNlIExpbmVH
cmFudWxhcml0eToKQEAgLTc3NCw3ICs3ODAsNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxl
Y3Rpb246Om1vZGlmeUV4dGVuZGluZ1JpZ2h0KFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eQog
ICAgIGNhc2UgUGFyYWdyYXBoQm91bmRhcnk6CiAgICAgY2FzZSBEb2N1bWVudEJvdW5kYXJ5Ogog
ICAgICAgICAvLyBGSVhNRTogaW1wbGVtZW50IGFsbCBvZiB0aGUgYWJvdmU/Ci0gICAgICAgIHBv
cyA9IG1vZGlmeUV4dGVuZGluZ0ZvcndhcmQoZ3JhbnVsYXJpdHkpOworICAgICAgICBwb3MgPSBt
b2RpZnlFeHRlbmRpbmdGb3J3YXJkKGdyYW51bGFyaXR5LCB1c2VyVHJpZ2dlcmVkKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBEb2N1bWVudEdyYW51bGFyaXR5OgogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKQEAgLTc4Niw3ICs3OTIsNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVT
ZWxlY3Rpb246Om1vZGlmeUV4dGVuZGluZ1JpZ2h0KFRleHRHcmFudWxhcml0eSBncmFudWxhcml0
eQogICAgIHJldHVybiBwb3M7CiB9CiAKLVZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6
bW9kaWZ5RXh0ZW5kaW5nRm9yd2FyZChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCitWaXNp
YmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4dGVuZGluZ0ZvcndhcmQoVGV4dEdy
YW51bGFyaXR5IGdyYW51bGFyaXR5LCBFVXNlclRyaWdnZXJlZCB1c2VyVHJpZ2dlcmVkKQogewog
ICAgIFZpc2libGVQb3NpdGlvbiBwb3MobV9zZWxlY3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0aW9u
LmFmZmluaXR5KCkpOwogICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKQEAgLTc5NCw3ICs4MDAs
NyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4dGVuZGluZ0Zvcndh
cmQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaQogICAgICAgICBwb3MgPSBwb3MubmV4dChDYW5u
b3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV29yZEdy
YW51bGFyaXR5OgotICAgICAgICBwb3MgPSBuZXh0V29yZFBvc2l0aW9uRm9yUGxhdGZvcm0ocG9z
KTsKKyAgICAgICAgcG9zID0gbmV4dFdvcmRQb3NpdGlvbkZvclBsYXRmb3JtKHBvcywgdXNlclRy
aWdnZXJlZCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0eToK
ICAgICAgICAgcG9zID0gbmV4dFNlbnRlbmNlUG9zaXRpb24ocG9zKTsKQEAgLTgzMSw3ICs4Mzcs
NyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4dGVuZGluZ0Zvcndh
cmQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaQogICAgIHJldHVybiBwb3M7CiB9CiAKLVZpc2li
bGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW92aW5nUmlnaHQoVGV4dEdyYW51bGFy
aXR5IGdyYW51bGFyaXR5LCBib29sKiByZWFjaGVkQm91bmRhcnkpCitWaXNpYmxlUG9zaXRpb24g
RnJhbWVTZWxlY3Rpb246Om1vZGlmeU1vdmluZ1JpZ2h0KFRleHRHcmFudWxhcml0eSBncmFudWxh
cml0eSwgRVVzZXJUcmlnZ2VyZWQgdXNlclRyaWdnZXJlZCwgYm9vbCogcmVhY2hlZEJvdW5kYXJ5
KQogewogICAgIGlmIChyZWFjaGVkQm91bmRhcnkpCiAgICAgICAgICpyZWFjaGVkQm91bmRhcnkg
PSBmYWxzZTsKQEAgLTg2MSw3ICs4NjcsNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rp
b246Om1vZGlmeU1vdmluZ1JpZ2h0KFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgYgogICAg
IGNhc2UgUGFyYWdyYXBoQm91bmRhcnk6CiAgICAgY2FzZSBEb2N1bWVudEJvdW5kYXJ5OgogICAg
ICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGFsbCBvZiB0aGUgYWJvdmUuCi0gICAgICAgIHBvcyA9
IG1vZGlmeU1vdmluZ0ZvcndhcmQoZ3JhbnVsYXJpdHksIHJlYWNoZWRCb3VuZGFyeSk7CisgICAg
ICAgIHBvcyA9IG1vZGlmeU1vdmluZ0ZvcndhcmQoZ3JhbnVsYXJpdHksIHVzZXJUcmlnZ2VyZWQs
IHJlYWNoZWRCb3VuZGFyeSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTGluZUJvdW5kYXJ5
OgogICAgICAgICBwb3MgPSByaWdodEJvdW5kYXJ5T2ZMaW5lKHN0YXJ0Rm9yUGxhdGZvcm0oKSwg
ZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jaygpLCByZWFjaGVkQm91bmRhcnkpOwpAQCAtODczLDcg
Kzg3OSw3IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW92aW5nUmln
aHQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBiCiAgICAgcmV0dXJuIHBvczsKIH0KIAot
VmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNb3ZpbmdGb3J3YXJkKFRleHRH
cmFudWxhcml0eSBncmFudWxhcml0eSwgYm9vbCogcmVhY2hlZEJvdW5kYXJ5KQorVmlzaWJsZVBv
c2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNb3ZpbmdGb3J3YXJkKFRleHRHcmFudWxhcml0
eSBncmFudWxhcml0eSwgRVVzZXJUcmlnZ2VyZWQgdXNlclRyaWdnZXJlZCwgYm9vbCogcmVhY2hl
ZEJvdW5kYXJ5KQogewogICAgIGlmIChyZWFjaGVkQm91bmRhcnkpCiAgICAgICAgICpyZWFjaGVk
Qm91bmRhcnkgPSBmYWxzZTsKQEAgLTkwMyw3ICs5MDksNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJh
bWVTZWxlY3Rpb246Om1vZGlmeU1vdmluZ0ZvcndhcmQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFy
aXR5LAogICAgICAgICAgICAgcG9zID0gVmlzaWJsZVBvc2l0aW9uKG1fc2VsZWN0aW9uLmV4dGVu
dCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKS5uZXh0KENhbm5vdENyb3NzRWRpdGluZ0JvdW5k
YXJ5LCByZWFjaGVkQm91bmRhcnkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdvcmRHcmFu
dWxhcml0eToKLSAgICAgICAgcG9zID0gbmV4dFdvcmRQb3NpdGlvbkZvclBsYXRmb3JtKGN1cnJl
bnRQb3NpdGlvbik7CisgICAgICAgIHBvcyA9IG5leHRXb3JkUG9zaXRpb25Gb3JQbGF0Zm9ybShj
dXJyZW50UG9zaXRpb24sIHVzZXJUcmlnZ2VyZWQpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IFNlbnRlbmNlR3JhbnVsYXJpdHk6CiAgICAgICAgIHBvcyA9IG5leHRTZW50ZW5jZVBvc2l0aW9u
KGN1cnJlbnRQb3NpdGlvbik7CkBAIC05NTYsNyArOTYyLDcgQEAgVmlzaWJsZVBvc2l0aW9uIEZy
YW1lU2VsZWN0aW9uOjptb2RpZnlNb3ZpbmdGb3J3YXJkKFRleHRHcmFudWxhcml0eSBncmFudWxh
cml0eSwKICAgICByZXR1cm4gcG9zOwogfQogCi1WaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rp
b246Om1vZGlmeUV4dGVuZGluZ0xlZnQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQorVmlz
aWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeHRlbmRpbmdMZWZ0KFRleHRHcmFu
dWxhcml0eSBncmFudWxhcml0eSwgRVVzZXJUcmlnZ2VyZWQgdXNlclRyaWdnZXJlZCkKIHsKICAg
ICBWaXNpYmxlUG9zaXRpb24gcG9zKG1fc2VsZWN0aW9uLmV4dGVudCgpLCBtX3NlbGVjdGlvbi5h
ZmZpbml0eSgpKTsKIApAQCAtOTc0LDE1ICs5ODAsMTUgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1l
U2VsZWN0aW9uOjptb2RpZnlFeHRlbmRpbmdMZWZ0KFRleHRHcmFudWxhcml0eSBncmFudWxhcml0
eSkKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6CiAgICAgICAgIGlm
IChkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKQotICAg
ICAgICAgICAgcG9zID0gcHJldmlvdXNXb3JkUG9zaXRpb24ocG9zKTsKKyAgICAgICAgICAgIHBv
cyA9IHByZXZpb3VzV29yZFBvc2l0aW9uKHBvcywgbmV4dFdvcmRXaGl0ZXNwYWNlTW9kZUluSU9T
KHVzZXJUcmlnZ2VyZWQpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcG9zID0gbmV4dFdv
cmRQb3NpdGlvbkZvclBsYXRmb3JtKHBvcyk7CisgICAgICAgICAgICBwb3MgPSBuZXh0V29yZFBv
c2l0aW9uRm9yUGxhdGZvcm0ocG9zLCB1c2VyVHJpZ2dlcmVkKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBMaW5lQm91bmRhcnk6CiAgICAgICAgIGlmIChkaXJlY3Rpb25PZkVuY2xvc2luZ0Js
b2NrKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKQotICAgICAgICAgICAgcG9zID0gbW9kaWZ5RXh0
ZW5kaW5nQmFja3dhcmQoZ3JhbnVsYXJpdHkpOworICAgICAgICAgICAgcG9zID0gbW9kaWZ5RXh0
ZW5kaW5nQmFja3dhcmQoZ3JhbnVsYXJpdHksIHVzZXJUcmlnZ2VyZWQpOwogICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBwb3MgPSBtb2RpZnlFeHRlbmRpbmdGb3J3YXJkKGdyYW51bGFyaXR5KTsK
KyAgICAgICAgICAgIHBvcyA9IG1vZGlmeUV4dGVuZGluZ0ZvcndhcmQoZ3JhbnVsYXJpdHksIHVz
ZXJUcmlnZ2VyZWQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJp
dHk6CiAgICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6CkBAIC05OTAsNyArOTk2LDcgQEAgVmlzaWJs
ZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeHRlbmRpbmdMZWZ0KFRleHRHcmFudWxh
cml0eSBncmFudWxhcml0eSkKICAgICBjYXNlIFNlbnRlbmNlQm91bmRhcnk6CiAgICAgY2FzZSBQ
YXJhZ3JhcGhCb3VuZGFyeToKICAgICBjYXNlIERvY3VtZW50Qm91bmRhcnk6Ci0gICAgICAgIHBv
cyA9IG1vZGlmeUV4dGVuZGluZ0JhY2t3YXJkKGdyYW51bGFyaXR5KTsKKyAgICAgICAgcG9zID0g
bW9kaWZ5RXh0ZW5kaW5nQmFja3dhcmQoZ3JhbnVsYXJpdHksIHVzZXJUcmlnZ2VyZWQpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIERvY3VtZW50R3JhbnVsYXJpdHk6CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTAwMiw3ICsxMDA4LDcgQEAgVmlzaWJsZVBvc2l0aW9uIEZy
YW1lU2VsZWN0aW9uOjptb2RpZnlFeHRlbmRpbmdMZWZ0KFRleHRHcmFudWxhcml0eSBncmFudWxh
cml0eSkKICAgICByZXR1cm4gcG9zOwogfQogICAgICAgIAotVmlzaWJsZVBvc2l0aW9uIEZyYW1l
U2VsZWN0aW9uOjptb2RpZnlFeHRlbmRpbmdCYWNrd2FyZChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVs
YXJpdHkpCitWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4dGVuZGluZ0Jh
Y2t3YXJkKFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgRVVzZXJUcmlnZ2VyZWQgdXNlclRy
aWdnZXJlZCkKIHsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zKG1fc2VsZWN0aW9uLmV4dGVudCgp
LCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKTsKIApAQCAtMTAxNSw3ICsxMDIxLDcgQEAgVmlzaWJs
ZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeHRlbmRpbmdCYWNrd2FyZChUZXh0R3Jh
bnVsYXJpdHkgZ3JhbnVsYXIKICAgICAgICAgcG9zID0gcG9zLnByZXZpb3VzKENhbm5vdENyb3Nz
RWRpdGluZ0JvdW5kYXJ5KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXb3JkR3JhbnVsYXJp
dHk6Ci0gICAgICAgIHBvcyA9IHByZXZpb3VzV29yZFBvc2l0aW9uKHBvcyk7CisgICAgICAgIHBv
cyA9IHByZXZpb3VzV29yZFBvc2l0aW9uKHBvcywgbmV4dFdvcmRXaGl0ZXNwYWNlTW9kZUluSU9T
KHVzZXJUcmlnZ2VyZWQpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTZW50ZW5jZUdyYW51
bGFyaXR5OgogICAgICAgICBwb3MgPSBwcmV2aW91c1NlbnRlbmNlUG9zaXRpb24ocG9zKTsKQEAg
LTEwNTIsNyArMTA1OCw3IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5
RXh0ZW5kaW5nQmFja3dhcmQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyCiAgICAgcmV0dXJuIHBv
czsKIH0KIAotVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNb3ZpbmdMZWZ0
KFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgYm9vbCogcmVhY2hlZEJvdW5kYXJ5KQorVmlz
aWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNb3ZpbmdMZWZ0KFRleHRHcmFudWxh
cml0eSBncmFudWxhcml0eSwgRVVzZXJUcmlnZ2VyZWQgdXNlclRyaWdnZXJlZCwgYm9vbCogcmVh
Y2hlZEJvdW5kYXJ5KQogewogICAgIGlmIChyZWFjaGVkQm91bmRhcnkpCiAgICAgICAgICpyZWFj
aGVkQm91bmRhcnkgPSBmYWxzZTsKQEAgLTEwODIsNyArMTA4OCw3IEBAIFZpc2libGVQb3NpdGlv
biBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW92aW5nTGVmdChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVs
YXJpdHksIGJvCiAgICAgY2FzZSBQYXJhZ3JhcGhCb3VuZGFyeToKICAgICBjYXNlIERvY3VtZW50
Qm91bmRhcnk6CiAgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgYWxsIG9mIHRoZSBhYm92ZS4K
LSAgICAgICAgcG9zID0gbW9kaWZ5TW92aW5nQmFja3dhcmQoZ3JhbnVsYXJpdHksIHJlYWNoZWRC
b3VuZGFyeSk7CisgICAgICAgIHBvcyA9IG1vZGlmeU1vdmluZ0JhY2t3YXJkKGdyYW51bGFyaXR5
LCB1c2VyVHJpZ2dlcmVkLCByZWFjaGVkQm91bmRhcnkpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIExpbmVCb3VuZGFyeToKICAgICAgICAgcG9zID0gbGVmdEJvdW5kYXJ5T2ZMaW5lKHN0YXJ0
Rm9yUGxhdGZvcm0oKSwgZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jaygpLCByZWFjaGVkQm91bmRh
cnkpOwpAQCAtMTA5NCw3ICsxMTAwLDcgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9u
Ojptb2RpZnlNb3ZpbmdMZWZ0KFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgYm8KICAgICBy
ZXR1cm4gcG9zOwogfQogCi1WaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeU1v
dmluZ0JhY2t3YXJkKFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgYm9vbCogcmVhY2hlZEJv
dW5kYXJ5KQorVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNb3ZpbmdCYWNr
d2FyZChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIEVVc2VyVHJpZ2dlcmVkIHVzZXJUcmln
Z2VyZWQsIGJvb2wqIHJlYWNoZWRCb3VuZGFyeSkKIHsKICAgICBpZiAocmVhY2hlZEJvdW5kYXJ5
KQogICAgICAgICAqcmVhY2hlZEJvdW5kYXJ5ID0gZmFsc2U7CkBAIC0xMTIzLDcgKzExMjksNyBA
QCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeU1vdmluZ0JhY2t3YXJkKFRl
eHRHcmFudWxhcml0eSBncmFudWxhcml0eQogICAgICAgICAgICAgcG9zID0gVmlzaWJsZVBvc2l0
aW9uKG1fc2VsZWN0aW9uLmV4dGVudCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKS5wcmV2aW91
cyhDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSwgcmVhY2hlZEJvdW5kYXJ5KTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6Ci0gICAgICAgIHBvcyA9IHByZXZpb3Vz
V29yZFBvc2l0aW9uKGN1cnJlbnRQb3NpdGlvbik7CisgICAgICAgIHBvcyA9IHByZXZpb3VzV29y
ZFBvc2l0aW9uKGN1cnJlbnRQb3NpdGlvbiwgbmV4dFdvcmRXaGl0ZXNwYWNlTW9kZUluSU9TKHVz
ZXJUcmlnZ2VyZWQpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTZW50ZW5jZUdyYW51bGFy
aXR5OgogICAgICAgICBwb3MgPSBwcmV2aW91c1NlbnRlbmNlUG9zaXRpb24oY3VycmVudFBvc2l0
aW9uKTsKQEAgLTEzMzAsMjcgKzEzMzYsMjcgQEAgYm9vbCBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5
KEVBbHRlcmF0aW9uIGFsdGVyLCBTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uLCBUZXgKICAg
ICBzd2l0Y2ggKGRpcmVjdGlvbikgewogICAgIGNhc2UgRGlyZWN0aW9uUmlnaHQ6CiAgICAgICAg
IGlmIChhbHRlciA9PSBBbHRlcmF0aW9uTW92ZSkKLSAgICAgICAgICAgIHBvc2l0aW9uID0gbW9k
aWZ5TW92aW5nUmlnaHQoZ3JhbnVsYXJpdHksICZyZWFjaGVkQm91bmRhcnkpOworICAgICAgICAg
ICAgcG9zaXRpb24gPSBtb2RpZnlNb3ZpbmdSaWdodChncmFudWxhcml0eSwgdXNlclRyaWdnZXJl
ZCwgJnJlYWNoZWRCb3VuZGFyeSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHBvc2l0aW9u
ID0gbW9kaWZ5RXh0ZW5kaW5nUmlnaHQoZ3JhbnVsYXJpdHkpOworICAgICAgICAgICAgcG9zaXRp
b24gPSBtb2RpZnlFeHRlbmRpbmdSaWdodChncmFudWxhcml0eSwgdXNlclRyaWdnZXJlZCk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgRGlyZWN0aW9uRm9yd2FyZDoKICAgICAgICAgaWYgKGFs
dGVyID09IEFsdGVyYXRpb25FeHRlbmQpCi0gICAgICAgICAgICBwb3NpdGlvbiA9IG1vZGlmeUV4
dGVuZGluZ0ZvcndhcmQoZ3JhbnVsYXJpdHkpOworICAgICAgICAgICAgcG9zaXRpb24gPSBtb2Rp
ZnlFeHRlbmRpbmdGb3J3YXJkKGdyYW51bGFyaXR5LCB1c2VyVHJpZ2dlcmVkKTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgcG9zaXRpb24gPSBtb2RpZnlNb3ZpbmdGb3J3YXJkKGdyYW51bGFy
aXR5LCAmcmVhY2hlZEJvdW5kYXJ5KTsKKyAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5TW92
aW5nRm9yd2FyZChncmFudWxhcml0eSwgdXNlclRyaWdnZXJlZCwgJnJlYWNoZWRCb3VuZGFyeSk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRGlyZWN0aW9uTGVmdDoKICAgICAgICAgaWYgKGFs
dGVyID09IEFsdGVyYXRpb25Nb3ZlKQotICAgICAgICAgICAgcG9zaXRpb24gPSBtb2RpZnlNb3Zp
bmdMZWZ0KGdyYW51bGFyaXR5LCAmcmVhY2hlZEJvdW5kYXJ5KTsKKyAgICAgICAgICAgIHBvc2l0
aW9uID0gbW9kaWZ5TW92aW5nTGVmdChncmFudWxhcml0eSwgdXNlclRyaWdnZXJlZCwgJnJlYWNo
ZWRCb3VuZGFyeSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5
RXh0ZW5kaW5nTGVmdChncmFudWxhcml0eSk7CisgICAgICAgICAgICBwb3NpdGlvbiA9IG1vZGlm
eUV4dGVuZGluZ0xlZnQoZ3JhbnVsYXJpdHksIHVzZXJUcmlnZ2VyZWQpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIERpcmVjdGlvbkJhY2t3YXJkOgogICAgICAgICBpZiAoYWx0ZXIgPT0gQWx0
ZXJhdGlvbkV4dGVuZCkKLSAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5RXh0ZW5kaW5nQmFj
a3dhcmQoZ3JhbnVsYXJpdHkpOworICAgICAgICAgICAgcG9zaXRpb24gPSBtb2RpZnlFeHRlbmRp
bmdCYWNrd2FyZChncmFudWxhcml0eSwgdXNlclRyaWdnZXJlZCk7CiAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5TW92aW5nQmFja3dhcmQoZ3JhbnVsYXJpdHksICZy
ZWFjaGVkQm91bmRhcnkpOworICAgICAgICAgICAgcG9zaXRpb24gPSBtb2RpZnlNb3ZpbmdCYWNr
d2FyZChncmFudWxhcml0eSwgdXNlclRyaWdnZXJlZCwgJnJlYWNoZWRCb3VuZGFyeSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9G
cmFtZVNlbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5o
CmluZGV4IDQ0ODRhZmFlZjYxMWZjZjI5ZTEyOTlmMmVhMzdkM2I3ZTRmMWVlZTYuLmFmNTk1ZWYw
NGIyMWE5ZDMyMWEyYzkyMzNlMTFlMjc2MDYzZTc5NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0ZyYW1lU2VsZWN0aW9uLmgKQEAgLTI5OSwxNiArMjk5LDE2IEBAIHByaXZhdGU6CiAgICAgVmlz
aWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUGxhdGZvcm0oYm9vbCBpc0dldFN0YXJ0KSBjb25zdDsK
ICAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnRGb3JQbGF0Zm9ybSgpIGNvbnN0OwogICAgIFZpc2li
bGVQb3NpdGlvbiBlbmRGb3JQbGF0Zm9ybSgpIGNvbnN0OwotICAgIFZpc2libGVQb3NpdGlvbiBu
ZXh0V29yZFBvc2l0aW9uRm9yUGxhdGZvcm0oY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7Ci0KLSAg
ICBWaXNpYmxlUG9zaXRpb24gbW9kaWZ5RXh0ZW5kaW5nUmlnaHQoVGV4dEdyYW51bGFyaXR5KTsK
LSAgICBWaXNpYmxlUG9zaXRpb24gbW9kaWZ5RXh0ZW5kaW5nRm9yd2FyZChUZXh0R3JhbnVsYXJp
dHkpOwotICAgIFZpc2libGVQb3NpdGlvbiBtb2RpZnlNb3ZpbmdSaWdodChUZXh0R3JhbnVsYXJp
dHksIGJvb2wqIHJlYWNoZWRCb3VuZGFyeSA9IG51bGxwdHIpOwotICAgIFZpc2libGVQb3NpdGlv
biBtb2RpZnlNb3ZpbmdGb3J3YXJkKFRleHRHcmFudWxhcml0eSwgYm9vbCogcmVhY2hlZEJvdW5k
YXJ5ID0gbnVsbHB0cik7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIG1vZGlmeUV4dGVuZGluZ0xlZnQo
VGV4dEdyYW51bGFyaXR5KTsKLSAgICBWaXNpYmxlUG9zaXRpb24gbW9kaWZ5RXh0ZW5kaW5nQmFj
a3dhcmQoVGV4dEdyYW51bGFyaXR5KTsKLSAgICBWaXNpYmxlUG9zaXRpb24gbW9kaWZ5TW92aW5n
TGVmdChUZXh0R3JhbnVsYXJpdHksIGJvb2wqIHJlYWNoZWRCb3VuZGFyeSA9IG51bGxwdHIpOwot
ICAgIFZpc2libGVQb3NpdGlvbiBtb2RpZnlNb3ZpbmdCYWNrd2FyZChUZXh0R3JhbnVsYXJpdHks
IGJvb2wqIHJlYWNoZWRCb3VuZGFyeSA9IG51bGxwdHIpOworICAgIFZpc2libGVQb3NpdGlvbiBu
ZXh0V29yZFBvc2l0aW9uRm9yUGxhdGZvcm0oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgRVVzZXJU
cmlnZ2VyZWQpOworCisgICAgVmlzaWJsZVBvc2l0aW9uIG1vZGlmeUV4dGVuZGluZ1JpZ2h0KFRl
eHRHcmFudWxhcml0eSwgRVVzZXJUcmlnZ2VyZWQpOworICAgIFZpc2libGVQb3NpdGlvbiBtb2Rp
ZnlFeHRlbmRpbmdGb3J3YXJkKFRleHRHcmFudWxhcml0eSwgRVVzZXJUcmlnZ2VyZWQpOworICAg
IFZpc2libGVQb3NpdGlvbiBtb2RpZnlNb3ZpbmdSaWdodChUZXh0R3JhbnVsYXJpdHksIEVVc2Vy
VHJpZ2dlcmVkLCBib29sKiByZWFjaGVkQm91bmRhcnkgPSBudWxscHRyKTsKKyAgICBWaXNpYmxl
UG9zaXRpb24gbW9kaWZ5TW92aW5nRm9yd2FyZChUZXh0R3JhbnVsYXJpdHksIEVVc2VyVHJpZ2dl
cmVkLCBib29sKiByZWFjaGVkQm91bmRhcnkgPSBudWxscHRyKTsKKyAgICBWaXNpYmxlUG9zaXRp
b24gbW9kaWZ5RXh0ZW5kaW5nTGVmdChUZXh0R3JhbnVsYXJpdHksIEVVc2VyVHJpZ2dlcmVkKTsK
KyAgICBWaXNpYmxlUG9zaXRpb24gbW9kaWZ5RXh0ZW5kaW5nQmFja3dhcmQoVGV4dEdyYW51bGFy
aXR5LCBFVXNlclRyaWdnZXJlZCk7CisgICAgVmlzaWJsZVBvc2l0aW9uIG1vZGlmeU1vdmluZ0xl
ZnQoVGV4dEdyYW51bGFyaXR5LCBFVXNlclRyaWdnZXJlZCwgYm9vbCogcmVhY2hlZEJvdW5kYXJ5
ID0gbnVsbHB0cik7CisgICAgVmlzaWJsZVBvc2l0aW9uIG1vZGlmeU1vdmluZ0JhY2t3YXJkKFRl
eHRHcmFudWxhcml0eSwgRVVzZXJUcmlnZ2VyZWQsIGJvb2wqIHJlYWNoZWRCb3VuZGFyeSA9IG51
bGxwdHIpOwogCiAgICAgTGF5b3V0VW5pdCBsaW5lRGlyZWN0aW9uUG9pbnRGb3JCbG9ja0RpcmVj
dGlvbk5hdmlnYXRpb24oRVBvc2l0aW9uVHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4
dEl0ZXJhdG9yLmNwcAppbmRleCBhMWEzOTAzZjY3Yjc0MzMyZmU1MjljM2FlYjNjY2I3ZGVkZmUw
MzQyLi44NzFmYjY0MmFmYTA2ZGYzODlhOWJjYzU3MGU0MzA2ZDY5NWY5ODhmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCkBAIC0yMzM1LDcgKzIzMzUsNyBAQCBpbmxp
bmUgYm9vbCBTZWFyY2hCdWZmZXI6OmlzV29yZFN0YXJ0TWF0Y2goc2l6ZV90IHN0YXJ0LCBzaXpl
X3QgbGVuZ3RoKSBjb25zdAogCiAgICAgc2l6ZV90IHdvcmRCcmVha1NlYXJjaFN0YXJ0ID0gc3Rh
cnQgKyBsZW5ndGg7CiAgICAgd2hpbGUgKHdvcmRCcmVha1NlYXJjaFN0YXJ0ID4gc3RhcnQpCi0g
ICAgICAgIHdvcmRCcmVha1NlYXJjaFN0YXJ0ID0gZmluZE5leHRXb3JkRnJvbUluZGV4KFN0cmlu
Z1ZpZXcobV9idWZmZXIuZGF0YSgpLCBtX2J1ZmZlci5zaXplKCkpLCB3b3JkQnJlYWtTZWFyY2hT
dGFydCwgZmFsc2UgLyogYmFja3dhcmRzICovKTsKKyAgICAgICAgd29yZEJyZWFrU2VhcmNoU3Rh
cnQgPSBmaW5kTmV4dFdvcmRGcm9tSW5kZXgoU3RyaW5nVmlldyhtX2J1ZmZlci5kYXRhKCksIG1f
YnVmZmVyLnNpemUoKSksIHdvcmRCcmVha1NlYXJjaFN0YXJ0LCBOZXh0V29yZERpcmVjdGlvbjo6
QmFja3dhcmQpOwogICAgIHJldHVybiB3b3JkQnJlYWtTZWFyY2hTdGFydCA9PSBzdGFydDsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCmluZGV4IDNhZGYxYmZmNmM5
NWRhNzgxYjRkNDE4OTNjY2ZjYzc5MzY3YmE2YTIuLmRmYWJkYmZhODU5MWI2MzE3Y2QzODBmMjE4
MWEyZTkyMThkODFhODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJs
ZVVuaXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAK
QEAgLTc2MSw2ICs3NjEsNyBAQCBWaXNpYmxlUG9zaXRpb24gZW5kT2ZXb3JkKGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYgYywgRVdvcmRTaWRlIHNpZGUpCiAgICAgcmV0dXJuIG5leHRCb3VuZGFyeShw
LCBlbmRXb3JkQm91bmRhcnkpOwogfQogCit0ZW1wbGF0ZSA8TmV4dFdvcmRNb2RlSW5JT1MgaW9z
TW9kZT4KIHN0YXRpYyB1bnNpZ25lZCBwcmV2aW91c1dvcmRQb3NpdGlvbkJvdW5kYXJ5KFN0cmlu
Z1ZpZXcgdGV4dCwgdW5zaWduZWQgb2Zmc2V0LCBCb3VuZGFyeVNlYXJjaENvbnRleHRBdmFpbGFi
aWxpdHkgbWF5SGF2ZU1vcmVDb250ZXh0LCBib29sJiBuZWVkTW9yZUNvbnRleHQpCiB7CiAgICAg
aWYgKG1heUhhdmVNb3JlQ29udGV4dCAmJiAhc3RhcnRPZkxhc3RXb3JkQm91bmRhcnlDb250ZXh0
KHRleHQuc3Vic3RyaW5nKDAsIG9mZnNldCkpKSB7CkBAIC03NjgsMTQgKzc2OSwxNyBAQCBzdGF0
aWMgdW5zaWduZWQgcHJldmlvdXNXb3JkUG9zaXRpb25Cb3VuZGFyeShTdHJpbmdWaWV3IHRleHQs
IHVuc2lnbmVkIG9mZnNldCwgQgogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgbmVlZE1v
cmVDb250ZXh0ID0gZmFsc2U7Ci0gICAgcmV0dXJuIGZpbmROZXh0V29yZEZyb21JbmRleCh0ZXh0
LCBvZmZzZXQsIGZhbHNlKTsKKyAgICByZXR1cm4gZmluZE5leHRXb3JkRnJvbUluZGV4KHRleHQs
IG9mZnNldCwgTmV4dFdvcmREaXJlY3Rpb246OkJhY2t3YXJkLCBpb3NNb2RlKTsKIH0KIAotVmlz
aWJsZVBvc2l0aW9uIHByZXZpb3VzV29yZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYg
cG9zaXRpb24pCitWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNXb3JkUG9zaXRpb24oY29uc3QgVmlz
aWJsZVBvc2l0aW9uJiBwb3NpdGlvbiwgTmV4dFdvcmRNb2RlSW5JT1MgaW9zTW9kZSkKIHsKLSAg
ICByZXR1cm4gcG9zaXRpb24uaG9ub3JFZGl0aW5nQm91bmRhcnlBdE9yQmVmb3JlKHByZXZpb3Vz
Qm91bmRhcnkocG9zaXRpb24sIHByZXZpb3VzV29yZFBvc2l0aW9uQm91bmRhcnkpKTsKKyAgICBp
ZiAoaW9zTW9kZSA9PSBOZXh0V29yZE1vZGVJbklPUzo6TGVnYWN5U3RvcEJlZm9yZVdvcmQpIC8v
IEZJWE1FOiBSZW1vdmUgdGhpcyBjb2RlIHBhdGguCisgICAgICAgIHJldHVybiBwb3NpdGlvbi5o
b25vckVkaXRpbmdCb3VuZGFyeUF0T3JCZWZvcmUocHJldmlvdXNCb3VuZGFyeShwb3NpdGlvbiwg
cHJldmlvdXNXb3JkUG9zaXRpb25Cb3VuZGFyeTxOZXh0V29yZE1vZGVJbklPUzo6TGVnYWN5U3Rv
cEJlZm9yZVdvcmQ+KSk7CisgICAgcmV0dXJuIHBvc2l0aW9uLmhvbm9yRWRpdGluZ0JvdW5kYXJ5
QXRPckJlZm9yZShwcmV2aW91c0JvdW5kYXJ5KHBvc2l0aW9uLCBwcmV2aW91c1dvcmRQb3NpdGlv
bkJvdW5kYXJ5PE5leHRXb3JkTW9kZUluSU9TOjpTdG9wQWZ0ZXJXb3JkPikpOwogfQogCit0ZW1w
bGF0ZSA8TmV4dFdvcmRNb2RlSW5JT1MgaW9zTW9kZT4KIHN0YXRpYyB1bnNpZ25lZCBuZXh0V29y
ZFBvc2l0aW9uQm91bmRhcnkoU3RyaW5nVmlldyB0ZXh0LCB1bnNpZ25lZCBvZmZzZXQsIEJvdW5k
YXJ5U2VhcmNoQ29udGV4dEF2YWlsYWJpbGl0eSBtYXlIYXZlTW9yZUNvbnRleHQsIGJvb2wmIG5l
ZWRNb3JlQ29udGV4dCkKIHsKICAgICBpZiAobWF5SGF2ZU1vcmVDb250ZXh0ICYmIGVuZE9mRmly
c3RXb3JkQm91bmRhcnlDb250ZXh0KHRleHQuc3Vic3RyaW5nKG9mZnNldCkpID09IHRleHQubGVu
Z3RoKCkgLSBvZmZzZXQpIHsKQEAgLTc4MywxMiArNzg3LDE0IEBAIHN0YXRpYyB1bnNpZ25lZCBu
ZXh0V29yZFBvc2l0aW9uQm91bmRhcnkoU3RyaW5nVmlldyB0ZXh0LCB1bnNpZ25lZCBvZmZzZXQs
IEJvdW5kCiAgICAgICAgIHJldHVybiB0ZXh0Lmxlbmd0aCgpOwogICAgIH0KICAgICBuZWVkTW9y
ZUNvbnRleHQgPSBmYWxzZTsKLSAgICByZXR1cm4gZmluZE5leHRXb3JkRnJvbUluZGV4KHRleHQs
IG9mZnNldCwgdHJ1ZSk7CisgICAgcmV0dXJuIGZpbmROZXh0V29yZEZyb21JbmRleCh0ZXh0LCBv
ZmZzZXQsIE5leHRXb3JkRGlyZWN0aW9uOjpGb3J3YXJkLCBpb3NNb2RlKTsKIH0KIAotVmlzaWJs
ZVBvc2l0aW9uIG5leHRXb3JkUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlv
bikKK1Zpc2libGVQb3NpdGlvbiBuZXh0V29yZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlv
biYgcG9zaXRpb24sIE5leHRXb3JkTW9kZUluSU9TIGlvc01vZGUpCiB7Ci0gICAgcmV0dXJuIHBv
c2l0aW9uLmhvbm9yRWRpdGluZ0JvdW5kYXJ5QXRPckFmdGVyKG5leHRCb3VuZGFyeShwb3NpdGlv
biwgbmV4dFdvcmRQb3NpdGlvbkJvdW5kYXJ5KSk7CisgICAgaWYgKGlvc01vZGUgPT0gTmV4dFdv
cmRNb2RlSW5JT1M6OkxlZ2FjeVN0b3BCZWZvcmVXb3JkKSAvLyBGSVhNRTogUmVtb3ZlIHRoaXMg
Y29kZSBwYXRoLgorICAgICAgICByZXR1cm4gcG9zaXRpb24uaG9ub3JFZGl0aW5nQm91bmRhcnlB
dE9yQWZ0ZXIobmV4dEJvdW5kYXJ5KHBvc2l0aW9uLCBuZXh0V29yZFBvc2l0aW9uQm91bmRhcnk8
TmV4dFdvcmRNb2RlSW5JT1M6OkxlZ2FjeVN0b3BCZWZvcmVXb3JkPikpOworICAgIHJldHVybiBw
b3NpdGlvbi5ob25vckVkaXRpbmdCb3VuZGFyeUF0T3JBZnRlcihuZXh0Qm91bmRhcnkocG9zaXRp
b24sIG5leHRXb3JkUG9zaXRpb25Cb3VuZGFyeTxOZXh0V29yZE1vZGVJbklPUzo6U3RvcEFmdGVy
V29yZD4pKTsKIH0KIAogYm9vbCBpc1N0YXJ0T2ZXb3JkKGNvbnN0IFZpc2libGVQb3NpdGlvbiYg
cCkKQEAgLTE3MDAsNyArMTcwNiw3IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gbmV4dFdvcmRC
b3VuZGFyeUluRGlyZWN0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdnAsIFNlCiAgICAgICAg
ICAgICAgICAgLy8gRG8gc2FtZSB0aGluZyBhcyBiYWNrd2FyZHMgdHJhdmVsaW5nIGJlbG93Lgog
ICAgICAgICAgICAgICAgIHN0YXJ0ID0gdnA7CiAgICAgICAgICAgICAgICAgd2hpbGUgKHRydWUp
IHsKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gc3RhcnRPZldvcmQobmV4dFdvcmRQb3Np
dGlvbihzdGFydCksIFJpZ2h0V29yZElmT25Cb3VuZGFyeSk7CisgICAgICAgICAgICAgICAgICAg
IHJlc3VsdCA9IHN0YXJ0T2ZXb3JkKG5leHRXb3JkUG9zaXRpb24oc3RhcnQsIE5leHRXb3JkTW9k
ZUluSU9TOjpMZWdhY3lTdG9wQmVmb3JlV29yZCksIFJpZ2h0V29yZElmT25Cb3VuZGFyeSk7CiAK
ICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBzdGFydCkKICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtMTczNCw3ICsxNzQwLDcgQEAgc3RhdGljIFZpc2libGVQb3Np
dGlvbiBuZXh0V29yZEJvdW5kYXJ5SW5EaXJlY3Rpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2
cCwgU2UKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIGVuZCA9IHZwOwogICAg
ICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9
IGVuZE9mV29yZChwcmV2aW91c1dvcmRQb3NpdGlvbihlbmQpLCBSaWdodFdvcmRJZk9uQm91bmRh
cnkpOworICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBlbmRPZldvcmQocHJldmlvdXNXb3Jk
UG9zaXRpb24oZW5kLCBOZXh0V29yZE1vZGVJbklPUzo6TGVnYWN5U3RvcEJlZm9yZVdvcmQpLCBS
aWdodFdvcmRJZk9uQm91bmRhcnkpOwogCiAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQg
PT0gZW5kKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9WaXNpYmxlVW5pdHMuaAppbmRleCA2NzE3ZWIxMWRkZGJkODY4ZTQ0MTRjMzk4MDMzNTJhMDMx
NmFmZTNlLi5kNjkxODFmOTY4NzY2YTgzMTQ3YTdkZDFmMWJlN2NjMTBiNGMyMjE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiRWRpdGluZ0JvdW5kYXJ5LmgiCisjaW5jbHVkZSAiVGV4dEJvdW5k
YXJpZXMuaCIKICNpbmNsdWRlICJWaXNpYmxlU2VsZWN0aW9uLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTQwLDggKzQxLDggQEAgZW51bSBFV29yZFNpZGUgeyBSaWdodFdvcmRJZk9uQm91
bmRhcnkgPSBmYWxzZSwgTGVmdFdvcmRJZk9uQm91bmRhcnkgPSB0cnVlIH07CiAvLyB3b3Jkcwog
V0VCQ09SRV9FWFBPUlQgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0T2ZXb3JkKGNvbnN0IFZpc2libGVQ
b3NpdGlvbiAmLCBFV29yZFNpZGUgPSBSaWdodFdvcmRJZk9uQm91bmRhcnkpOwogV0VCQ09SRV9F
WFBPUlQgVmlzaWJsZVBvc2l0aW9uIGVuZE9mV29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24gJiwg
RVdvcmRTaWRlID0gUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KTsKLVdFQkNPUkVfRVhQT1JUIFZpc2li
bGVQb3NpdGlvbiBwcmV2aW91c1dvcmRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24gJik7
Ci1XRUJDT1JFX0VYUE9SVCBWaXNpYmxlUG9zaXRpb24gbmV4dFdvcmRQb3NpdGlvbihjb25zdCBW
aXNpYmxlUG9zaXRpb24gJik7CitXRUJDT1JFX0VYUE9SVCBWaXNpYmxlUG9zaXRpb24gcHJldmlv
dXNXb3JkUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uICYsIE5leHRXb3JkTW9kZUluSU9T
KTsKK1dFQkNPUkVfRVhQT1JUIFZpc2libGVQb3NpdGlvbiBuZXh0V29yZFBvc2l0aW9uKGNvbnN0
IFZpc2libGVQb3NpdGlvbiAmLCBOZXh0V29yZE1vZGVJbklPUyk7CiBWaXNpYmxlUG9zaXRpb24g
cmlnaHRXb3JkUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgYm9vbCBza2lwc1NwYWNl
V2hlbk1vdmluZ1JpZ2h0KTsKIFZpc2libGVQb3NpdGlvbiBsZWZ0V29yZFBvc2l0aW9uKGNvbnN0
IFZpc2libGVQb3NpdGlvbiYsIGJvb2wgc2tpcHNTcGFjZVdoZW5Nb3ZpbmdSaWdodCk7CiBib29s
IGlzU3RhcnRPZldvcmQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmgKaW5kZXggOWE4NzNhZjRkN2Q3M2MzYWUw
OTRkZGZmNDc0ZDlkY2IzNTVhYjEzNS4uM2I2OGFlNjkwY2MwZjVhNjBkMTllNTY1YTY4YmNlMzRi
NTU4MjVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Qm91
bmRhcmllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJvdW5kYXJp
ZXMuaApAQCAtNDcsNyArNDcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgdm9pZCBm
aW5kV29yZEJvdW5kYXJ5KFN0cmluZ1ZpZXcsIGludCBwb3NpdGlvbiwgaW50KiBzdGFydCwgaW50
KiBlbmQpOwogICAgIHZvaWQgZmluZEVuZFdvcmRCb3VuZGFyeShTdHJpbmdWaWV3LCBpbnQgcG9z
aXRpb24sIGludCogZW5kKTsKLSAgICBpbnQgZmluZE5leHRXb3JkRnJvbUluZGV4KFN0cmluZ1Zp
ZXcsIGludCBwb3NpdGlvbiwgYm9vbCBmb3J3YXJkKTsKKworICAgIGVudW0gY2xhc3MgTmV4dFdv
cmREaXJlY3Rpb24geyBGb3J3YXJkLCBCYWNrd2FyZCB9OworICAgIGVudW0gY2xhc3MgTmV4dFdv
cmRNb2RlSW5JT1MgeyBMZWdhY3lTdG9wQmVmb3JlV29yZCwgU3RvcEFmdGVyV29yZCB9OworICAg
IGludCBmaW5kTmV4dFdvcmRGcm9tSW5kZXgoU3RyaW5nVmlldywgaW50IHBvc2l0aW9uLCBOZXh0
V29yZERpcmVjdGlvbiwgTmV4dFdvcmRNb2RlSW5JT1MgPSBOZXh0V29yZE1vZGVJbklPUzo6TGVn
YWN5U3RvcEJlZm9yZVdvcmQpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW0KaW5kZXggNDA5MGI2Njg5YzE2ZWU5MGJiMGYx
MjlkMGM0ODQyODU0Njg2OTc3MC4uOTQyYjNhNjM4YmM1MDgyZWJiNDU3MTNlYjZhNzkzMWZmOWY5
NTFjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJv
dW5kYXJpZXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJv
dW5kYXJpZXMubW0KQEAgLTIyOSwxMSArMjI5LDEyIEBAIHZvaWQgZmluZEVuZFdvcmRCb3VuZGFy
eShTdHJpbmdWaWV3IHRleHQsIGludCBwb3NpdGlvbiwgaW50KiBlbmQpCiAgICAgZmluZFdvcmRC
b3VuZGFyeSh0ZXh0LCBwb3NpdGlvbiwgJnN0YXJ0LCBlbmQpOwogfQogCi1pbnQgZmluZE5leHRX
b3JkRnJvbUluZGV4KFN0cmluZ1ZpZXcgdGV4dCwgaW50IHBvc2l0aW9uLCBib29sIGZvcndhcmQp
CitpbnQgZmluZE5leHRXb3JkRnJvbUluZGV4KFN0cmluZ1ZpZXcgdGV4dCwgaW50IHBvc2l0aW9u
LCBOZXh0V29yZERpcmVjdGlvbiBkaXJlY3Rpb24sIE5leHRXb3JkTW9kZUluSU9TIHdoaXRlc3Bh
Y2VNb2RlSW5JT1MpCiB7ICAgCiAjaWYgVVNFKEFQUEtJVCkKKyAgICBVTlVTRURfUEFSQU0od2hp
dGVzcGFjZU1vZGVJbklPUyk7CiAgICAgTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3Ry
aW5nID0gW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOnRleHQuY3Jl
YXRlTlNTdHJpbmdXaXRob3V0Q29weWluZygpLmdldCgpXTsKLSAgICBpbnQgcmVzdWx0ID0gW2F0
dHJpYnV0ZWRTdHJpbmcgbmV4dFdvcmRGcm9tSW5kZXg6cG9zaXRpb24gZm9yd2FyZDpmb3J3YXJk
XTsKKyAgICBpbnQgcmVzdWx0ID0gW2F0dHJpYnV0ZWRTdHJpbmcgbmV4dFdvcmRGcm9tSW5kZXg6
cG9zaXRpb24gZm9yd2FyZDpkaXJlY3Rpb24gPT0gTmV4dFdvcmREaXJlY3Rpb246OkZvcndhcmRd
OwogICAgIFthdHRyaWJ1dGVkU3RyaW5nIHJlbGVhc2VdOwogICAgIHJldHVybiByZXN1bHQ7CiAj
ZWxzZQpAQCAtMjQzLDE0ICsyNDQsMzEgQEAgaW50IGZpbmROZXh0V29yZEZyb21JbmRleChTdHJp
bmdWaWV3IHRleHQsIGludCBwb3NpdGlvbiwgYm9vbCBmb3J3YXJkKQogICAgIGludCBwb3MgPSBw
b3NpdGlvbjsKICAgICBVQnJlYWtJdGVyYXRvciogYm91bmRhcnkgPSB3b3JkQnJlYWtJdGVyYXRv
cih0ZXh0KTsKICAgICBpZiAoYm91bmRhcnkpIHsKLSAgICAgICAgaWYgKGZvcndhcmQpIHsKKyAg
ICAgICAgaWYgKGRpcmVjdGlvbiA9PSBOZXh0V29yZERpcmVjdGlvbjo6Rm9yd2FyZCkgeworICAg
ICAgICAgICAgaWYgKHdoaXRlc3BhY2VNb2RlSW5JT1MgPT0gTmV4dFdvcmRNb2RlSW5JT1M6OlN0
b3BBZnRlcldvcmQpIHsKKyAgICAgICAgICAgICAgICB3aGlsZSAoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHBvcykgPCB0ZXh0Lmxlbmd0aCgpICYmIGlzV29yZERlbGltaXRpbmdDaGFyYWN0ZXIodGV4
dFtwb3NdKSkgeworICAgICAgICAgICAgICAgICAgICBwb3MgPSB1YnJrX2ZvbGxvd2luZyhib3Vu
ZGFyeSwgcG9zKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHBvcyA9PSBVQlJLX0RPTkUpCisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGV4dC5sZW5ndGgoKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAg
cG9zID0gdWJya19mb2xsb3dpbmcoYm91bmRhcnksIHBvcyk7CiAgICAgICAgICAgICAgICAgaWYg
KHBvcyA9PSBVQlJLX0RPTkUpCi0gICAgICAgICAgICAgICAgICAgIHBvcyA9IHRleHQubGVuZ3Ro
KCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0Lmxlbmd0aCgpOwogICAgICAgICAg
ICAgfSB3aGlsZSAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBvcykgPCB0ZXh0Lmxlbmd0aCgpICYm
IChwb3MgPT0gMCB8fCAhaXNTa2lwQ2hhcmFjdGVyKHRleHRbcG9zIC0gMV0pKSAmJiBpc1NraXBD
aGFyYWN0ZXIodGV4dFtwb3NdKSk7CisKKyAgICAgICAgICAgIC8vIElDVSB3b3VsZCBza2lwIHRo
ZSB0cmFpbGluZyB3aGl0ZXNwYWNlLiBHbyBiYWNrLgorICAgICAgICAgICAgaWYgKHdoaXRlc3Bh
Y2VNb2RlSW5JT1MgPT0gTmV4dFdvcmRNb2RlSW5JT1M6OlN0b3BBZnRlcldvcmQgJiYgaXNXb3Jk
RGVsaW1pdGluZ0NoYXJhY3Rlcih0ZXh0W3BvcyAtIDFdKSkKKyAgICAgICAgICAgICAgICBwb3Mg
PSB1YnJrX3ByZWNlZGluZyhib3VuZGFyeSwgcG9zKTsKICAgICAgICAgfQogICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIGlmICh3aGl0ZXNwYWNlTW9kZUluSU9TID09IE5leHRXb3JkTW9kZUlu
SU9TOjpTdG9wQWZ0ZXJXb3JkICYmIHBvcyAmJiBpc1dvcmREZWxpbWl0aW5nQ2hhcmFjdGVyKHRl
eHRbcG9zIC0gMV0pKSB7CisgICAgICAgICAgICAgICAgcG9zID0gdWJya19wcmVjZWRpbmcoYm91
bmRhcnksIHBvcyk7CisgICAgICAgICAgICAgICAgaWYgKHBvcyA9PSBVQlJLX0RPTkUpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBk
byB7CiAgICAgICAgICAgICAgICAgcG9zID0gdWJya19wcmVjZWRpbmcoYm91bmRhcnksIHBvcyk7
CiAgICAgICAgICAgICAgICAgaWYgKHBvcyA9PSBVQlJLX0RPTkUpCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTQ4YWQ2MDli
NWNhODBhNmRlZDk3ZmM3YmU1NGE3MmQ0M2IwMThkNi4uZGJlYzA2MGNkZmY0MWEyZmFlY2FlZDU0
YWNjNGQ2YzY1M2MwM2Q2OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE5LTA5LTA2ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIE9wdGlvbiArIGFycm93IG1v
dmVzIGNhcmV0IHBhc3Qgd2hpdGVzcGFjZSBvbiBpT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTU3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgbmV3IHRlc3QgZm9yIG1vdmluZyBjYXJl
dCBieSB3b3JkIGdyYW51bGFyaXR5IG9uIGlPUy4KKworICAgICAgICAqIGVkaXRpbmcvc2VsZWN0
aW9uL2lvcy9tb3ZlLWJ5LXdvcmQtd2l0aC1rZXlib2FyZC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2lvcy9tb3ZlLWJ5LXdvcmQtd2l0aC1rZXlib2Fy
ZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9pb3Mvc2VsZWN0LW5v
bi1lZGl0YWJsZS10ZXh0LXVzaW5nLWtleWJvYXJkLWV4cGVjdGVkLnR4dDogUmViYXNlbGluZWQu
CisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vaW9zL3NlbGVjdC1ub24tZWRpdGFibGUtdGV4
dC11c2luZy1rZXlib2FyZC5odG1sOiBVcGRhdGVkIHRoZSBleHBlY3RlZAorICAgICAgICBzZWxl
Y3Rpb24gc3RyaW5nIGR1ZSB0byB0aGUgYmVoYXZpb3IgY2hhbmdlLiBBbHNvIGZpeGVkIGEgYnVn
IHRoYXQgc29tZSB0ZXN0IGNhc2VzIHdlcmUKKyAgICAgICAgbm90IHdhaXRpbmcgZm9yIGEgc2Vj
b25kYXJ5IHNlbGVjdGlvbmNoYW5nZSBldmVudCB0aGF0IGhhcHBlbnMgYWZ0ZXIgYW4gZXh0cmEg
c2VsZWN0aW9uCisgICAgICAgIHVwZGF0ZSB3aXRoIGNoYXJhY3RlciBncmFudWxhcml0eSBpbnRy
b2R1Y2VkIGluIHIyNDc1MjQuCisKIDIwMTktMDktMDUgIEp1c3RpbiBGYW4gIDxqdXN0aW5fZmFu
QGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR1BVXSBJbXBsZW1lbnQgR1BVVW5jYXB0dXJlZEVy
cm9yRXZlbnQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9t
b3ZlLWJ5LXdvcmQtd2l0aC1rZXlib2FyZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0
aW5nL3NlbGVjdGlvbi9pb3MvbW92ZS1ieS13b3JkLXdpdGgta2V5Ym9hcmQtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlOTE3ODFjODZiNWM2MjFhNWY0Mzc3ZjdlZmI3ZjZlNjc1MDc0ZTMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3MvbW92ZS1i
eS13b3JkLXdpdGgta2V5Ym9hcmQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDIzIEBACitUaGlz
IHRlc3RzIG1vdmluZyB0aGUgY2FyZXQgd2l0aCB3b3JkIGdyYW51bGFyaXR5IG9uIGlPUy4KK1dl
YktpdCBzaG91bGQgc3RvcCBhdCB0aGUgZW5kIG9mIGVhY2ggd29yZCBiZWZvcmUgd2hpdGVzcGFj
ZSB3aGVuIG1vdmluZyBmb3J3YXJkcywgYW5kIGFmdGVyIHdoaXRlc3BhY2Ugd2hlbiBtb3Zpbmcg
YmFja3dhcmRzLAorVGhlIGVtcHR5IGxpbmUgc2hvdWxkIGJlIHNraXBwZWQgaW4gZWl0aGVyIGRp
cmVjdGlvbi4KKworQmVmb3JlIG1vdmluZyBmb3J3YXJkczoKK3wgIgorICAgICIKK3wgPGRpdj4K
K3wgICAiPCNzZWxlY3Rpb24tY2FyZXQ+aGVsbG8gd29ybGQiCit8ICIKKyAgICAiCit8IDxicj4K
K3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAicmVkLCBncmVlbiwgJiBibHVlLiIKK3wgIgorIgor
CitBZnRlciBtb3ZpbmcgdG8gdGhlIHJpZ2h0IGJ5IHdvcmQgKDEpOgorfCAiCisgICAgIgorfCA8
ZGl2PgorfCAgICJoZWxsbzwjc2VsZWN0aW9uLWNhcmV0PiB3b3JsZCIKK3wgIgorICAgICIKK3wg
PGJyPgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJyZWQsIGdyZWVuLCAmIGJsdWUuIgorfCAi
CisiCisKK0FmdGVyIG1vdmluZyB0byB0aGUgcmlnaHQgYnkgd29yZCAoMik6Cit8ICIKKyAgICAi
Cit8IDxkaXY+Cit8ICAgImhlbGxvIHdvcmxkPCNzZWxlY3Rpb24tY2FyZXQ+IgorfCAiCisgICAg
IgorfCA8YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgInJlZCwgZ3JlZW4sICYgYmx1ZS4i
Cit8ICIKKyIKKworQWZ0ZXIgbW92aW5nIHRvIHRoZSByaWdodCBieSB3b3JkICgzKToKK3wgIgor
ICAgICIKK3wgPGRpdj4KK3wgICAiaGVsbG8gd29ybGQiCit8ICIKKyAgICAiCit8IDxicj4KK3wg
IgorICAgICIKK3wgPGRpdj4KK3wgICAicmVkLDwjc2VsZWN0aW9uLWNhcmV0PiBncmVlbiwgJiBi
bHVlLiIKK3wgIgorIgorCitBZnRlciBtb3ZpbmcgdG8gdGhlIHJpZ2h0IGJ5IHdvcmQgKDQpOgor
fCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJoZWxsbyB3b3JsZCIKK3wgIgorICAgICIKK3wgPGJy
PgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJyZWQsIGdyZWVuLDwjc2VsZWN0aW9uLWNhcmV0
PiAmIGJsdWUuIgorfCAiCisiCisKK0FmdGVyIG1vdmluZyB0byB0aGUgcmlnaHQgYnkgd29yZCAo
NSk6Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgImhlbGxvIHdvcmxkIgorfCAiCisgICAgIgor
fCA8YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgInJlZCwgZ3JlZW4sICY8I3NlbGVjdGlv
bi1jYXJldD4gYmx1ZS4iCit8ICIKKyIKKworQWZ0ZXIgbW92aW5nIHRvIHRoZSByaWdodCBieSB3
b3JkICg2KToKK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAiaGVsbG8gd29ybGQiCit8ICIKKyAg
ICAiCit8IDxicj4KK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAicmVkLCBncmVlbiwgJiBibHVl
Ljwjc2VsZWN0aW9uLWNhcmV0PiIKK3wgIgorIgorCitCZWZvcmUgbW92aW5nIGJhY2t3YXJkczoK
K3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAiaGVsbG8gd29ybGQiCit8ICIKKyAgICAiCit8IDxi
cj4KK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAicmVkLCBncmVlbiwgJiBibHVlLjwjc2VsZWN0
aW9uLWNhcmV0PiIKK3wgIgorIgorCitBZnRlciBtb3ZpbmcgdG8gdGhlIGxlZnQgYnkgd29yZCAo
MSk6Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgImhlbGxvIHdvcmxkIgorfCAiCisgICAgIgor
fCA8YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgInJlZCwgZ3JlZW4sICYgPCNzZWxlY3Rp
b24tY2FyZXQ+Ymx1ZS4iCit8ICIKKyIKKworQWZ0ZXIgbW92aW5nIHRvIHRoZSBsZWZ0IGJ5IHdv
cmQgKDIpOgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJoZWxsbyB3b3JsZCIKK3wgIgorICAg
ICIKK3wgPGJyPgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJyZWQsIGdyZWVuLCA8I3NlbGVj
dGlvbi1jYXJldD4mIGJsdWUuIgorfCAiCisiCisKK0FmdGVyIG1vdmluZyB0byB0aGUgbGVmdCBi
eSB3b3JkICgzKToKK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAiaGVsbG8gd29ybGQiCit8ICIK
KyAgICAiCit8IDxicj4KK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAicmVkLCA8I3NlbGVjdGlv
bi1jYXJldD5ncmVlbiwgJiBibHVlLiIKK3wgIgorIgorCitBZnRlciBtb3ZpbmcgdG8gdGhlIGxl
ZnQgYnkgd29yZCAoNCk6Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgImhlbGxvIHdvcmxkIgor
fCAiCisgICAgIgorfCA8YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgIjwjc2VsZWN0aW9u
LWNhcmV0PnJlZCwgZ3JlZW4sICYgYmx1ZS4iCit8ICIKKyIKKworQWZ0ZXIgbW92aW5nIHRvIHRo
ZSBsZWZ0IGJ5IHdvcmQgKDUpOgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJoZWxsbyA8I3Nl
bGVjdGlvbi1jYXJldD53b3JsZCIKK3wgIgorICAgICIKK3wgPGJyPgorfCAiCisgICAgIgorfCA8
ZGl2PgorfCAgICJyZWQsIGdyZWVuLCAmIGJsdWUuIgorfCAiCisiCisKK0FmdGVyIG1vdmluZyB0
byB0aGUgbGVmdCBieSB3b3JkICg2KToKK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAiPCNzZWxl
Y3Rpb24tY2FyZXQ+aGVsbG8gd29ybGQiCit8ICIKKyAgICAiCit8IDxicj4KK3wgIgorICAgICIK
K3wgPGRpdj4KK3wgICAicmVkLCBncmVlbiwgJiBibHVlLiIKK3wgIgorIgorCitCZWZvcmUgZXh0
ZW5kaW5nIGZvcndhcmRzOgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICI8I3NlbGVjdGlvbi1j
YXJldD5oZWxsbyB3b3JsZCIKK3wgIgorICAgICIKK3wgPGJyPgorfCAiCisgICAgIgorfCA8ZGl2
PgorfCAgICJyZWQsIGdyZWVuLCAmIGJsdWUuIgorfCAiCisiCisKK0FmdGVyIGV4dGVuZGluZyB0
byB0aGUgcmlnaHQgYnkgd29yZCAoMSk6Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgIjwjc2Vs
ZWN0aW9uLWFuY2hvcj5oZWxsbzwjc2VsZWN0aW9uLWZvY3VzPiB3b3JsZCIKK3wgIgorICAgICIK
K3wgPGJyPgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJyZWQsIGdyZWVuLCAmIGJsdWUuIgor
fCAiCisiCisKK0FmdGVyIGV4dGVuZGluZyB0byB0aGUgcmlnaHQgYnkgd29yZCAoMik6Cit8ICIK
KyAgICAiCit8IDxkaXY+Cit8ICAgIjwjc2VsZWN0aW9uLWFuY2hvcj5oZWxsbyB3b3JsZDwjc2Vs
ZWN0aW9uLWZvY3VzPiIKK3wgIgorICAgICIKK3wgPGJyPgorfCAiCisgICAgIgorfCA8ZGl2Pgor
fCAgICJyZWQsIGdyZWVuLCAmIGJsdWUuIgorfCAiCisiCisKK0FmdGVyIGV4dGVuZGluZyB0byB0
aGUgcmlnaHQgYnkgd29yZCAoMyk6Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgIjwjc2VsZWN0
aW9uLWFuY2hvcj5oZWxsbyB3b3JsZCIKK3wgIgorICAgICIKK3wgPGJyPgorfCAiCisgICAgIgor
fCA8ZGl2PgorfCAgICJyZWQsPCNzZWxlY3Rpb24tZm9jdXM+IGdyZWVuLCAmIGJsdWUuIgorfCAi
CisiCisKK0FmdGVyIGV4dGVuZGluZyB0byB0aGUgcmlnaHQgYnkgd29yZCAoNCk6Cit8ICIKKyAg
ICAiCit8IDxkaXY+Cit8ICAgIjwjc2VsZWN0aW9uLWFuY2hvcj5oZWxsbyB3b3JsZCIKK3wgIgor
ICAgICIKK3wgPGJyPgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJyZWQsIGdyZWVuLDwjc2Vs
ZWN0aW9uLWZvY3VzPiAmIGJsdWUuIgorfCAiCisiCisKK0FmdGVyIGV4dGVuZGluZyB0byB0aGUg
cmlnaHQgYnkgd29yZCAoNSk6Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgIjwjc2VsZWN0aW9u
LWFuY2hvcj5oZWxsbyB3b3JsZCIKK3wgIgorICAgICIKK3wgPGJyPgorfCAiCisgICAgIgorfCA8
ZGl2PgorfCAgICJyZWQsIGdyZWVuLCAmPCNzZWxlY3Rpb24tZm9jdXM+IGJsdWUuIgorfCAiCisi
CisKK0FmdGVyIGV4dGVuZGluZyB0byB0aGUgcmlnaHQgYnkgd29yZCAoNik6Cit8ICIKKyAgICAi
Cit8IDxkaXY+Cit8ICAgIjwjc2VsZWN0aW9uLWFuY2hvcj5oZWxsbyB3b3JsZCIKK3wgIgorICAg
ICIKK3wgPGJyPgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJyZWQsIGdyZWVuLCAmIGJsdWUu
PCNzZWxlY3Rpb24tZm9jdXM+IgorfCAiCisiCisKK0JlZm9yZSBleHRlbmRpbmcgYmFja3dhcmRz
OgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJoZWxsbyB3b3JsZCIKK3wgIgorICAgICIKK3wg
PGJyPgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJyZWQsIGdyZWVuLCAmIGJsdWUuPCNzZWxl
Y3Rpb24tY2FyZXQ+IgorfCAiCisiCisKK0FmdGVyIGV4dGVuZGluZyB0byB0aGUgbGVmdCBieSB3
b3JkICgxKToKK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAiaGVsbG8gd29ybGQiCit8ICIKKyAg
ICAiCit8IDxicj4KK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAicmVkLCBncmVlbiwgJiA8I3Nl
bGVjdGlvbi1mb2N1cz5ibHVlLjwjc2VsZWN0aW9uLWFuY2hvcj4iCit8ICIKKyIKKworQWZ0ZXIg
ZXh0ZW5kaW5nIHRvIHRoZSBsZWZ0IGJ5IHdvcmQgKDIpOgorfCAiCisgICAgIgorfCA8ZGl2Pgor
fCAgICJoZWxsbyB3b3JsZCIKK3wgIgorICAgICIKK3wgPGJyPgorfCAiCisgICAgIgorfCA8ZGl2
PgorfCAgICJyZWQsIGdyZWVuLCA8I3NlbGVjdGlvbi1mb2N1cz4mIGJsdWUuPCNzZWxlY3Rpb24t
YW5jaG9yPiIKK3wgIgorIgorCitBZnRlciBleHRlbmRpbmcgdG8gdGhlIGxlZnQgYnkgd29yZCAo
Myk6Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgImhlbGxvIHdvcmxkIgorfCAiCisgICAgIgor
fCA8YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgInJlZCwgPCNzZWxlY3Rpb24tZm9jdXM+
Z3JlZW4sICYgYmx1ZS48I3NlbGVjdGlvbi1hbmNob3I+IgorfCAiCisiCisKK0FmdGVyIGV4dGVu
ZGluZyB0byB0aGUgbGVmdCBieSB3b3JkICg0KToKK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAi
aGVsbG8gd29ybGQiCit8ICIKKyAgICAiCit8IDxicj4KK3wgIgorICAgICIKK3wgPGRpdj4KK3wg
ICAiPCNzZWxlY3Rpb24tZm9jdXM+cmVkLCBncmVlbiwgJiBibHVlLjwjc2VsZWN0aW9uLWFuY2hv
cj4iCit8ICIKKyIKKworQWZ0ZXIgZXh0ZW5kaW5nIHRvIHRoZSBsZWZ0IGJ5IHdvcmQgKDUpOgor
fCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJoZWxsbyA8I3NlbGVjdGlvbi1mb2N1cz53b3JsZCIK
K3wgIgorICAgICIKK3wgPGJyPgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJyZWQsIGdyZWVu
LCAmIGJsdWUuPCNzZWxlY3Rpb24tYW5jaG9yPiIKK3wgIgorIgorCitBZnRlciBleHRlbmRpbmcg
dG8gdGhlIGxlZnQgYnkgd29yZCAoNik6Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgIjwjc2Vs
ZWN0aW9uLWZvY3VzPmhlbGxvIHdvcmxkIgorfCAiCisgICAgIgorfCA8YnI+Cit8ICIKKyAgICAi
Cit8IDxkaXY+Cit8ICAgInJlZCwgZ3JlZW4sICYgYmx1ZS48I3NlbGVjdGlvbi1hbmNob3I+Igor
fCAiCisiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3MvbW92
ZS1ieS13b3JkLXdpdGgta2V5Ym9hcmQuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0
aW9uL2lvcy9tb3ZlLWJ5LXdvcmQtd2l0aC1rZXlib2FyZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRlODEz
N2M4MWYxZjU5NDhiY2NmNTYzYmE3ZDhmZDJlZjQ2OTRlZDYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3MvbW92ZS1ieS13b3JkLXdpdGgta2V5Ym9h
cmQuaHRtbApAQCAtMCwwICsxLDc5IEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVz
dC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0
aWFsLXNjYWxlPTEsIG1heGltdW0tc2NhbGU9MSwgc2hyaW5rLXRvLWZpdD1ubyI+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2R1bXAtYXMtbWFya3VwLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+CisKK01hcmt1cC5kZXNjcmlwdGlvbihgVGhpcyB0ZXN0cyBtb3ZpbmcgdGhlIGNhcmV0
IHdpdGggd29yZCBncmFudWxhcml0eSBvbiBpT1MuCitXZWJLaXQgc2hvdWxkIHN0b3AgYXQgdGhl
IGVuZCBvZiBlYWNoIHdvcmQgYmVmb3JlIHdoaXRlc3BhY2Ugd2hlbiBtb3ZpbmcgZm9yd2FyZHMs
IGFuZCBhZnRlciB3aGl0ZXNwYWNlIHdoZW4gbW92aW5nIGJhY2t3YXJkcywKK1RoZSBlbXB0eSBs
aW5lIHNob3VsZCBiZSBza2lwcGVkIGluIGVpdGhlciBkaXJlY3Rpb24uYCk7CitNYXJrdXAubm9B
dXRvRHVtcCgpOworTWFya3VwLndhaXRVbnRpbERvbmUoKTsKKworYXN5bmMgZnVuY3Rpb24gcnVu
VGVzdCgpCit7CisgICAgY29uc3QgZWRpdG9yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Vk
aXRvcicpOworCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICBhd2FpdCBVSUhl
bHBlci5hY3RpdmF0ZUVsZW1lbnRBbmRXYWl0Rm9ySW5wdXRTZXNzaW9uKGVkaXRvcik7CisKKyAg
ICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIE1hcmt1cC5kdW1wKGVkaXRvciwg
J01hcmt1cCcpOworICAgICAgICBNYXJrdXAubm90aWZ5RG9uZSgpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24oZWRpdG9yLCAwKTsKKyAg
ICBNYXJrdXAuZHVtcChlZGl0b3IsICdCZWZvcmUgbW92aW5nIGZvcndhcmRzJyk7CisKKyAgICBj
b25zdCBtb3ZlQ291bnQgPSA2OworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtb3ZlQ291bnQ7
IGkrKykgeworICAgICAgICBhd2FpdCBVSUhlbHBlci5rZXlEb3duKCdyaWdodEFycm93JywgWydh
bHRLZXknXSk7CisgICAgICAgIGF3YWl0IFVJSGVscGVyLmVuc3VyZVByZXNlbnRhdGlvblVwZGF0
ZSgpOworICAgICAgICBNYXJrdXAuZHVtcChlZGl0b3IsIGBBZnRlciBtb3ZpbmcgdG8gdGhlIHJp
Z2h0IGJ5IHdvcmQgKCR7aSArIDF9KWApOworICAgIH0KKworICAgIGdldFNlbGVjdGlvbigpLnNl
dFBvc2l0aW9uKGVkaXRvciwgZWRpdG9yLmNoaWxkTm9kZXMubGVuZ3RoKTsKKyAgICBNYXJrdXAu
ZHVtcChlZGl0b3IsICdCZWZvcmUgbW92aW5nIGJhY2t3YXJkcycpOworCisgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCBtb3ZlQ291bnQ7IGkrKykgeworICAgICAgICBhd2FpdCBVSUhlbHBlci5rZXlE
b3duKCdsZWZ0QXJyb3cnLCBbJ2FsdEtleSddKTsKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIuZW5z
dXJlUHJlc2VudGF0aW9uVXBkYXRlKCk7CisgICAgICAgIE1hcmt1cC5kdW1wKGVkaXRvciwgYEFm
dGVyIG1vdmluZyB0byB0aGUgbGVmdCBieSB3b3JkICgke2kgKyAxfSlgKTsKKyAgICB9CisKKyAg
ICBnZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbihlZGl0b3IsIDApOworICAgIE1hcmt1cC5kdW1w
KGVkaXRvciwgJ0JlZm9yZSBleHRlbmRpbmcgZm9yd2FyZHMnKTsKKworICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgbW92ZUNvdW50OyBpKyspIHsKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIua2V5RG93
bigncmlnaHRBcnJvdycsIFsnc2hpZnRLZXknLCAnYWx0S2V5J10pOworICAgICAgICBhd2FpdCBV
SUhlbHBlci5lbnN1cmVQcmVzZW50YXRpb25VcGRhdGUoKTsKKyAgICAgICAgTWFya3VwLmR1bXAo
ZWRpdG9yLCBgQWZ0ZXIgZXh0ZW5kaW5nIHRvIHRoZSByaWdodCBieSB3b3JkICgke2kgKyAxfSlg
KTsKKyAgICB9CisKKyAgICBnZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbihlZGl0b3IsIGVkaXRv
ci5jaGlsZE5vZGVzLmxlbmd0aCk7CisgICAgTWFya3VwLmR1bXAoZWRpdG9yLCAnQmVmb3JlIGV4
dGVuZGluZyBiYWNrd2FyZHMnKTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbW92ZUNvdW50
OyBpKyspIHsKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIua2V5RG93bignbGVmdEFycm93JywgWydz
aGlmdEtleScsICdhbHRLZXknXSk7CisgICAgICAgIGF3YWl0IFVJSGVscGVyLmVuc3VyZVByZXNl
bnRhdGlvblVwZGF0ZSgpOworICAgICAgICBNYXJrdXAuZHVtcChlZGl0b3IsIGBBZnRlciBleHRl
bmRpbmcgdG8gdGhlIGxlZnQgYnkgd29yZCAoJHtpICsgMX0pYCk7CisgICAgfQorCisgICAgTWFy
a3VwLm5vdGlmeURvbmUoKTsKK30KKworb25sb2FkID0gcnVuVGVzdDsKKzwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJlZGl0b3IiIGNvbnRlbnRlZGl0YWJsZT4KKyAgICA8ZGl2
PmhlbGxvIHdvcmxkPC9kaXY+CisgICAgPGJyPgorICAgIDxkaXY+cmVkLCBncmVlbiwgJiBibHVl
LjwvZGl2PgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3Mvc2VsZWN0LW5vbi1lZGl0YWJsZS10ZXh0LXVzaW5nLWtl
eWJvYXJkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9z
ZWxlY3Qtbm9uLWVkaXRhYmxlLXRleHQtdXNpbmcta2V5Ym9hcmQtZXhwZWN0ZWQudHh0CmluZGV4
IGJlMjIzMmU1MjIxOWYxYjIzYWU4MmVjZmVkNTU2MTExODVhZjliMzIuLjdlODc3MGQ0Mjk0MWY1
ZjViMTRhMTRmZDdlY2EwNTdjZWM2MmY0MzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRp
bmcvc2VsZWN0aW9uL2lvcy9zZWxlY3Qtbm9uLWVkaXRhYmxlLXRleHQtdXNpbmcta2V5Ym9hcmQt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9zZWxl
Y3Qtbm9uLWVkaXRhYmxlLXRleHQtdXNpbmcta2V5Ym9hcmQtZXhwZWN0ZWQudHh0CkBAIC0xMSw3
ICsxMSw3IEBAIFByZXNzIFNoaWZ0ICsgbGVmdCBhcnJvdyB0byBzZWxlY3QgdGhlIHByZXZpb3Vz
IGNoYXJhY3RlcjoKIFBBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIkhl
ciIKIAogUHJlc3MgU2hpZnQgKyBPcHRpb24gKyByaWdodCBhcnJvdyB0byBzZWxlY3QgdG8gdGhl
IGVuZCBvZiB0aGUgd29yZDoKLVBBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkg
aXMgIkhlcmUncyAiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJI
ZXJlJ3MiCiAKIFByZXNzIFNoaWZ0ICsgT3B0aW9uICsgbGVmdCBhcnJvdyB0byBzZWxlY3QgdG8g
dGhlIGJlZ2lubmluZyBvZiB0aGUgd29yZDoKIFBBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRv
U3RyaW5nKCkgaXMgIlRoZSIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0
aW9uL2lvcy9zZWxlY3Qtbm9uLWVkaXRhYmxlLXRleHQtdXNpbmcta2V5Ym9hcmQuaHRtbCBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9zZWxlY3Qtbm9uLWVkaXRhYmxlLXRleHQt
dXNpbmcta2V5Ym9hcmQuaHRtbAppbmRleCBlMTQ4MTBhNjI3NWZhYjNjMTEwNDllZjc2YjQ0ZGVi
NzgyNzJhZjE5Li43ZDAzZTU0NmEzNmY0MzAyZGQ3Mzc3YzRjMmNkYWU5NjU3MDA5NTlkIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3Mvc2VsZWN0LW5vbi1lZGl0
YWJsZS10ZXh0LXVzaW5nLWtleWJvYXJkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9z
ZWxlY3Rpb24vaW9zL3NlbGVjdC1ub24tZWRpdGFibGUtdGV4dC11c2luZy1rZXlib2FyZC5odG1s
CkBAIC00OSw3ICs0OSw3IEBAIGFzeW5jIGZ1bmN0aW9uIHRlc3RFeHRlbmRTZWxlY3Rpb25Ub0Vu
ZE9mV29yZCgpCiAKICAgICBkZWJ1ZygiPGJyPlByZXNzIFNoaWZ0ICsgT3B0aW9uICsgcmlnaHQg
YXJyb3cgdG8gc2VsZWN0IHRvIHRoZSBlbmQgb2YgdGhlIHdvcmQ6Iik7CiAgICAgYXdhaXQgVUlI
ZWxwZXIuY2FsbEZ1bmN0aW9uQW5kV2FpdEZvckV2ZW50KCgpID0+IHdpbmRvdy50ZXN0UnVubmVy
ICYmIFVJSGVscGVyLmtleURvd24oInJpZ2h0QXJyb3ciLCBbInNoaWZ0S2V5IiwgImFsdEtleSJd
KSAsIGRvY3VtZW50LCAic2VsZWN0aW9uY2hhbmdlIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJIZXJlJ3MgIik7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIs
ICJIZXJlJ3MiKTsKIH0KIAogYXN5bmMgZnVuY3Rpb24gdGVzdEV4dGVuZFNlbGVjdGlvblRvQmVn
aW5uaW5nT2ZXb3JkKCkKQEAgLTc5LDYgKzc5LDEzIEBAIGFzeW5jIGZ1bmN0aW9uIHRlc3RFeHRl
bmRTZWxlY3Rpb25Ub0JlZ2lubmluZ09mTGluZSgpCiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJUaGUgbWlzZml0cy4iKTsKIH0K
IAorYXN5bmMgZnVuY3Rpb24gd2FpdEZvclNlY29uZGFyeVByZXNlbnRhdGlvblVwZGF0ZUlmTmVl
ZGVkKCkKK3sKKyAgICAvLyBUaGVyZSBtaWdodCBiZSBhIHNlY29uZGFyeSBzZWxlY3Rpb25jaGFu
Z2UgZXZlbnQgYWZ0ZXIgbW92aW5nIGJ5IHBhcmFncmFwaCBib3VuZGFyeS4gU2VlIHdlYmtpdC5v
cmcvYi8xOTk4NTEKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIGF3YWl0IFVJ
SGVscGVyLmVuc3VyZVByZXNlbnRhdGlvblVwZGF0ZSgpOworfQorCiBhc3luYyBmdW5jdGlvbiB0
ZXN0RXh0ZW5kU2VsZWN0aW9uVXAoKQogewogICAgIGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlv
bkFuZFdhaXRGb3JFdmVudCgoKSA9PiBzZWxlY3Rpb24uc2V0QmFzZUFuZEV4dGVudChwYXJhZ3Jh
cGhzWzFdLmZpcnN0Q2hpbGQsIDEsIHBhcmFncmFwaHNbMV0uZmlyc3RDaGlsZCwgMCksIGRvY3Vt
ZW50LCAic2VsZWN0aW9uY2hhbmdlIik7CkBAIC04Niw2ICs5Myw3IEBAIGFzeW5jIGZ1bmN0aW9u
IHRlc3RFeHRlbmRTZWxlY3Rpb25VcCgpCiAgICAgZGVidWcoIjxicj5QcmVzcyBTaGlmdCArIHVw
IGFycm93IHRvIHNlbGVjdCB1cDoiKTsKICAgICBhd2FpdCBVSUhlbHBlci5jYWxsRnVuY3Rpb25B
bmRXYWl0Rm9yRXZlbnQoKCkgPT4gd2luZG93LnRlc3RSdW5uZXIgJiYgVUlIZWxwZXIua2V5RG93
bigidXBBcnJvdyIsIFsic2hpZnRLZXkiXSkgLCBkb2N1bWVudCwgInNlbGVjdGlvbmNoYW5nZSIp
OwogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3Ry
aW5nKCkiLCAiSGVyZSdzIHRvIHRoZSBjcmF6eSBvbmVzLlxuXG5UIik7CisgICAgYXdhaXQgd2Fp
dEZvclNlY29uZGFyeVByZXNlbnRhdGlvblVwZGF0ZUlmTmVlZGVkKCk7CiB9CiAKIGFzeW5jIGZ1
bmN0aW9uIHRlc3RFeHRlbmRTZWxlY3Rpb25Eb3duKCkKQEAgLTk1LDYgKzEwMyw3IEBAIGFzeW5j
IGZ1bmN0aW9uIHRlc3RFeHRlbmRTZWxlY3Rpb25Eb3duKCkKICAgICBkZWJ1ZygiPGJyPlByZXNz
IFNoaWZ0ICsgZG93biBhcnJvdyB0byBzZWxlY3QgZG93bjoiKTsKICAgICBhd2FpdCBVSUhlbHBl
ci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gd2luZG93LnRlc3RSdW5uZXIgJiYg
VUlIZWxwZXIua2V5RG93bigiZG93bkFycm93IiwgWyJzaGlmdEtleSJdKSAsIGRvY3VtZW50LCAi
c2VsZWN0aW9uY2hhbmdlIik7CiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJUaGUgbWlzZml0cy5cblxuVCIpOworICAgIGF3YWl0
IHdhaXRGb3JTZWNvbmRhcnlQcmVzZW50YXRpb25VcGRhdGVJZk5lZWRlZCgpOwogfQogCiBhc3lu
YyBmdW5jdGlvbiB0ZXN0RXh0ZW5kU2VsZWN0aW9uVG9FbmRPZlBhcmFncmFwaCgpCkBAIC0xMDcs
NiArMTE2LDggQEAgYXN5bmMgZnVuY3Rpb24gdGVzdEV4dGVuZFNlbGVjdGlvblRvRW5kT2ZQYXJh
Z3JhcGgoKQogICAgIGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgo
KSA9PiB3aW5kb3cudGVzdFJ1bm5lciAmJiBVSUhlbHBlci5rZXlEb3duKCJkb3duQXJyb3ciLCBb
InNoaWZ0S2V5IiwgImFsdEtleSJdKSAsIGRvY3VtZW50LCAic2VsZWN0aW9uY2hhbmdlIik7CiAg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmco
KSIsICJIZXJlJ3MgdG8gdGhlIGNyYXp5IG9uZXMuIik7CiAKKyAgICBhd2FpdCB3YWl0Rm9yU2Vj
b25kYXJ5UHJlc2VudGF0aW9uVXBkYXRlSWZOZWVkZWQoKTsKKwogICAgIHRvZ2dsZU9ubHlTaG93
VGVzdENvbnRhaW5lcigpOwogfQogCkBAIC0xMTgsOCArMTI5LDExIEBAIGFzeW5jIGZ1bmN0aW9u
IHRlc3RFeHRlbmRTZWxlY3Rpb25Ub0JlZ2lubmluZ09mUGFyYWdyYXBoKCkKIAogICAgIGRlYnVn
KCI8YnI+UHJlc3MgU2hpZnQgKyBPcHRpb24gKyB1cCBhcnJvdyB0byBzZWxlY3QgdG8gdGhlIGJl
Z2lubmluZyBvZiB0aGUgcGFyYWdyYXBoOiIpOwogICAgIGF3YWl0IFVJSGVscGVyLmNhbGxGdW5j
dGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiB3aW5kb3cudGVzdFJ1bm5lciAmJiBVSUhlbHBlci5r
ZXlEb3duKCJ1cEFycm93IiwgWyJzaGlmdEtleSIsICJhbHRLZXkiXSkgLCBkb2N1bWVudCwgInNl
bGVjdGlvbmNoYW5nZSIpOworCiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJUaGUgcmViZWxzLiIpOwogCisgICAgYXdhaXQgd2Fp
dEZvclNlY29uZGFyeVByZXNlbnRhdGlvblVwZGF0ZUlmTmVlZGVkKCk7CisKICAgICB0b2dnbGVP
bmx5U2hvd1Rlc3RDb250YWluZXIoKTsKIH0KIApAQCAtMTMzLDYgKzE0Nyw4IEBAIGFzeW5jIGZ1
bmN0aW9uIHRlc3RFeHRlbmRTZWxlY3Rpb25Ub0VuZE9mRG9jdW1lbnQoKQogICAgIGF3YWl0IFVJ
SGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiB3aW5kb3cudGVzdFJ1bm5l
ciAmJiBVSUhlbHBlci5rZXlEb3duKCJkb3duQXJyb3ciLCBbInNoaWZ0S2V5IiwgImN0cmxLZXki
XSkgLCBkb2N1bWVudCwgInNlbGVjdGlvbmNoYW5nZSIpOwogICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiSGVyZSdzIHRvIHRoZSBj
cmF6eSBvbmVzLlxuXG5UaGUgbWlzZml0cy5cblxuVGhlIHJlYmVscy4iKTsKIAorICAgIGF3YWl0
IHdhaXRGb3JTZWNvbmRhcnlQcmVzZW50YXRpb25VcGRhdGVJZk5lZWRlZCgpOworCiAgICAgdG9n
Z2xlT25seVNob3dUZXN0Q29udGFpbmVyKCk7CiB9CiAKQEAgLTE0Niw2ICsxNjIsOCBAQCBhc3lu
YyBmdW5jdGlvbiB0ZXN0RXh0ZW5kU2VsZWN0aW9uVG9CZWdpbm5pbmdPZkRvY3VtZW50KCkKICAg
ICBhd2FpdCBVSUhlbHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gd2luZG93
LnRlc3RSdW5uZXIgJiYgVUlIZWxwZXIua2V5RG93bigidXBBcnJvdyIsIFsic2hpZnRLZXkiLCAi
Y3RybEtleSJdKSAsIGRvY3VtZW50LCAic2VsZWN0aW9uY2hhbmdlIik7CiAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJIZXJlJ3Mg
dG8gdGhlIGNyYXp5IG9uZXMuXG5cblRoZSBtaXNmaXRzLiIpOwogCisgICAgYXdhaXQgd2FpdEZv
clNlY29uZGFyeVByZXNlbnRhdGlvblVwZGF0ZUlmTmVlZGVkKCk7CisKICAgICB0b2dnbGVPbmx5
U2hvd1Rlc3RDb250YWluZXIoKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378279</attachid>
            <date>2019-09-06 22:48:31 -0700</date>
            <delta_ts>2019-09-06 23:12:37 -0700</delta_ts>
            <desc>Fixed non-iOS builds</desc>
            <filename>bug-201575-20190906224830.patch</filename>
            <type>text/plain</type>
            <size>43294</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0OTYwNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE5LTA5LTA2ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIE9wdGlvbiArIGFycm93IG1vdmVz
IGNhcmV0IHBhc3Qgd2hpdGVzcGFjZSBvbiBpT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTU3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoZSBidWcgd2FzIGNhdXNlZCBieSBmaW5kTmV4dFdvcmRG
cm9tSW5kZXggb24gaU9TIGJlaGF2aW5nIGRpZmZlcmVudGx5IGZyb20gbWFjT1MgYW5kIFVJS2l0
CisgICAgICAgIGJ5IHNraXBwaW5nIHRyYWlsaW5nIHdoaXRlc3BhY2UgYWZ0ZXIgYSB3b3JkIHdo
ZW4gbW92aW5nIGZvcndhcmQgYW5kIG5vdCBza2lwcGluZyBsZWFkaW5nCisgICAgICAgIHdoaXRl
c3BhY2Ugd2hlbiBtb3ZpbmcgYmFja3dhcmQuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1
Y2VzIGEgbmV3IG1vZGUgKFN0b3BBZnRlcldvcmQpIG9mIGZpbmROZXh0V29yZEZyb21JbmRleCBp
biBpT1MgdGhhdAorICAgICAgICBiZXR0ZXIgbWF0Y2hlcyB0aGUgYmVoYXZpb3Igb2YgZmluZE5l
eHRXb3JkRnJvbUluZGV4IG9uIG1hY09TIGFuZCBVSUtpdCwgYW5kIHVzZSBpdCBpbgorICAgICAg
ICB2YXJpb3VzIG1vZGlmeSogZnVuY3Rpb25zIG9mIEZyYW1lU2VsZWN0aW9uIHdoZW4gdGhlIHNl
bGVjdGlvbiB1cGRhdGUgaXMgdHJpZ2dlcmVkIGJ5IHVzZXIuCisKKyAgICAgICAgQWxsIG90aGVy
IGNhbGwgc2l0ZXMgYXMgd2VsbCBhcyB3aGVuIG1vZGlmeSogZnVuY3Rpb25zIGFyZSBpbnZvbGVk
IGZyb20gc2NyaXB0cywKKyAgICAgICAgd2UgdXNlIHRoZSBsZWdhY3kgbW9kZSAoTGVnYWN5U3Rv
cEJlZm9yZVdvcmQpIHRvIG1pbmltaXplIHRoZSBjb21wYXRpYmlsaXR5IHJpc2sgZm9yIG5vdy4K
KworICAgICAgICBUZXN0OiBlZGl0aW5nL3NlbGVjdGlvbi9pb3MvbW92ZS1ieS13b3JkLXdpdGgt
a2V5Ym9hcmQuaHRtbAorCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjp1cGRhdGVNYXJrZXJzRm9yV29yZHNBZmZlY3RlZEJ5RWRpdGluZyk6
CisgICAgICAgICogZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpuZXh0V29yZFdoaXRlc3BhY2VNb2RlSW5JT1MpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVT
ZWxlY3Rpb246Om5leHRXb3JkUG9zaXRpb25Gb3JQbGF0Zm9ybSk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5RXh0ZW5kaW5nUmlnaHQpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4dGVuZGluZ0ZvcndhcmQpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVTZWxlY3Rpb246Om1vZGlmeU1vdmluZ1JpZ2h0KToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lU2VsZWN0aW9uOjptb2RpZnlNb3ZpbmdGb3J3YXJkKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeHRlbmRpbmdMZWZ0KToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeHRlbmRpbmdCYWNrd2FyZCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW92aW5nTGVmdCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW92aW5nQmFja3dhcmQpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVTZWxlY3Rpb246Om1vZGlmeSk6CisgICAgICAgICogZWRpdGluZy9GcmFtZVNl
bGVjdGlvbi5oOgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNlYXJjaEJ1ZmZlcjo6aXNXb3JkU3RhcnRNYXRjaCBjb25zdCk6CisgICAgICAg
ICogZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJldmlvdXNX
b3JkUG9zaXRpb25Cb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjpwcmV2aW91c1dvcmRQb3Np
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpuZXh0V29yZFBvc2l0aW9uQm91bmRhcnkpOgorICAg
ICAgICAoV2ViQ29yZTo6bmV4dFdvcmRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpuZXh0
V29yZEJvdW5kYXJ5SW5EaXJlY3Rpb24pOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVVuaXRz
Lmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Qm91bmRhcmllcy5oOgorICAgICAgICAq
IHBsYXRmb3JtL3RleHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tOgorICAgICAgICAoV2ViQ29yZTo6
ZmluZE5leHRXb3JkRnJvbUluZGV4KTogQWRkZWQgYSBuZXcgbW9kZS4KKwogMjAxOS0wOS0wNiAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBJbmNvcnJl
Y3Qgc2VsZWN0aW9uIHJlY3QgcmV2ZWFsZWQgYWZ0ZXIgcGFzdGluZyBpbWFnZXMgaW4gYSBjb250
ZW50ZWRpdGFibGUgZWxlbWVudApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkocmV2
aXNpb24gMjQ5NjA3KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMDI2LDcgKzMwMjYsNyBAQCB2b2lkIEVkaXRvcjo6dXBkYXRlTWFya2Vy
c0ZvcldvcmRzQWZmZWN0CiAgICAgLy8gSWYgZG9Ob3RSZW1vdmVJZlNlbGVjdGlvbkF0V29yZEJv
dW5kYXJ5IGlzIHRydWUsIGFuZCBmaXJzdCB3b3JkIGVuZHMgYXQgdGhlIHN0YXJ0IG9mIHNlbGVj
dGlvbiwKICAgICAvLyB3ZSBjaG9vc2UgbmV4dCB3b3JkIGFzIHRoZSBmaXJzdCB3b3JkLgogICAg
IGlmIChkb05vdFJlbW92ZUlmU2VsZWN0aW9uQXRXb3JkQm91bmRhcnkgJiYgZW5kT2ZGaXJzdFdv
cmQgPT0gc3RhcnRPZlNlbGVjdGlvbikgewotICAgICAgICBzdGFydE9mRmlyc3RXb3JkID0gbmV4
dFdvcmRQb3NpdGlvbihzdGFydE9mRmlyc3RXb3JkKTsKKyAgICAgICAgc3RhcnRPZkZpcnN0V29y
ZCA9IG5leHRXb3JkUG9zaXRpb24oc3RhcnRPZkZpcnN0V29yZCwgTmV4dFdvcmRNb2RlSW5JT1M6
OkxlZ2FjeVN0b3BCZWZvcmVXb3JkKTsKICAgICAgICAgZW5kT2ZGaXJzdFdvcmQgPSBlbmRPZldv
cmQoc3RhcnRPZkZpcnN0V29yZCwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KTsKICAgICAgICAgaWYg
KHN0YXJ0T2ZGaXJzdFdvcmQgPT0gZW5kT2ZTZWxlY3Rpb24pCiAgICAgICAgICAgICByZXR1cm47
CkBAIC0zMDM1LDcgKzMwMzUsNyBAQCB2b2lkIEVkaXRvcjo6dXBkYXRlTWFya2Vyc0ZvcldvcmRz
QWZmZWN0CiAgICAgLy8gSWYgZG9Ob3RSZW1vdmVJZlNlbGVjdGlvbkF0V29yZEJvdW5kYXJ5IGlz
IHRydWUsIGFuZCBsYXN0IHdvcmQgYmVnaW5zIGF0IHRoZSBlbmQgb2Ygc2VsZWN0aW9uLAogICAg
IC8vIHdlIGNob29zZSBwcmV2aW91cyB3b3JkIGFzIHRoZSBsYXN0IHdvcmQuCiAgICAgaWYgKGRv
Tm90UmVtb3ZlSWZTZWxlY3Rpb25BdFdvcmRCb3VuZGFyeSAmJiBzdGFydE9mTGFzdFdvcmQgPT0g
ZW5kT2ZTZWxlY3Rpb24pIHsKLSAgICAgICAgc3RhcnRPZkxhc3RXb3JkID0gcHJldmlvdXNXb3Jk
UG9zaXRpb24oc3RhcnRPZkxhc3RXb3JkKTsKKyAgICAgICAgc3RhcnRPZkxhc3RXb3JkID0gcHJl
dmlvdXNXb3JkUG9zaXRpb24oc3RhcnRPZkxhc3RXb3JkLCBOZXh0V29yZE1vZGVJbklPUzo6TGVn
YWN5U3RvcEJlZm9yZVdvcmQpOwogICAgICAgICBlbmRPZkxhc3RXb3JkID0gZW5kT2ZXb3JkKHN0
YXJ0T2ZMYXN0V29yZCwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KTsKICAgICAgICAgaWYgKGVuZE9m
TGFzdFdvcmQgPT0gc3RhcnRPZlNlbGVjdGlvbikKICAgICAgICAgICAgIHJldHVybjsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCShyZXZpc2lvbiAyNDk2
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzExLDIwICs3MTEsMjYgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0
aW9uOjplbmRGb3JQbAogICAgIHJldHVybiBwb3NpdGlvbkZvclBsYXRmb3JtKGZhbHNlKTsKIH0K
IAotVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjpuZXh0V29yZFBvc2l0aW9uRm9yUGxh
dGZvcm0oY29uc3QgVmlzaWJsZVBvc2l0aW9uICZvcmlnaW5hbFBvc2l0aW9uKQorc3RhdGljIE5l
eHRXb3JkTW9kZUluSU9TIG5leHRXb3JkV2hpdGVzcGFjZU1vZGVJbklPUyhFVXNlclRyaWdnZXJl
ZCB1c2VyVHJpZ2dlcmVkKQogewotICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkFmdGVyQ3Vy
cmVudFdvcmQgPSBuZXh0V29yZFBvc2l0aW9uKG9yaWdpbmFsUG9zaXRpb24pOworICAgIHJldHVy
biB1c2VyVHJpZ2dlcmVkID09IFVzZXJUcmlnZ2VyZWQgPyBOZXh0V29yZE1vZGVJbklPUzo6U3Rv
cEFmdGVyV29yZCA6IE5leHRXb3JkTW9kZUluSU9TOjpMZWdhY3lTdG9wQmVmb3JlV29yZDsKK30K
KworVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjpuZXh0V29yZFBvc2l0aW9uRm9yUGxh
dGZvcm0oY29uc3QgVmlzaWJsZVBvc2l0aW9uICZvcmlnaW5hbFBvc2l0aW9uLCBFVXNlclRyaWdn
ZXJlZCB1c2VyVHJpZ2dlcmVkKQoreworICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkFmdGVy
Q3VycmVudFdvcmQgPSBuZXh0V29yZFBvc2l0aW9uKG9yaWdpbmFsUG9zaXRpb24sIG5leHRXb3Jk
V2hpdGVzcGFjZU1vZGVJbklPUyh1c2VyVHJpZ2dlcmVkKSk7CiAKICAgICBpZiAobV9mcmFtZSAm
JiBtX2ZyYW1lLT5lZGl0b3IoKS5iZWhhdmlvcigpLnNob3VsZFNraXBTcGFjZVdoZW5Nb3ZpbmdS
aWdodCgpKSB7CiAgICAgICAgIC8vIEluIG9yZGVyIHRvIHNraXAgc3BhY2VzIHdoZW4gbW92aW5n
IHJpZ2h0LCB3ZSBhZHZhbmNlIG9uZQogICAgICAgICAvLyB3b3JkIGZ1cnRoZXIgYW5kIHRoZW4g
bW92ZSBvbmUgd29yZCBiYWNrLiBHaXZlbiB0aGUKICAgICAgICAgLy8gc2VtYW50aWNzIG9mIHBy
ZXZpb3VzV29yZFBvc2l0aW9uKCkgdGhpcyB3aWxsIHB1dCB1cyBhdCB0aGUKICAgICAgICAgLy8g
YmVnaW5uaW5nIG9mIHRoZSB3b3JkIGZvbGxvd2luZy4KLSAgICAgICAgVmlzaWJsZVBvc2l0aW9u
IHBvc2l0aW9uQWZ0ZXJTcGFjaW5nQW5kRm9sbG93aW5nV29yZCA9IG5leHRXb3JkUG9zaXRpb24o
cG9zaXRpb25BZnRlckN1cnJlbnRXb3JkKTsKKyAgICAgICAgYXV0byB3aGl0ZXNwYWNlTW9kZSA9
IG5leHRXb3JkV2hpdGVzcGFjZU1vZGVJbklPUyh1c2VyVHJpZ2dlcmVkKTsKKyAgICAgICAgVmlz
aWJsZVBvc2l0aW9uIHBvc2l0aW9uQWZ0ZXJTcGFjaW5nQW5kRm9sbG93aW5nV29yZCA9IG5leHRX
b3JkUG9zaXRpb24ocG9zaXRpb25BZnRlckN1cnJlbnRXb3JkLCB3aGl0ZXNwYWNlTW9kZSk7CiAg
ICAgICAgIGlmIChwb3NpdGlvbkFmdGVyU3BhY2luZ0FuZEZvbGxvd2luZ1dvcmQgIT0gcG9zaXRp
b25BZnRlckN1cnJlbnRXb3JkKQotICAgICAgICAgICAgcG9zaXRpb25BZnRlckN1cnJlbnRXb3Jk
ID0gcHJldmlvdXNXb3JkUG9zaXRpb24ocG9zaXRpb25BZnRlclNwYWNpbmdBbmRGb2xsb3dpbmdX
b3JkKTsKKyAgICAgICAgICAgIHBvc2l0aW9uQWZ0ZXJDdXJyZW50V29yZCA9IHByZXZpb3VzV29y
ZFBvc2l0aW9uKHBvc2l0aW9uQWZ0ZXJTcGFjaW5nQW5kRm9sbG93aW5nV29yZCwgd2hpdGVzcGFj
ZU1vZGUpOwogCi0gICAgICAgIGJvb2wgbW92aW5nQmFja3dhcmRzTW92ZWRQb3NpdGlvblRvU3Rh
cnRPZkN1cnJlbnRXb3JkID0gcG9zaXRpb25BZnRlckN1cnJlbnRXb3JkID09IHByZXZpb3VzV29y
ZFBvc2l0aW9uKG5leHRXb3JkUG9zaXRpb24ob3JpZ2luYWxQb3NpdGlvbikpOworICAgICAgICBi
b29sIG1vdmluZ0JhY2t3YXJkc01vdmVkUG9zaXRpb25Ub1N0YXJ0T2ZDdXJyZW50V29yZCA9IHBv
c2l0aW9uQWZ0ZXJDdXJyZW50V29yZCA9PSBwcmV2aW91c1dvcmRQb3NpdGlvbihuZXh0V29yZFBv
c2l0aW9uKG9yaWdpbmFsUG9zaXRpb24sIHdoaXRlc3BhY2VNb2RlKSwgd2hpdGVzcGFjZU1vZGUp
OwogICAgICAgICBpZiAobW92aW5nQmFja3dhcmRzTW92ZWRQb3NpdGlvblRvU3RhcnRPZkN1cnJl
bnRXb3JkKQogICAgICAgICAgICAgcG9zaXRpb25BZnRlckN1cnJlbnRXb3JkID0gcG9zaXRpb25B
ZnRlclNwYWNpbmdBbmRGb2xsb3dpbmdXb3JkOwogICAgIH0KQEAgLTczOSw3ICs3NDUsNyBAQCBz
dGF0aWMgdm9pZCBhZGp1c3RQb3NpdGlvbkZvclVzZXJTZWxlY3RBCiB9CiAjZW5kaWYKIAotVmlz
aWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeHRlbmRpbmdSaWdodChUZXh0R3Jh
bnVsYXJpdHkgZ3JhbnVsYXJpdHkpCitWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1v
ZGlmeUV4dGVuZGluZ1JpZ2h0KFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgRVVzZXJUcmln
Z2VyZWQgdXNlclRyaWdnZXJlZCkKIHsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zKG1fc2VsZWN0
aW9uLmV4dGVudCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKTsKIApAQCAtNzU3LDE1ICs3NjMs
MTUgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeAogICAgICAgICBi
cmVhazsKICAgICBjYXNlIFdvcmRHcmFudWxhcml0eToKICAgICAgICAgaWYgKGRpcmVjdGlvbk9m
RW5jbG9zaW5nQmxvY2soKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpCi0gICAgICAgICAgICBwb3Mg
PSBuZXh0V29yZFBvc2l0aW9uRm9yUGxhdGZvcm0ocG9zKTsKKyAgICAgICAgICAgIHBvcyA9IG5l
eHRXb3JkUG9zaXRpb25Gb3JQbGF0Zm9ybShwb3MsIHVzZXJUcmlnZ2VyZWQpOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICBwb3MgPSBwcmV2aW91c1dvcmRQb3NpdGlvbihwb3MpOworICAgICAg
ICAgICAgcG9zID0gcHJldmlvdXNXb3JkUG9zaXRpb24ocG9zLCBuZXh0V29yZFdoaXRlc3BhY2VN
b2RlSW5JT1ModXNlclRyaWdnZXJlZCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIExpbmVC
b3VuZGFyeToKICAgICAgICAgaWYgKGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBUZXh0
RGlyZWN0aW9uOjpMVFIpCi0gICAgICAgICAgICBwb3MgPSBtb2RpZnlFeHRlbmRpbmdGb3J3YXJk
KGdyYW51bGFyaXR5KTsKKyAgICAgICAgICAgIHBvcyA9IG1vZGlmeUV4dGVuZGluZ0ZvcndhcmQo
Z3JhbnVsYXJpdHksIHVzZXJUcmlnZ2VyZWQpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBw
b3MgPSBtb2RpZnlFeHRlbmRpbmdCYWNrd2FyZChncmFudWxhcml0eSk7CisgICAgICAgICAgICBw
b3MgPSBtb2RpZnlFeHRlbmRpbmdCYWNrd2FyZChncmFudWxhcml0eSwgdXNlclRyaWdnZXJlZCk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0eToKICAgICBjYXNl
IExpbmVHcmFudWxhcml0eToKQEAgLTc3NCw3ICs3ODAsNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJh
bWVTZWxlY3Rpb246Om1vZGlmeUV4CiAgICAgY2FzZSBQYXJhZ3JhcGhCb3VuZGFyeToKICAgICBj
YXNlIERvY3VtZW50Qm91bmRhcnk6CiAgICAgICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgYWxsIG9m
IHRoZSBhYm92ZT8KLSAgICAgICAgcG9zID0gbW9kaWZ5RXh0ZW5kaW5nRm9yd2FyZChncmFudWxh
cml0eSk7CisgICAgICAgIHBvcyA9IG1vZGlmeUV4dGVuZGluZ0ZvcndhcmQoZ3JhbnVsYXJpdHks
IHVzZXJUcmlnZ2VyZWQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIERvY3VtZW50R3JhbnVs
YXJpdHk6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNzg2LDcgKzc5Miw3IEBA
IFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5RXgKICAgICByZXR1cm4gcG9z
OwogfQogCi1WaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4dGVuZGluZ0Zv
cndhcmQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQorVmlzaWJsZVBvc2l0aW9uIEZyYW1l
U2VsZWN0aW9uOjptb2RpZnlFeHRlbmRpbmdGb3J3YXJkKFRleHRHcmFudWxhcml0eSBncmFudWxh
cml0eSwgRVVzZXJUcmlnZ2VyZWQgdXNlclRyaWdnZXJlZCkKIHsKICAgICBWaXNpYmxlUG9zaXRp
b24gcG9zKG1fc2VsZWN0aW9uLmV4dGVudCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKTsKICAg
ICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7CkBAIC03OTQsNyArODAwLDcgQEAgVmlzaWJsZVBvc2l0
aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeAogICAgICAgICBwb3MgPSBwb3MubmV4dChDYW5u
b3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV29yZEdy
YW51bGFyaXR5OgotICAgICAgICBwb3MgPSBuZXh0V29yZFBvc2l0aW9uRm9yUGxhdGZvcm0ocG9z
KTsKKyAgICAgICAgcG9zID0gbmV4dFdvcmRQb3NpdGlvbkZvclBsYXRmb3JtKHBvcywgdXNlclRy
aWdnZXJlZCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0eToK
ICAgICAgICAgcG9zID0gbmV4dFNlbnRlbmNlUG9zaXRpb24ocG9zKTsKQEAgLTgzMSw3ICs4Mzcs
NyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4CiAgICAgcmV0dXJu
IHBvczsKIH0KIAotVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNb3ZpbmdS
aWdodChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wqIHJlYWNoZWRCb3VuZGFyeSkK
K1Zpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW92aW5nUmlnaHQoVGV4dEdy
YW51bGFyaXR5IGdyYW51bGFyaXR5LCBFVXNlclRyaWdnZXJlZCB1c2VyVHJpZ2dlcmVkLCBib29s
KiByZWFjaGVkQm91bmRhcnkpCiB7CiAgICAgaWYgKHJlYWNoZWRCb3VuZGFyeSkKICAgICAgICAg
KnJlYWNoZWRCb3VuZGFyeSA9IGZhbHNlOwpAQCAtODYxLDcgKzg2Nyw3IEBAIFZpc2libGVQb3Np
dGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW8KICAgICBjYXNlIFBhcmFncmFwaEJvdW5kYXJ5
OgogICAgIGNhc2UgRG9jdW1lbnRCb3VuZGFyeToKICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVu
dCBhbGwgb2YgdGhlIGFib3ZlLgotICAgICAgICBwb3MgPSBtb2RpZnlNb3ZpbmdGb3J3YXJkKGdy
YW51bGFyaXR5LCByZWFjaGVkQm91bmRhcnkpOworICAgICAgICBwb3MgPSBtb2RpZnlNb3ZpbmdG
b3J3YXJkKGdyYW51bGFyaXR5LCB1c2VyVHJpZ2dlcmVkLCByZWFjaGVkQm91bmRhcnkpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIExpbmVCb3VuZGFyeToKICAgICAgICAgcG9zID0gcmlnaHRC
b3VuZGFyeU9mTGluZShzdGFydEZvclBsYXRmb3JtKCksIGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxv
Y2soKSwgcmVhY2hlZEJvdW5kYXJ5KTsKQEAgLTg3Myw3ICs4NzksNyBAQCBWaXNpYmxlUG9zaXRp
b24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeU1vCiAgICAgcmV0dXJuIHBvczsKIH0KIAotVmlzaWJs
ZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNb3ZpbmdGb3J3YXJkKFRleHRHcmFudWxh
cml0eSBncmFudWxhcml0eSwgYm9vbCogcmVhY2hlZEJvdW5kYXJ5KQorVmlzaWJsZVBvc2l0aW9u
IEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNb3ZpbmdGb3J3YXJkKFRleHRHcmFudWxhcml0eSBncmFu
dWxhcml0eSwgRVVzZXJUcmlnZ2VyZWQgdXNlclRyaWdnZXJlZCwgYm9vbCogcmVhY2hlZEJvdW5k
YXJ5KQogewogICAgIGlmIChyZWFjaGVkQm91bmRhcnkpCiAgICAgICAgICpyZWFjaGVkQm91bmRh
cnkgPSBmYWxzZTsKQEAgLTkwMyw3ICs5MDksNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxl
Y3Rpb246Om1vZGlmeU1vCiAgICAgICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9zZWxl
Y3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpLm5leHQoQ2Fubm90Q3Jvc3NF
ZGl0aW5nQm91bmRhcnksIHJlYWNoZWRCb3VuZGFyeSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgV29yZEdyYW51bGFyaXR5OgotICAgICAgICBwb3MgPSBuZXh0V29yZFBvc2l0aW9uRm9yUGxh
dGZvcm0oY3VycmVudFBvc2l0aW9uKTsKKyAgICAgICAgcG9zID0gbmV4dFdvcmRQb3NpdGlvbkZv
clBsYXRmb3JtKGN1cnJlbnRQb3NpdGlvbiwgdXNlclRyaWdnZXJlZCk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0eToKICAgICAgICAgcG9zID0gbmV4dFNlbnRl
bmNlUG9zaXRpb24oY3VycmVudFBvc2l0aW9uKTsKQEAgLTk1Niw3ICs5NjIsNyBAQCBWaXNpYmxl
UG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeU1vCiAgICAgcmV0dXJuIHBvczsKIH0KIAot
VmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeHRlbmRpbmdMZWZ0KFRleHRH
cmFudWxhcml0eSBncmFudWxhcml0eSkKK1Zpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6
bW9kaWZ5RXh0ZW5kaW5nTGVmdChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIEVVc2VyVHJp
Z2dlcmVkIHVzZXJUcmlnZ2VyZWQpCiB7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvcyhtX3NlbGVj
dGlvbi5leHRlbnQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSk7CiAKQEAgLTk3NCwxNSArOTgw
LDE1IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5RXgKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6CiAgICAgICAgIGlmIChkaXJlY3Rpb25P
ZkVuY2xvc2luZ0Jsb2NrKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKQotICAgICAgICAgICAgcG9z
ID0gcHJldmlvdXNXb3JkUG9zaXRpb24ocG9zKTsKKyAgICAgICAgICAgIHBvcyA9IHByZXZpb3Vz
V29yZFBvc2l0aW9uKHBvcywgbmV4dFdvcmRXaGl0ZXNwYWNlTW9kZUluSU9TKHVzZXJUcmlnZ2Vy
ZWQpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcG9zID0gbmV4dFdvcmRQb3NpdGlvbkZv
clBsYXRmb3JtKHBvcyk7CisgICAgICAgICAgICBwb3MgPSBuZXh0V29yZFBvc2l0aW9uRm9yUGxh
dGZvcm0ocG9zLCB1c2VyVHJpZ2dlcmVkKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBMaW5l
Qm91bmRhcnk6CiAgICAgICAgIGlmIChkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gVGV4
dERpcmVjdGlvbjo6TFRSKQotICAgICAgICAgICAgcG9zID0gbW9kaWZ5RXh0ZW5kaW5nQmFja3dh
cmQoZ3JhbnVsYXJpdHkpOworICAgICAgICAgICAgcG9zID0gbW9kaWZ5RXh0ZW5kaW5nQmFja3dh
cmQoZ3JhbnVsYXJpdHksIHVzZXJUcmlnZ2VyZWQpOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBwb3MgPSBtb2RpZnlFeHRlbmRpbmdGb3J3YXJkKGdyYW51bGFyaXR5KTsKKyAgICAgICAgICAg
IHBvcyA9IG1vZGlmeUV4dGVuZGluZ0ZvcndhcmQoZ3JhbnVsYXJpdHksIHVzZXJUcmlnZ2VyZWQp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6CiAgICAgY2Fz
ZSBMaW5lR3JhbnVsYXJpdHk6CkBAIC05OTAsNyArOTk2LDcgQEAgVmlzaWJsZVBvc2l0aW9uIEZy
YW1lU2VsZWN0aW9uOjptb2RpZnlFeAogICAgIGNhc2UgU2VudGVuY2VCb3VuZGFyeToKICAgICBj
YXNlIFBhcmFncmFwaEJvdW5kYXJ5OgogICAgIGNhc2UgRG9jdW1lbnRCb3VuZGFyeToKLSAgICAg
ICAgcG9zID0gbW9kaWZ5RXh0ZW5kaW5nQmFja3dhcmQoZ3JhbnVsYXJpdHkpOworICAgICAgICBw
b3MgPSBtb2RpZnlFeHRlbmRpbmdCYWNrd2FyZChncmFudWxhcml0eSwgdXNlclRyaWdnZXJlZCk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRG9jdW1lbnRHcmFudWxhcml0eToKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xMDAyLDcgKzEwMDgsNyBAQCBWaXNpYmxlUG9zaXRp
b24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4CiAgICAgcmV0dXJuIHBvczsKIH0KICAgICAgICAK
LVZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5RXh0ZW5kaW5nQmFja3dhcmQo
VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQorVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0
aW9uOjptb2RpZnlFeHRlbmRpbmdCYWNrd2FyZChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHks
IEVVc2VyVHJpZ2dlcmVkIHVzZXJUcmlnZ2VyZWQpCiB7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBv
cyhtX3NlbGVjdGlvbi5leHRlbnQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSk7CiAKQEAgLTEw
MTUsNyArMTAyMSw3IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5RXgK
ICAgICAgICAgcG9zID0gcG9zLnByZXZpb3VzKENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6Ci0gICAgICAgIHBvcyA9
IHByZXZpb3VzV29yZFBvc2l0aW9uKHBvcyk7CisgICAgICAgIHBvcyA9IHByZXZpb3VzV29yZFBv
c2l0aW9uKHBvcywgbmV4dFdvcmRXaGl0ZXNwYWNlTW9kZUluSU9TKHVzZXJUcmlnZ2VyZWQpKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5OgogICAgICAgICBw
b3MgPSBwcmV2aW91c1NlbnRlbmNlUG9zaXRpb24ocG9zKTsKQEAgLTEwNTIsNyArMTA1OCw3IEBA
IFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5RXgKICAgICByZXR1cm4gcG9z
OwogfQogCi1WaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeU1vdmluZ0xlZnQo
VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sKiByZWFjaGVkQm91bmRhcnkpCitWaXNp
YmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeU1vdmluZ0xlZnQoVGV4dEdyYW51bGFy
aXR5IGdyYW51bGFyaXR5LCBFVXNlclRyaWdnZXJlZCB1c2VyVHJpZ2dlcmVkLCBib29sKiByZWFj
aGVkQm91bmRhcnkpCiB7CiAgICAgaWYgKHJlYWNoZWRCb3VuZGFyeSkKICAgICAgICAgKnJlYWNo
ZWRCb3VuZGFyeSA9IGZhbHNlOwpAQCAtMTA4Miw3ICsxMDg4LDcgQEAgVmlzaWJsZVBvc2l0aW9u
IEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNbwogICAgIGNhc2UgUGFyYWdyYXBoQm91bmRhcnk6CiAg
ICAgY2FzZSBEb2N1bWVudEJvdW5kYXJ5OgogICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGFs
bCBvZiB0aGUgYWJvdmUuCi0gICAgICAgIHBvcyA9IG1vZGlmeU1vdmluZ0JhY2t3YXJkKGdyYW51
bGFyaXR5LCByZWFjaGVkQm91bmRhcnkpOworICAgICAgICBwb3MgPSBtb2RpZnlNb3ZpbmdCYWNr
d2FyZChncmFudWxhcml0eSwgdXNlclRyaWdnZXJlZCwgcmVhY2hlZEJvdW5kYXJ5KTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBMaW5lQm91bmRhcnk6CiAgICAgICAgIHBvcyA9IGxlZnRCb3Vu
ZGFyeU9mTGluZShzdGFydEZvclBsYXRmb3JtKCksIGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2so
KSwgcmVhY2hlZEJvdW5kYXJ5KTsKQEAgLTEwOTQsNyArMTEwMCw3IEBAIFZpc2libGVQb3NpdGlv
biBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW8KICAgICByZXR1cm4gcG9zOwogfQogCi1WaXNpYmxl
UG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeU1vdmluZ0JhY2t3YXJkKFRleHRHcmFudWxh
cml0eSBncmFudWxhcml0eSwgYm9vbCogcmVhY2hlZEJvdW5kYXJ5KQorVmlzaWJsZVBvc2l0aW9u
IEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNb3ZpbmdCYWNrd2FyZChUZXh0R3JhbnVsYXJpdHkgZ3Jh
bnVsYXJpdHksIEVVc2VyVHJpZ2dlcmVkIHVzZXJUcmlnZ2VyZWQsIGJvb2wqIHJlYWNoZWRCb3Vu
ZGFyeSkKIHsKICAgICBpZiAocmVhY2hlZEJvdW5kYXJ5KQogICAgICAgICAqcmVhY2hlZEJvdW5k
YXJ5ID0gZmFsc2U7CkBAIC0xMTIzLDcgKzExMjksNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVT
ZWxlY3Rpb246Om1vZGlmeU1vCiAgICAgICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9z
ZWxlY3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpLnByZXZpb3VzKENhbm5v
dENyb3NzRWRpdGluZ0JvdW5kYXJ5LCByZWFjaGVkQm91bmRhcnkpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIFdvcmRHcmFudWxhcml0eToKLSAgICAgICAgcG9zID0gcHJldmlvdXNXb3JkUG9z
aXRpb24oY3VycmVudFBvc2l0aW9uKTsKKyAgICAgICAgcG9zID0gcHJldmlvdXNXb3JkUG9zaXRp
b24oY3VycmVudFBvc2l0aW9uLCBuZXh0V29yZFdoaXRlc3BhY2VNb2RlSW5JT1ModXNlclRyaWdn
ZXJlZCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6CiAg
ICAgICAgIHBvcyA9IHByZXZpb3VzU2VudGVuY2VQb3NpdGlvbihjdXJyZW50UG9zaXRpb24pOwpA
QCAtMTMzMCwyNyArMTMzNiwyNyBAQCBib29sIEZyYW1lU2VsZWN0aW9uOjptb2RpZnkoRUFsdGVy
YXRpb24gCiAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKICAgICBjYXNlIERpcmVjdGlvblJpZ2h0
OgogICAgICAgICBpZiAoYWx0ZXIgPT0gQWx0ZXJhdGlvbk1vdmUpCi0gICAgICAgICAgICBwb3Np
dGlvbiA9IG1vZGlmeU1vdmluZ1JpZ2h0KGdyYW51bGFyaXR5LCAmcmVhY2hlZEJvdW5kYXJ5KTsK
KyAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5TW92aW5nUmlnaHQoZ3JhbnVsYXJpdHksIHVz
ZXJUcmlnZ2VyZWQsICZyZWFjaGVkQm91bmRhcnkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBwb3NpdGlvbiA9IG1vZGlmeUV4dGVuZGluZ1JpZ2h0KGdyYW51bGFyaXR5KTsKKyAgICAgICAg
ICAgIHBvc2l0aW9uID0gbW9kaWZ5RXh0ZW5kaW5nUmlnaHQoZ3JhbnVsYXJpdHksIHVzZXJUcmln
Z2VyZWQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIERpcmVjdGlvbkZvcndhcmQ6CiAgICAg
ICAgIGlmIChhbHRlciA9PSBBbHRlcmF0aW9uRXh0ZW5kKQotICAgICAgICAgICAgcG9zaXRpb24g
PSBtb2RpZnlFeHRlbmRpbmdGb3J3YXJkKGdyYW51bGFyaXR5KTsKKyAgICAgICAgICAgIHBvc2l0
aW9uID0gbW9kaWZ5RXh0ZW5kaW5nRm9yd2FyZChncmFudWxhcml0eSwgdXNlclRyaWdnZXJlZCk7
CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5TW92aW5nRm9yd2Fy
ZChncmFudWxhcml0eSwgJnJlYWNoZWRCb3VuZGFyeSk7CisgICAgICAgICAgICBwb3NpdGlvbiA9
IG1vZGlmeU1vdmluZ0ZvcndhcmQoZ3JhbnVsYXJpdHksIHVzZXJUcmlnZ2VyZWQsICZyZWFjaGVk
Qm91bmRhcnkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIERpcmVjdGlvbkxlZnQ6CiAgICAg
ICAgIGlmIChhbHRlciA9PSBBbHRlcmF0aW9uTW92ZSkKLSAgICAgICAgICAgIHBvc2l0aW9uID0g
bW9kaWZ5TW92aW5nTGVmdChncmFudWxhcml0eSwgJnJlYWNoZWRCb3VuZGFyeSk7CisgICAgICAg
ICAgICBwb3NpdGlvbiA9IG1vZGlmeU1vdmluZ0xlZnQoZ3JhbnVsYXJpdHksIHVzZXJUcmlnZ2Vy
ZWQsICZyZWFjaGVkQm91bmRhcnkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBwb3NpdGlv
biA9IG1vZGlmeUV4dGVuZGluZ0xlZnQoZ3JhbnVsYXJpdHkpOworICAgICAgICAgICAgcG9zaXRp
b24gPSBtb2RpZnlFeHRlbmRpbmdMZWZ0KGdyYW51bGFyaXR5LCB1c2VyVHJpZ2dlcmVkKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBEaXJlY3Rpb25CYWNrd2FyZDoKICAgICAgICAgaWYgKGFs
dGVyID09IEFsdGVyYXRpb25FeHRlbmQpCi0gICAgICAgICAgICBwb3NpdGlvbiA9IG1vZGlmeUV4
dGVuZGluZ0JhY2t3YXJkKGdyYW51bGFyaXR5KTsKKyAgICAgICAgICAgIHBvc2l0aW9uID0gbW9k
aWZ5RXh0ZW5kaW5nQmFja3dhcmQoZ3JhbnVsYXJpdHksIHVzZXJUcmlnZ2VyZWQpOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBwb3NpdGlvbiA9IG1vZGlmeU1vdmluZ0JhY2t3YXJkKGdyYW51
bGFyaXR5LCAmcmVhY2hlZEJvdW5kYXJ5KTsKKyAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5
TW92aW5nQmFja3dhcmQoZ3JhbnVsYXJpdHksIHVzZXJUcmlnZ2VyZWQsICZyZWFjaGVkQm91bmRh
cnkpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTIxNDUsNyArMjE1MSw3IEBAIHZvaWQg
RnJhbWVTZWxlY3Rpb246OnVwZGF0ZUFwcGVhcmFuY2UoKQogICAgIC8vIENvbnN0cnVjdCBhIG5l
dyBWaXNpYmxlU29sdXRpb24sIHNpbmNlIG1fc2VsZWN0aW9uIGlzIG5vdCBuZWNlc3NhcmlseSB2
YWxpZCwgYW5kIHRoZSBmb2xsb3dpbmcgc3RlcHMKICAgICAvLyBhc3N1bWUgYSB2YWxpZCBzZWxl
Y3Rpb24uIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5NTYz
PiBhbmQgPHJkYXI6Ly9wcm9ibGVtLzEwMjMyODY2Pi4KICNpZiBFTkFCTEUoVEVYVF9DQVJFVCkK
LSAgICBWaXNpYmxlUG9zaXRpb24gZW5kVmlzaWJsZVBvc2l0aW9uID0gcGFpbnRCbG9ja0N1cnNv
ciA/IG1vZGlmeUV4dGVuZGluZ0ZvcndhcmQoQ2hhcmFjdGVyR3JhbnVsYXJpdHkpIDogb2xkU2Vs
ZWN0aW9uLnZpc2libGVFbmQoKTsKKyAgICBWaXNpYmxlUG9zaXRpb24gZW5kVmlzaWJsZVBvc2l0
aW9uID0gcGFpbnRCbG9ja0N1cnNvciA/IG1vZGlmeUV4dGVuZGluZ0ZvcndhcmQoQ2hhcmFjdGVy
R3JhbnVsYXJpdHksIE5vdFVzZXJUcmlnZ2VyZWQpIDogb2xkU2VsZWN0aW9uLnZpc2libGVFbmQo
KTsKICAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbihvbGRTZWxlY3Rpb24udmlzaWJsZVN0
YXJ0KCksIGVuZFZpc2libGVQb3NpdGlvbik7CiAjZWxzZQogICAgIFZpc2libGVTZWxlY3Rpb24g
c2VsZWN0aW9uKG9sZFNlbGVjdGlvbi52aXNpYmxlU3RhcnQoKSwgb2xkU2VsZWN0aW9uLnZpc2li
bGVFbmQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCShy
ZXZpc2lvbiAyNDk2MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5OSwxNiArMjk5LDE2IEBAIHByaXZhdGU6CiAgICAgVmlz
aWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUGxhdGZvcm0oYm9vbCBpc0dldFN0YXJ0KSBjb25zdDsK
ICAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnRGb3JQbGF0Zm9ybSgpIGNvbnN0OwogICAgIFZpc2li
bGVQb3NpdGlvbiBlbmRGb3JQbGF0Zm9ybSgpIGNvbnN0OwotICAgIFZpc2libGVQb3NpdGlvbiBu
ZXh0V29yZFBvc2l0aW9uRm9yUGxhdGZvcm0oY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7CisgICAg
VmlzaWJsZVBvc2l0aW9uIG5leHRXb3JkUG9zaXRpb25Gb3JQbGF0Zm9ybShjb25zdCBWaXNpYmxl
UG9zaXRpb24mLCBFVXNlclRyaWdnZXJlZCk7CiAKLSAgICBWaXNpYmxlUG9zaXRpb24gbW9kaWZ5
RXh0ZW5kaW5nUmlnaHQoVGV4dEdyYW51bGFyaXR5KTsKLSAgICBWaXNpYmxlUG9zaXRpb24gbW9k
aWZ5RXh0ZW5kaW5nRm9yd2FyZChUZXh0R3JhbnVsYXJpdHkpOwotICAgIFZpc2libGVQb3NpdGlv
biBtb2RpZnlNb3ZpbmdSaWdodChUZXh0R3JhbnVsYXJpdHksIGJvb2wqIHJlYWNoZWRCb3VuZGFy
eSA9IG51bGxwdHIpOwotICAgIFZpc2libGVQb3NpdGlvbiBtb2RpZnlNb3ZpbmdGb3J3YXJkKFRl
eHRHcmFudWxhcml0eSwgYm9vbCogcmVhY2hlZEJvdW5kYXJ5ID0gbnVsbHB0cik7Ci0gICAgVmlz
aWJsZVBvc2l0aW9uIG1vZGlmeUV4dGVuZGluZ0xlZnQoVGV4dEdyYW51bGFyaXR5KTsKLSAgICBW
aXNpYmxlUG9zaXRpb24gbW9kaWZ5RXh0ZW5kaW5nQmFja3dhcmQoVGV4dEdyYW51bGFyaXR5KTsK
LSAgICBWaXNpYmxlUG9zaXRpb24gbW9kaWZ5TW92aW5nTGVmdChUZXh0R3JhbnVsYXJpdHksIGJv
b2wqIHJlYWNoZWRCb3VuZGFyeSA9IG51bGxwdHIpOwotICAgIFZpc2libGVQb3NpdGlvbiBtb2Rp
ZnlNb3ZpbmdCYWNrd2FyZChUZXh0R3JhbnVsYXJpdHksIGJvb2wqIHJlYWNoZWRCb3VuZGFyeSA9
IG51bGxwdHIpOworICAgIFZpc2libGVQb3NpdGlvbiBtb2RpZnlFeHRlbmRpbmdSaWdodChUZXh0
R3JhbnVsYXJpdHksIEVVc2VyVHJpZ2dlcmVkKTsKKyAgICBWaXNpYmxlUG9zaXRpb24gbW9kaWZ5
RXh0ZW5kaW5nRm9yd2FyZChUZXh0R3JhbnVsYXJpdHksIEVVc2VyVHJpZ2dlcmVkKTsKKyAgICBW
aXNpYmxlUG9zaXRpb24gbW9kaWZ5TW92aW5nUmlnaHQoVGV4dEdyYW51bGFyaXR5LCBFVXNlclRy
aWdnZXJlZCwgYm9vbCogcmVhY2hlZEJvdW5kYXJ5ID0gbnVsbHB0cik7CisgICAgVmlzaWJsZVBv
c2l0aW9uIG1vZGlmeU1vdmluZ0ZvcndhcmQoVGV4dEdyYW51bGFyaXR5LCBFVXNlclRyaWdnZXJl
ZCwgYm9vbCogcmVhY2hlZEJvdW5kYXJ5ID0gbnVsbHB0cik7CisgICAgVmlzaWJsZVBvc2l0aW9u
IG1vZGlmeUV4dGVuZGluZ0xlZnQoVGV4dEdyYW51bGFyaXR5LCBFVXNlclRyaWdnZXJlZCk7Cisg
ICAgVmlzaWJsZVBvc2l0aW9uIG1vZGlmeUV4dGVuZGluZ0JhY2t3YXJkKFRleHRHcmFudWxhcml0
eSwgRVVzZXJUcmlnZ2VyZWQpOworICAgIFZpc2libGVQb3NpdGlvbiBtb2RpZnlNb3ZpbmdMZWZ0
KFRleHRHcmFudWxhcml0eSwgRVVzZXJUcmlnZ2VyZWQsIGJvb2wqIHJlYWNoZWRCb3VuZGFyeSA9
IG51bGxwdHIpOworICAgIFZpc2libGVQb3NpdGlvbiBtb2RpZnlNb3ZpbmdCYWNrd2FyZChUZXh0
R3JhbnVsYXJpdHksIEVVc2VyVHJpZ2dlcmVkLCBib29sKiByZWFjaGVkQm91bmRhcnkgPSBudWxs
cHRyKTsKIAogICAgIExheW91dFVuaXQgbGluZURpcmVjdGlvblBvaW50Rm9yQmxvY2tEaXJlY3Rp
b25OYXZpZ2F0aW9uKEVQb3NpdGlvblR5cGUpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1RleHRJdGVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9UZXh0SXRlcmF0b3IuY3BwCShyZXZpc2lvbiAyNDk2MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRJdGVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMzUsNyArMjMzNSw3
IEBAIGlubGluZSBib29sIFNlYXJjaEJ1ZmZlcjo6aXNXb3JkU3RhcnRNYXQKIAogICAgIHNpemVf
dCB3b3JkQnJlYWtTZWFyY2hTdGFydCA9IHN0YXJ0ICsgbGVuZ3RoOwogICAgIHdoaWxlICh3b3Jk
QnJlYWtTZWFyY2hTdGFydCA+IHN0YXJ0KQotICAgICAgICB3b3JkQnJlYWtTZWFyY2hTdGFydCA9
IGZpbmROZXh0V29yZEZyb21JbmRleChTdHJpbmdWaWV3KG1fYnVmZmVyLmRhdGEoKSwgbV9idWZm
ZXIuc2l6ZSgpKSwgd29yZEJyZWFrU2VhcmNoU3RhcnQsIGZhbHNlIC8qIGJhY2t3YXJkcyAqLyk7
CisgICAgICAgIHdvcmRCcmVha1NlYXJjaFN0YXJ0ID0gZmluZE5leHRXb3JkRnJvbUluZGV4KFN0
cmluZ1ZpZXcobV9idWZmZXIuZGF0YSgpLCBtX2J1ZmZlci5zaXplKCkpLCB3b3JkQnJlYWtTZWFy
Y2hTdGFydCwgTmV4dFdvcmREaXJlY3Rpb246OkJhY2t3YXJkKTsKICAgICByZXR1cm4gd29yZEJy
ZWFrU2VhcmNoU3RhcnQgPT0gc3RhcnQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVmlzaWJsZVVuaXRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1Zpc2libGVVbml0cy5jcHAJKHJldmlzaW9uIDI0OTYwNykKKysrIFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVmlzaWJsZVVuaXRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYxLDYgKzc2MSw3IEBA
IFZpc2libGVQb3NpdGlvbiBlbmRPZldvcmQoY29uc3QgVmlzaWJsZVAKICAgICByZXR1cm4gbmV4
dEJvdW5kYXJ5KHAsIGVuZFdvcmRCb3VuZGFyeSk7CiB9CiAKK3RlbXBsYXRlIDxOZXh0V29yZE1v
ZGVJbklPUyBpb3NNb2RlPgogc3RhdGljIHVuc2lnbmVkIHByZXZpb3VzV29yZFBvc2l0aW9uQm91
bmRhcnkoU3RyaW5nVmlldyB0ZXh0LCB1bnNpZ25lZCBvZmZzZXQsIEJvdW5kYXJ5U2VhcmNoQ29u
dGV4dEF2YWlsYWJpbGl0eSBtYXlIYXZlTW9yZUNvbnRleHQsIGJvb2wmIG5lZWRNb3JlQ29udGV4
dCkKIHsKICAgICBpZiAobWF5SGF2ZU1vcmVDb250ZXh0ICYmICFzdGFydE9mTGFzdFdvcmRCb3Vu
ZGFyeUNvbnRleHQodGV4dC5zdWJzdHJpbmcoMCwgb2Zmc2V0KSkpIHsKQEAgLTc2OCwxNCArNzY5
LDE3IEBAIHN0YXRpYyB1bnNpZ25lZCBwcmV2aW91c1dvcmRQb3NpdGlvbkJvdW4KICAgICAgICAg
cmV0dXJuIDA7CiAgICAgfQogICAgIG5lZWRNb3JlQ29udGV4dCA9IGZhbHNlOwotICAgIHJldHVy
biBmaW5kTmV4dFdvcmRGcm9tSW5kZXgodGV4dCwgb2Zmc2V0LCBmYWxzZSk7CisgICAgcmV0dXJu
IGZpbmROZXh0V29yZEZyb21JbmRleCh0ZXh0LCBvZmZzZXQsIE5leHRXb3JkRGlyZWN0aW9uOjpC
YWNrd2FyZCwgaW9zTW9kZSk7CiB9CiAKLVZpc2libGVQb3NpdGlvbiBwcmV2aW91c1dvcmRQb3Np
dGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uKQorVmlzaWJsZVBvc2l0aW9uIHBy
ZXZpb3VzV29yZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24sIE5leHRX
b3JkTW9kZUluSU9TIGlvc01vZGUpCiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uLmhvbm9yRWRpdGlu
Z0JvdW5kYXJ5QXRPckJlZm9yZShwcmV2aW91c0JvdW5kYXJ5KHBvc2l0aW9uLCBwcmV2aW91c1dv
cmRQb3NpdGlvbkJvdW5kYXJ5KSk7CisgICAgaWYgKGlvc01vZGUgPT0gTmV4dFdvcmRNb2RlSW5J
T1M6OkxlZ2FjeVN0b3BCZWZvcmVXb3JkKSAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgY29kZSBwYXRo
LgorICAgICAgICByZXR1cm4gcG9zaXRpb24uaG9ub3JFZGl0aW5nQm91bmRhcnlBdE9yQmVmb3Jl
KHByZXZpb3VzQm91bmRhcnkocG9zaXRpb24sIHByZXZpb3VzV29yZFBvc2l0aW9uQm91bmRhcnk8
TmV4dFdvcmRNb2RlSW5JT1M6OkxlZ2FjeVN0b3BCZWZvcmVXb3JkPikpOworICAgIHJldHVybiBw
b3NpdGlvbi5ob25vckVkaXRpbmdCb3VuZGFyeUF0T3JCZWZvcmUocHJldmlvdXNCb3VuZGFyeShw
b3NpdGlvbiwgcHJldmlvdXNXb3JkUG9zaXRpb25Cb3VuZGFyeTxOZXh0V29yZE1vZGVJbklPUzo6
U3RvcEFmdGVyV29yZD4pKTsKIH0KIAordGVtcGxhdGUgPE5leHRXb3JkTW9kZUluSU9TIGlvc01v
ZGU+CiBzdGF0aWMgdW5zaWduZWQgbmV4dFdvcmRQb3NpdGlvbkJvdW5kYXJ5KFN0cmluZ1ZpZXcg
dGV4dCwgdW5zaWduZWQgb2Zmc2V0LCBCb3VuZGFyeVNlYXJjaENvbnRleHRBdmFpbGFiaWxpdHkg
bWF5SGF2ZU1vcmVDb250ZXh0LCBib29sJiBuZWVkTW9yZUNvbnRleHQpCiB7CiAgICAgaWYgKG1h
eUhhdmVNb3JlQ29udGV4dCAmJiBlbmRPZkZpcnN0V29yZEJvdW5kYXJ5Q29udGV4dCh0ZXh0LnN1
YnN0cmluZyhvZmZzZXQpKSA9PSB0ZXh0Lmxlbmd0aCgpIC0gb2Zmc2V0KSB7CkBAIC03ODMsMTIg
Kzc4NywxNCBAQCBzdGF0aWMgdW5zaWduZWQgbmV4dFdvcmRQb3NpdGlvbkJvdW5kYXJ5CiAgICAg
ICAgIHJldHVybiB0ZXh0Lmxlbmd0aCgpOwogICAgIH0KICAgICBuZWVkTW9yZUNvbnRleHQgPSBm
YWxzZTsKLSAgICByZXR1cm4gZmluZE5leHRXb3JkRnJvbUluZGV4KHRleHQsIG9mZnNldCwgdHJ1
ZSk7CisgICAgcmV0dXJuIGZpbmROZXh0V29yZEZyb21JbmRleCh0ZXh0LCBvZmZzZXQsIE5leHRX
b3JkRGlyZWN0aW9uOjpGb3J3YXJkLCBpb3NNb2RlKTsKIH0KIAotVmlzaWJsZVBvc2l0aW9uIG5l
eHRXb3JkUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbikKK1Zpc2libGVQ
b3NpdGlvbiBuZXh0V29yZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24s
IE5leHRXb3JkTW9kZUluSU9TIGlvc01vZGUpCiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uLmhvbm9y
RWRpdGluZ0JvdW5kYXJ5QXRPckFmdGVyKG5leHRCb3VuZGFyeShwb3NpdGlvbiwgbmV4dFdvcmRQ
b3NpdGlvbkJvdW5kYXJ5KSk7CisgICAgaWYgKGlvc01vZGUgPT0gTmV4dFdvcmRNb2RlSW5JT1M6
OkxlZ2FjeVN0b3BCZWZvcmVXb3JkKSAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgY29kZSBwYXRoLgor
ICAgICAgICByZXR1cm4gcG9zaXRpb24uaG9ub3JFZGl0aW5nQm91bmRhcnlBdE9yQWZ0ZXIobmV4
dEJvdW5kYXJ5KHBvc2l0aW9uLCBuZXh0V29yZFBvc2l0aW9uQm91bmRhcnk8TmV4dFdvcmRNb2Rl
SW5JT1M6OkxlZ2FjeVN0b3BCZWZvcmVXb3JkPikpOworICAgIHJldHVybiBwb3NpdGlvbi5ob25v
ckVkaXRpbmdCb3VuZGFyeUF0T3JBZnRlcihuZXh0Qm91bmRhcnkocG9zaXRpb24sIG5leHRXb3Jk
UG9zaXRpb25Cb3VuZGFyeTxOZXh0V29yZE1vZGVJbklPUzo6U3RvcEFmdGVyV29yZD4pKTsKIH0K
IAogYm9vbCBpc1N0YXJ0T2ZXb3JkKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcCkKQEAgLTE3MDAs
NyArMTcwNiw3IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gbmV4dFdvcmRCb3VuZGFyeUkKICAg
ICAgICAgICAgICAgICAvLyBEbyBzYW1lIHRoaW5nIGFzIGJhY2t3YXJkcyB0cmF2ZWxpbmcgYmVs
b3cuCiAgICAgICAgICAgICAgICAgc3RhcnQgPSB2cDsKICAgICAgICAgICAgICAgICB3aGlsZSAo
dHJ1ZSkgewotICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBzdGFydE9mV29yZChuZXh0V29y
ZFBvc2l0aW9uKHN0YXJ0KSwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KTsKKyAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0ID0gc3RhcnRPZldvcmQobmV4dFdvcmRQb3NpdGlvbihzdGFydCwgTmV4dFdv
cmRNb2RlSW5JT1M6OkxlZ2FjeVN0b3BCZWZvcmVXb3JkKSwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5
KTsKIAogICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IHN0YXJ0KQogICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xNzM0LDcgKzE3NDAsNyBAQCBzdGF0aWMgVmlzaWJs
ZVBvc2l0aW9uIG5leHRXb3JkQm91bmRhcnlJCiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgICAgICBlbmQgPSB2cDsKICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAg
ICAgICAgICAgICAgICByZXN1bHQgPSBlbmRPZldvcmQocHJldmlvdXNXb3JkUG9zaXRpb24oZW5k
KSwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0g
ZW5kT2ZXb3JkKHByZXZpb3VzV29yZFBvc2l0aW9uKGVuZCwgTmV4dFdvcmRNb2RlSW5JT1M6Okxl
Z2FjeVN0b3BCZWZvcmVXb3JkKSwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KTsKIAogICAgICAgICAg
ICAgICAgICAgICBpZiAocmVzdWx0ID09IGVuZCkKICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5oCShyZXZpc2lvbiAy
NDk2MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkVkaXRp
bmdCb3VuZGFyeS5oIgorI2luY2x1ZGUgIlRleHRCb3VuZGFyaWVzLmgiCiAjaW5jbHVkZSAiVmlz
aWJsZVNlbGVjdGlvbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MCw4ICs0MSw4IEBA
IGVudW0gRVdvcmRTaWRlIHsgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5ID0KIC8vIHdvcmRzCiBXRUJD
T1JFX0VYUE9SVCBWaXNpYmxlUG9zaXRpb24gc3RhcnRPZldvcmQoY29uc3QgVmlzaWJsZVBvc2l0
aW9uICYsIEVXb3JkU2lkZSA9IFJpZ2h0V29yZElmT25Cb3VuZGFyeSk7CiBXRUJDT1JFX0VYUE9S
VCBWaXNpYmxlUG9zaXRpb24gZW5kT2ZXb3JkKGNvbnN0IFZpc2libGVQb3NpdGlvbiAmLCBFV29y
ZFNpZGUgPSBSaWdodFdvcmRJZk9uQm91bmRhcnkpOwotV0VCQ09SRV9FWFBPUlQgVmlzaWJsZVBv
c2l0aW9uIHByZXZpb3VzV29yZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiAmKTsKLVdF
QkNPUkVfRVhQT1JUIFZpc2libGVQb3NpdGlvbiBuZXh0V29yZFBvc2l0aW9uKGNvbnN0IFZpc2li
bGVQb3NpdGlvbiAmKTsKK1dFQkNPUkVfRVhQT1JUIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1dv
cmRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24gJiwgTmV4dFdvcmRNb2RlSW5JT1MpOwor
V0VCQ09SRV9FWFBPUlQgVmlzaWJsZVBvc2l0aW9uIG5leHRXb3JkUG9zaXRpb24oY29uc3QgVmlz
aWJsZVBvc2l0aW9uICYsIE5leHRXb3JkTW9kZUluSU9TKTsKIFZpc2libGVQb3NpdGlvbiByaWdo
dFdvcmRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBib29sIHNraXBzU3BhY2VXaGVu
TW92aW5nUmlnaHQpOwogVmlzaWJsZVBvc2l0aW9uIGxlZnRXb3JkUG9zaXRpb24oY29uc3QgVmlz
aWJsZVBvc2l0aW9uJiwgYm9vbCBza2lwc1NwYWNlV2hlbk1vdmluZ1JpZ2h0KTsKIGJvb2wgaXNT
dGFydE9mV29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvVGV4dEJvdW5kYXJpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmgJKHJldmlzaW9uIDI0OTYwNykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJvdW5kYXJpZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtNDcsNyArNDcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgdm9pZCBm
aW5kV29yZEJvdW5kYXJ5KFN0cmluZ1ZpZXcsIGludCBwb3NpdGlvbiwgaW50KiBzdGFydCwgaW50
KiBlbmQpOwogICAgIHZvaWQgZmluZEVuZFdvcmRCb3VuZGFyeShTdHJpbmdWaWV3LCBpbnQgcG9z
aXRpb24sIGludCogZW5kKTsKLSAgICBpbnQgZmluZE5leHRXb3JkRnJvbUluZGV4KFN0cmluZ1Zp
ZXcsIGludCBwb3NpdGlvbiwgYm9vbCBmb3J3YXJkKTsKKworICAgIGVudW0gY2xhc3MgTmV4dFdv
cmREaXJlY3Rpb24geyBGb3J3YXJkLCBCYWNrd2FyZCB9OworICAgIGVudW0gY2xhc3MgTmV4dFdv
cmRNb2RlSW5JT1MgeyBMZWdhY3lTdG9wQmVmb3JlV29yZCwgU3RvcEFmdGVyV29yZCB9OworICAg
IGludCBmaW5kTmV4dFdvcmRGcm9tSW5kZXgoU3RyaW5nVmlldywgaW50IHBvc2l0aW9uLCBOZXh0
V29yZERpcmVjdGlvbiwgTmV4dFdvcmRNb2RlSW5JT1MgPSBOZXh0V29yZE1vZGVJbklPUzo6TGVn
YWN5U3RvcEJlZm9yZVdvcmQpOwogCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tCShyZXZpc2lvbiAyNDk2MDcpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Qm91bmRhcmllcy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMjI5LDExICsyMjksMTIgQEAgdm9pZCBmaW5kRW5kV29yZEJvdW5kYXJ5
KFN0cmluZ1ZpZXcgdGV4dAogICAgIGZpbmRXb3JkQm91bmRhcnkodGV4dCwgcG9zaXRpb24sICZz
dGFydCwgZW5kKTsKIH0KIAotaW50IGZpbmROZXh0V29yZEZyb21JbmRleChTdHJpbmdWaWV3IHRl
eHQsIGludCBwb3NpdGlvbiwgYm9vbCBmb3J3YXJkKQoraW50IGZpbmROZXh0V29yZEZyb21JbmRl
eChTdHJpbmdWaWV3IHRleHQsIGludCBwb3NpdGlvbiwgTmV4dFdvcmREaXJlY3Rpb24gZGlyZWN0
aW9uLCBOZXh0V29yZE1vZGVJbklPUyB3aGl0ZXNwYWNlTW9kZUluSU9TKQogeyAgIAogI2lmIFVT
RShBUFBLSVQpCisgICAgVU5VU0VEX1BBUkFNKHdoaXRlc3BhY2VNb2RlSW5JT1MpOwogICAgIE5T
QXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtbTlNBdHRyaWJ1dGVkU3RyaW5n
IGFsbG9jXSBpbml0V2l0aFN0cmluZzp0ZXh0LmNyZWF0ZU5TU3RyaW5nV2l0aG91dENvcHlpbmco
KS5nZXQoKV07Ci0gICAgaW50IHJlc3VsdCA9IFthdHRyaWJ1dGVkU3RyaW5nIG5leHRXb3JkRnJv
bUluZGV4OnBvc2l0aW9uIGZvcndhcmQ6Zm9yd2FyZF07CisgICAgaW50IHJlc3VsdCA9IFthdHRy
aWJ1dGVkU3RyaW5nIG5leHRXb3JkRnJvbUluZGV4OnBvc2l0aW9uIGZvcndhcmQ6ZGlyZWN0aW9u
ID09IE5leHRXb3JkRGlyZWN0aW9uOjpGb3J3YXJkXTsKICAgICBbYXR0cmlidXRlZFN0cmluZyBy
ZWxlYXNlXTsKICAgICByZXR1cm4gcmVzdWx0OwogI2Vsc2UKQEAgLTI0MywxNCArMjQ0LDMxIEBA
IGludCBmaW5kTmV4dFdvcmRGcm9tSW5kZXgoU3RyaW5nVmlldyB0ZXgKICAgICBpbnQgcG9zID0g
cG9zaXRpb247CiAgICAgVUJyZWFrSXRlcmF0b3IqIGJvdW5kYXJ5ID0gd29yZEJyZWFrSXRlcmF0
b3IodGV4dCk7CiAgICAgaWYgKGJvdW5kYXJ5KSB7Ci0gICAgICAgIGlmIChmb3J3YXJkKSB7Cisg
ICAgICAgIGlmIChkaXJlY3Rpb24gPT0gTmV4dFdvcmREaXJlY3Rpb246OkZvcndhcmQpIHsKKyAg
ICAgICAgICAgIGlmICh3aGl0ZXNwYWNlTW9kZUluSU9TID09IE5leHRXb3JkTW9kZUluSU9TOjpT
dG9wQWZ0ZXJXb3JkKSB7CisgICAgICAgICAgICAgICAgd2hpbGUgKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihwb3MpIDwgdGV4dC5sZW5ndGgoKSAmJiBpc1dvcmREZWxpbWl0aW5nQ2hhcmFjdGVyKHRl
eHRbcG9zXSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcG9zID0gdWJya19mb2xsb3dpbmcoYm91
bmRhcnksIHBvcyk7CisgICAgICAgICAgICAgICAgICAgIGlmIChwb3MgPT0gVUJSS19ET05FKQor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRleHQubGVuZ3RoKCk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAg
IHBvcyA9IHVicmtfZm9sbG93aW5nKGJvdW5kYXJ5LCBwb3MpOwogICAgICAgICAgICAgICAgIGlm
IChwb3MgPT0gVUJSS19ET05FKQotICAgICAgICAgICAgICAgICAgICBwb3MgPSB0ZXh0Lmxlbmd0
aCgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGV4dC5sZW5ndGgoKTsKICAgICAgICAg
ICAgIH0gd2hpbGUgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihwb3MpIDwgdGV4dC5sZW5ndGgoKSAm
JiAocG9zID09IDAgfHwgIWlzU2tpcENoYXJhY3Rlcih0ZXh0W3BvcyAtIDFdKSkgJiYgaXNTa2lw
Q2hhcmFjdGVyKHRleHRbcG9zXSkpOworCisgICAgICAgICAgICAvLyBJQ1Ugd291bGQgc2tpcCB0
aGUgdHJhaWxpbmcgd2hpdGVzcGFjZS4gR28gYmFjay4KKyAgICAgICAgICAgIGlmICh3aGl0ZXNw
YWNlTW9kZUluSU9TID09IE5leHRXb3JkTW9kZUluSU9TOjpTdG9wQWZ0ZXJXb3JkICYmIGlzV29y
ZERlbGltaXRpbmdDaGFyYWN0ZXIodGV4dFtwb3MgLSAxXSkpCisgICAgICAgICAgICAgICAgcG9z
ID0gdWJya19wcmVjZWRpbmcoYm91bmRhcnksIHBvcyk7CiAgICAgICAgIH0KICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICBpZiAod2hpdGVzcGFjZU1vZGVJbklPUyA9PSBOZXh0V29yZE1vZGVJ
bklPUzo6U3RvcEFmdGVyV29yZCAmJiBwb3MgJiYgaXNXb3JkRGVsaW1pdGluZ0NoYXJhY3Rlcih0
ZXh0W3BvcyAtIDFdKSkgeworICAgICAgICAgICAgICAgIHBvcyA9IHVicmtfcHJlY2VkaW5nKGJv
dW5kYXJ5LCBwb3MpOworICAgICAgICAgICAgICAgIGlmIChwb3MgPT0gVUJSS19ET05FKQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAg
ZG8gewogICAgICAgICAgICAgICAgIHBvcyA9IHVicmtfcHJlY2VkaW5nKGJvdW5kYXJ5LCBwb3Mp
OwogICAgICAgICAgICAgICAgIGlmIChwb3MgPT0gVUJSS19ET05FKQpJbmRleDogTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNp
b24gMjQ5NjA3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMjAgQEAKKzIwMTktMDktMDYgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgT3B0aW9uICsgYXJyb3cgbW92ZXMgY2FyZXQgcGFzdCB3aGl0ZXNwYWNlIG9u
IGlPUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAx
NTc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgYSBuZXcgdGVzdCBmb3IgbW92aW5nIGNhcmV0IGJ5IHdvcmQgZ3JhbnVsYXJpdHkgb24gaU9T
LgorCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vaW9zL21vdmUtYnktd29yZC13aXRoLWtl
eWJvYXJkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24v
aW9zL21vdmUtYnktd29yZC13aXRoLWtleWJvYXJkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVk
aXRpbmcvc2VsZWN0aW9uL2lvcy9zZWxlY3Qtbm9uLWVkaXRhYmxlLXRleHQtdXNpbmcta2V5Ym9h
cmQtZXhwZWN0ZWQudHh0OiBSZWJhc2VsaW5lZC4KKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlv
bi9pb3Mvc2VsZWN0LW5vbi1lZGl0YWJsZS10ZXh0LXVzaW5nLWtleWJvYXJkLmh0bWw6IFVwZGF0
ZWQgdGhlIGV4cGVjdGVkCisgICAgICAgIHNlbGVjdGlvbiBzdHJpbmcgZHVlIHRvIHRoZSBiZWhh
dmlvciBjaGFuZ2UuIEFsc28gZml4ZWQgYSBidWcgdGhhdCBzb21lIHRlc3QgY2FzZXMgd2VyZQor
ICAgICAgICBub3Qgd2FpdGluZyBmb3IgYSBzZWNvbmRhcnkgc2VsZWN0aW9uY2hhbmdlIGV2ZW50
IHRoYXQgaGFwcGVucyBhZnRlciBhbiBleHRyYSBzZWxlY3Rpb24KKyAgICAgICAgdXBkYXRlIHdp
dGggY2hhcmFjdGVyIGdyYW51bGFyaXR5IGludHJvZHVjZWQgaW4gcjI0NzUyNC4KKwogMjAxOS0w
OS0wNiAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIElu
c3BlY3RvcjogQ1NTIEZvcm1hdHRlcjogdGhlIGNsb3NpbmcgfSBvZiBuZXN0ZWQgQG1lZGlhIGFy
ZW4ndCBpbmRlbnRlZApJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL21v
dmUtYnktd29yZC13aXRoLWtleWJvYXJkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3MvbW92ZS1ieS13b3JkLXdpdGgta2V5Ym9hcmQt
ZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0
aW9uL2lvcy9tb3ZlLWJ5LXdvcmQtd2l0aC1rZXlib2FyZC1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw0MjMgQEAKK1RoaXMgdGVzdHMgbW92aW5nIHRoZSBjYXJldCB3aXRo
IHdvcmQgZ3JhbnVsYXJpdHkgb24gaU9TLgorV2ViS2l0IHNob3VsZCBzdG9wIGF0IHRoZSBlbmQg
b2YgZWFjaCB3b3JkIGJlZm9yZSB3aGl0ZXNwYWNlIHdoZW4gbW92aW5nIGZvcndhcmRzLCBhbmQg
YWZ0ZXIgd2hpdGVzcGFjZSB3aGVuIG1vdmluZyBiYWNrd2FyZHMsCitUaGUgZW1wdHkgbGluZSBz
aG91bGQgYmUgc2tpcHBlZCBpbiBlaXRoZXIgZGlyZWN0aW9uLgorCitCZWZvcmUgbW92aW5nIGZv
cndhcmRzOgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICI8I3NlbGVjdGlvbi1jYXJldD5oZWxs
byB3b3JsZCIKK3wgIgorICAgICIKK3wgPGJyPgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJy
ZWQsIGdyZWVuLCAmIGJsdWUuIgorfCAiCisiCisKK0FmdGVyIG1vdmluZyB0byB0aGUgcmlnaHQg
Ynkgd29yZCAoMSk6Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgImhlbGxvPCNzZWxlY3Rpb24t
Y2FyZXQ+IHdvcmxkIgorfCAiCisgICAgIgorfCA8YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8
ICAgInJlZCwgZ3JlZW4sICYgYmx1ZS4iCit8ICIKKyIKKworQWZ0ZXIgbW92aW5nIHRvIHRoZSBy
aWdodCBieSB3b3JkICgyKToKK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAiaGVsbG8gd29ybGQ8
I3NlbGVjdGlvbi1jYXJldD4iCit8ICIKKyAgICAiCit8IDxicj4KK3wgIgorICAgICIKK3wgPGRp
dj4KK3wgICAicmVkLCBncmVlbiwgJiBibHVlLiIKK3wgIgorIgorCitBZnRlciBtb3ZpbmcgdG8g
dGhlIHJpZ2h0IGJ5IHdvcmQgKDMpOgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJoZWxsbyB3
b3JsZCIKK3wgIgorICAgICIKK3wgPGJyPgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJyZWQs
PCNzZWxlY3Rpb24tY2FyZXQ+IGdyZWVuLCAmIGJsdWUuIgorfCAiCisiCisKK0FmdGVyIG1vdmlu
ZyB0byB0aGUgcmlnaHQgYnkgd29yZCAoNCk6Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgImhl
bGxvIHdvcmxkIgorfCAiCisgICAgIgorfCA8YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAg
InJlZCwgZ3JlZW4sPCNzZWxlY3Rpb24tY2FyZXQ+ICYgYmx1ZS4iCit8ICIKKyIKKworQWZ0ZXIg
bW92aW5nIHRvIHRoZSByaWdodCBieSB3b3JkICg1KToKK3wgIgorICAgICIKK3wgPGRpdj4KK3wg
ICAiaGVsbG8gd29ybGQiCit8ICIKKyAgICAiCit8IDxicj4KK3wgIgorICAgICIKK3wgPGRpdj4K
K3wgICAicmVkLCBncmVlbiwgJjwjc2VsZWN0aW9uLWNhcmV0PiBibHVlLiIKK3wgIgorIgorCitB
ZnRlciBtb3ZpbmcgdG8gdGhlIHJpZ2h0IGJ5IHdvcmQgKDYpOgorfCAiCisgICAgIgorfCA8ZGl2
PgorfCAgICJoZWxsbyB3b3JsZCIKK3wgIgorICAgICIKK3wgPGJyPgorfCAiCisgICAgIgorfCA8
ZGl2PgorfCAgICJyZWQsIGdyZWVuLCAmIGJsdWUuPCNzZWxlY3Rpb24tY2FyZXQ+IgorfCAiCisi
CisKK0JlZm9yZSBtb3ZpbmcgYmFja3dhcmRzOgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJo
ZWxsbyB3b3JsZCIKK3wgIgorICAgICIKK3wgPGJyPgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAg
ICJyZWQsIGdyZWVuLCAmIGJsdWUuPCNzZWxlY3Rpb24tY2FyZXQ+IgorfCAiCisiCisKK0FmdGVy
IG1vdmluZyB0byB0aGUgbGVmdCBieSB3b3JkICgxKToKK3wgIgorICAgICIKK3wgPGRpdj4KK3wg
ICAiaGVsbG8gd29ybGQiCit8ICIKKyAgICAiCit8IDxicj4KK3wgIgorICAgICIKK3wgPGRpdj4K
K3wgICAicmVkLCBncmVlbiwgJiA8I3NlbGVjdGlvbi1jYXJldD5ibHVlLiIKK3wgIgorIgorCitB
ZnRlciBtb3ZpbmcgdG8gdGhlIGxlZnQgYnkgd29yZCAoMik6Cit8ICIKKyAgICAiCit8IDxkaXY+
Cit8ICAgImhlbGxvIHdvcmxkIgorfCAiCisgICAgIgorfCA8YnI+Cit8ICIKKyAgICAiCit8IDxk
aXY+Cit8ICAgInJlZCwgZ3JlZW4sIDwjc2VsZWN0aW9uLWNhcmV0PiYgYmx1ZS4iCit8ICIKKyIK
KworQWZ0ZXIgbW92aW5nIHRvIHRoZSBsZWZ0IGJ5IHdvcmQgKDMpOgorfCAiCisgICAgIgorfCA8
ZGl2PgorfCAgICJoZWxsbyB3b3JsZCIKK3wgIgorICAgICIKK3wgPGJyPgorfCAiCisgICAgIgor
fCA8ZGl2PgorfCAgICJyZWQsIDwjc2VsZWN0aW9uLWNhcmV0PmdyZWVuLCAmIGJsdWUuIgorfCAi
CisiCisKK0FmdGVyIG1vdmluZyB0byB0aGUgbGVmdCBieSB3b3JkICg0KToKK3wgIgorICAgICIK
K3wgPGRpdj4KK3wgICAiaGVsbG8gd29ybGQiCit8ICIKKyAgICAiCit8IDxicj4KK3wgIgorICAg
ICIKK3wgPGRpdj4KK3wgICAiPCNzZWxlY3Rpb24tY2FyZXQ+cmVkLCBncmVlbiwgJiBibHVlLiIK
K3wgIgorIgorCitBZnRlciBtb3ZpbmcgdG8gdGhlIGxlZnQgYnkgd29yZCAoNSk6Cit8ICIKKyAg
ICAiCit8IDxkaXY+Cit8ICAgImhlbGxvIDwjc2VsZWN0aW9uLWNhcmV0PndvcmxkIgorfCAiCisg
ICAgIgorfCA8YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgInJlZCwgZ3JlZW4sICYgYmx1
ZS4iCit8ICIKKyIKKworQWZ0ZXIgbW92aW5nIHRvIHRoZSBsZWZ0IGJ5IHdvcmQgKDYpOgorfCAi
CisgICAgIgorfCA8ZGl2PgorfCAgICI8I3NlbGVjdGlvbi1jYXJldD5oZWxsbyB3b3JsZCIKK3wg
IgorICAgICIKK3wgPGJyPgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJyZWQsIGdyZWVuLCAm
IGJsdWUuIgorfCAiCisiCisKK0JlZm9yZSBleHRlbmRpbmcgZm9yd2FyZHM6Cit8ICIKKyAgICAi
Cit8IDxkaXY+Cit8ICAgIjwjc2VsZWN0aW9uLWNhcmV0PmhlbGxvIHdvcmxkIgorfCAiCisgICAg
IgorfCA8YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgInJlZCwgZ3JlZW4sICYgYmx1ZS4i
Cit8ICIKKyIKKworQWZ0ZXIgZXh0ZW5kaW5nIHRvIHRoZSByaWdodCBieSB3b3JkICgxKToKK3wg
IgorICAgICIKK3wgPGRpdj4KK3wgICAiPCNzZWxlY3Rpb24tYW5jaG9yPmhlbGxvPCNzZWxlY3Rp
b24tZm9jdXM+IHdvcmxkIgorfCAiCisgICAgIgorfCA8YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+
Cit8ICAgInJlZCwgZ3JlZW4sICYgYmx1ZS4iCit8ICIKKyIKKworQWZ0ZXIgZXh0ZW5kaW5nIHRv
IHRoZSByaWdodCBieSB3b3JkICgyKToKK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAiPCNzZWxl
Y3Rpb24tYW5jaG9yPmhlbGxvIHdvcmxkPCNzZWxlY3Rpb24tZm9jdXM+IgorfCAiCisgICAgIgor
fCA8YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgInJlZCwgZ3JlZW4sICYgYmx1ZS4iCit8
ICIKKyIKKworQWZ0ZXIgZXh0ZW5kaW5nIHRvIHRoZSByaWdodCBieSB3b3JkICgzKToKK3wgIgor
ICAgICIKK3wgPGRpdj4KK3wgICAiPCNzZWxlY3Rpb24tYW5jaG9yPmhlbGxvIHdvcmxkIgorfCAi
CisgICAgIgorfCA8YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgInJlZCw8I3NlbGVjdGlv
bi1mb2N1cz4gZ3JlZW4sICYgYmx1ZS4iCit8ICIKKyIKKworQWZ0ZXIgZXh0ZW5kaW5nIHRvIHRo
ZSByaWdodCBieSB3b3JkICg0KToKK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAiPCNzZWxlY3Rp
b24tYW5jaG9yPmhlbGxvIHdvcmxkIgorfCAiCisgICAgIgorfCA8YnI+Cit8ICIKKyAgICAiCit8
IDxkaXY+Cit8ICAgInJlZCwgZ3JlZW4sPCNzZWxlY3Rpb24tZm9jdXM+ICYgYmx1ZS4iCit8ICIK
KyIKKworQWZ0ZXIgZXh0ZW5kaW5nIHRvIHRoZSByaWdodCBieSB3b3JkICg1KToKK3wgIgorICAg
ICIKK3wgPGRpdj4KK3wgICAiPCNzZWxlY3Rpb24tYW5jaG9yPmhlbGxvIHdvcmxkIgorfCAiCisg
ICAgIgorfCA8YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgInJlZCwgZ3JlZW4sICY8I3Nl
bGVjdGlvbi1mb2N1cz4gYmx1ZS4iCit8ICIKKyIKKworQWZ0ZXIgZXh0ZW5kaW5nIHRvIHRoZSBy
aWdodCBieSB3b3JkICg2KToKK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAiPCNzZWxlY3Rpb24t
YW5jaG9yPmhlbGxvIHdvcmxkIgorfCAiCisgICAgIgorfCA8YnI+Cit8ICIKKyAgICAiCit8IDxk
aXY+Cit8ICAgInJlZCwgZ3JlZW4sICYgYmx1ZS48I3NlbGVjdGlvbi1mb2N1cz4iCit8ICIKKyIK
KworQmVmb3JlIGV4dGVuZGluZyBiYWNrd2FyZHM6Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAg
ImhlbGxvIHdvcmxkIgorfCAiCisgICAgIgorfCA8YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8
ICAgInJlZCwgZ3JlZW4sICYgYmx1ZS48I3NlbGVjdGlvbi1jYXJldD4iCit8ICIKKyIKKworQWZ0
ZXIgZXh0ZW5kaW5nIHRvIHRoZSBsZWZ0IGJ5IHdvcmQgKDEpOgorfCAiCisgICAgIgorfCA8ZGl2
PgorfCAgICJoZWxsbyB3b3JsZCIKK3wgIgorICAgICIKK3wgPGJyPgorfCAiCisgICAgIgorfCA8
ZGl2PgorfCAgICJyZWQsIGdyZWVuLCAmIDwjc2VsZWN0aW9uLWZvY3VzPmJsdWUuPCNzZWxlY3Rp
b24tYW5jaG9yPiIKK3wgIgorIgorCitBZnRlciBleHRlbmRpbmcgdG8gdGhlIGxlZnQgYnkgd29y
ZCAoMik6Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgImhlbGxvIHdvcmxkIgorfCAiCisgICAg
IgorfCA8YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgInJlZCwgZ3JlZW4sIDwjc2VsZWN0
aW9uLWZvY3VzPiYgYmx1ZS48I3NlbGVjdGlvbi1hbmNob3I+IgorfCAiCisiCisKK0FmdGVyIGV4
dGVuZGluZyB0byB0aGUgbGVmdCBieSB3b3JkICgzKToKK3wgIgorICAgICIKK3wgPGRpdj4KK3wg
ICAiaGVsbG8gd29ybGQiCit8ICIKKyAgICAiCit8IDxicj4KK3wgIgorICAgICIKK3wgPGRpdj4K
K3wgICAicmVkLCA8I3NlbGVjdGlvbi1mb2N1cz5ncmVlbiwgJiBibHVlLjwjc2VsZWN0aW9uLWFu
Y2hvcj4iCit8ICIKKyIKKworQWZ0ZXIgZXh0ZW5kaW5nIHRvIHRoZSBsZWZ0IGJ5IHdvcmQgKDQp
OgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJoZWxsbyB3b3JsZCIKK3wgIgorICAgICIKK3wg
PGJyPgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICI8I3NlbGVjdGlvbi1mb2N1cz5yZWQsIGdy
ZWVuLCAmIGJsdWUuPCNzZWxlY3Rpb24tYW5jaG9yPiIKK3wgIgorIgorCitBZnRlciBleHRlbmRp
bmcgdG8gdGhlIGxlZnQgYnkgd29yZCAoNSk6Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgImhl
bGxvIDwjc2VsZWN0aW9uLWZvY3VzPndvcmxkIgorfCAiCisgICAgIgorfCA8YnI+Cit8ICIKKyAg
ICAiCit8IDxkaXY+Cit8ICAgInJlZCwgZ3JlZW4sICYgYmx1ZS48I3NlbGVjdGlvbi1hbmNob3I+
IgorfCAiCisiCisKK0FmdGVyIGV4dGVuZGluZyB0byB0aGUgbGVmdCBieSB3b3JkICg2KToKK3wg
IgorICAgICIKK3wgPGRpdj4KK3wgICAiPCNzZWxlY3Rpb24tZm9jdXM+aGVsbG8gd29ybGQiCit8
ICIKKyAgICAiCit8IDxicj4KK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAicmVkLCBncmVlbiwg
JiBibHVlLjwjc2VsZWN0aW9uLWFuY2hvcj4iCit8ICIKKyIKSW5kZXg6IExheW91dFRlc3RzL2Vk
aXRpbmcvc2VsZWN0aW9uL2lvcy9tb3ZlLWJ5LXdvcmQtd2l0aC1rZXlib2FyZC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9tb3ZlLWJ5LXdvcmQt
d2l0aC1rZXlib2FyZC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcv
c2VsZWN0aW9uL2lvcy9tb3ZlLWJ5LXdvcmQtd2l0aC1rZXlib2FyZC5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNzkgQEAKKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1
bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwt
c2NhbGU9MSwgbWF4aW11bS1zY2FsZT0xLCBzaHJpbmstdG8tZml0PW5vIj4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvZHVtcC1hcy1tYXJrdXAuanMiPjwvc2NyaXB0PgorPHNjcmlw
dD4KKworTWFya3VwLmRlc2NyaXB0aW9uKGBUaGlzIHRlc3RzIG1vdmluZyB0aGUgY2FyZXQgd2l0
aCB3b3JkIGdyYW51bGFyaXR5IG9uIGlPUy4KK1dlYktpdCBzaG91bGQgc3RvcCBhdCB0aGUgZW5k
IG9mIGVhY2ggd29yZCBiZWZvcmUgd2hpdGVzcGFjZSB3aGVuIG1vdmluZyBmb3J3YXJkcywgYW5k
IGFmdGVyIHdoaXRlc3BhY2Ugd2hlbiBtb3ZpbmcgYmFja3dhcmRzLAorVGhlIGVtcHR5IGxpbmUg
c2hvdWxkIGJlIHNraXBwZWQgaW4gZWl0aGVyIGRpcmVjdGlvbi5gKTsKK01hcmt1cC5ub0F1dG9E
dW1wKCk7CitNYXJrdXAud2FpdFVudGlsRG9uZSgpOworCithc3luYyBmdW5jdGlvbiBydW5UZXN0
KCkKK3sKKyAgICBjb25zdCBlZGl0b3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9y
Jyk7CisKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIGF3YWl0IFVJSGVscGVy
LmFjdGl2YXRlRWxlbWVudEFuZFdhaXRGb3JJbnB1dFNlc3Npb24oZWRpdG9yKTsKKworICAgIGlm
ICghd2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgTWFya3VwLmR1bXAoZWRpdG9yLCAnTWFy
a3VwJyk7CisgICAgICAgIE1hcmt1cC5ub3RpZnlEb25lKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBnZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbihlZGl0b3IsIDApOworICAgIE1h
cmt1cC5kdW1wKGVkaXRvciwgJ0JlZm9yZSBtb3ZpbmcgZm9yd2FyZHMnKTsKKworICAgIGNvbnN0
IG1vdmVDb3VudCA9IDY7CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1vdmVDb3VudDsgaSsr
KSB7CisgICAgICAgIGF3YWl0IFVJSGVscGVyLmtleURvd24oJ3JpZ2h0QXJyb3cnLCBbJ2FsdEtl
eSddKTsKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIuZW5zdXJlUHJlc2VudGF0aW9uVXBkYXRlKCk7
CisgICAgICAgIE1hcmt1cC5kdW1wKGVkaXRvciwgYEFmdGVyIG1vdmluZyB0byB0aGUgcmlnaHQg
Ynkgd29yZCAoJHtpICsgMX0pYCk7CisgICAgfQorCisgICAgZ2V0U2VsZWN0aW9uKCkuc2V0UG9z
aXRpb24oZWRpdG9yLCBlZGl0b3IuY2hpbGROb2Rlcy5sZW5ndGgpOworICAgIE1hcmt1cC5kdW1w
KGVkaXRvciwgJ0JlZm9yZSBtb3ZpbmcgYmFja3dhcmRzJyk7CisKKyAgICBmb3IgKGxldCBpID0g
MDsgaSA8IG1vdmVDb3VudDsgaSsrKSB7CisgICAgICAgIGF3YWl0IFVJSGVscGVyLmtleURvd24o
J2xlZnRBcnJvdycsIFsnYWx0S2V5J10pOworICAgICAgICBhd2FpdCBVSUhlbHBlci5lbnN1cmVQ
cmVzZW50YXRpb25VcGRhdGUoKTsKKyAgICAgICAgTWFya3VwLmR1bXAoZWRpdG9yLCBgQWZ0ZXIg
bW92aW5nIHRvIHRoZSBsZWZ0IGJ5IHdvcmQgKCR7aSArIDF9KWApOworICAgIH0KKworICAgIGdl
dFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKGVkaXRvciwgMCk7CisgICAgTWFya3VwLmR1bXAoZWRp
dG9yLCAnQmVmb3JlIGV4dGVuZGluZyBmb3J3YXJkcycpOworCisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCBtb3ZlQ291bnQ7IGkrKykgeworICAgICAgICBhd2FpdCBVSUhlbHBlci5rZXlEb3duKCdy
aWdodEFycm93JywgWydzaGlmdEtleScsICdhbHRLZXknXSk7CisgICAgICAgIGF3YWl0IFVJSGVs
cGVyLmVuc3VyZVByZXNlbnRhdGlvblVwZGF0ZSgpOworICAgICAgICBNYXJrdXAuZHVtcChlZGl0
b3IsIGBBZnRlciBleHRlbmRpbmcgdG8gdGhlIHJpZ2h0IGJ5IHdvcmQgKCR7aSArIDF9KWApOwor
ICAgIH0KKworICAgIGdldFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKGVkaXRvciwgZWRpdG9yLmNo
aWxkTm9kZXMubGVuZ3RoKTsKKyAgICBNYXJrdXAuZHVtcChlZGl0b3IsICdCZWZvcmUgZXh0ZW5k
aW5nIGJhY2t3YXJkcycpOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtb3ZlQ291bnQ7IGkr
KykgeworICAgICAgICBhd2FpdCBVSUhlbHBlci5rZXlEb3duKCdsZWZ0QXJyb3cnLCBbJ3NoaWZ0
S2V5JywgJ2FsdEtleSddKTsKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIuZW5zdXJlUHJlc2VudGF0
aW9uVXBkYXRlKCk7CisgICAgICAgIE1hcmt1cC5kdW1wKGVkaXRvciwgYEFmdGVyIGV4dGVuZGlu
ZyB0byB0aGUgbGVmdCBieSB3b3JkICgke2kgKyAxfSlgKTsKKyAgICB9CisKKyAgICBNYXJrdXAu
bm90aWZ5RG9uZSgpOworfQorCitvbmxvYWQgPSBydW5UZXN0OworPC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9ImVkaXRvciIgY29udGVudGVkaXRhYmxlPgorICAgIDxkaXY+aGVs
bG8gd29ybGQ8L2Rpdj4KKyAgICA8YnI+CisgICAgPGRpdj5yZWQsIGdyZWVuLCAmIGJsdWUuPC9k
aXY+Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcv
c2VsZWN0aW9uL2lvcy9zZWxlY3Qtbm9uLWVkaXRhYmxlLXRleHQtdXNpbmcta2V5Ym9hcmQtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lv
cy9zZWxlY3Qtbm9uLWVkaXRhYmxlLXRleHQtdXNpbmcta2V5Ym9hcmQtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAyNDk2MDcpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3Mvc2Vs
ZWN0LW5vbi1lZGl0YWJsZS10ZXh0LXVzaW5nLWtleWJvYXJkLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMTEsNyArMTEsNyBAQCBQcmVzcyBTaGlmdCArIGxlZnQgYXJyb3cgdG8gc2Vs
ZWN0IHRoZSBwCiBQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJIZXIi
CiAKIFByZXNzIFNoaWZ0ICsgT3B0aW9uICsgcmlnaHQgYXJyb3cgdG8gc2VsZWN0IHRvIHRoZSBl
bmQgb2YgdGhlIHdvcmQ6Ci1QQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlz
ICJIZXJlJ3MgIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiSGVy
ZSdzIgogCiBQcmVzcyBTaGlmdCArIE9wdGlvbiArIGxlZnQgYXJyb3cgdG8gc2VsZWN0IHRvIHRo
ZSBiZWdpbm5pbmcgb2YgdGhlIHdvcmQ6CiBQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0
cmluZygpIGlzICJUaGUiCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3Mv
c2VsZWN0LW5vbi1lZGl0YWJsZS10ZXh0LXVzaW5nLWtleWJvYXJkLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL3NlbGVjdC1ub24tZWRpdGFibGUt
dGV4dC11c2luZy1rZXlib2FyZC5odG1sCShyZXZpc2lvbiAyNDk2MDcpCisrKyBMYXlvdXRUZXN0
cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3Mvc2VsZWN0LW5vbi1lZGl0YWJsZS10ZXh0LXVzaW5nLWtl
eWJvYXJkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgYXN5bmMgZnVuY3Rp
b24gdGVzdEV4dGVuZFNlbGVjdGlvblRvRW5kTwogCiAgICAgZGVidWcoIjxicj5QcmVzcyBTaGlm
dCArIE9wdGlvbiArIHJpZ2h0IGFycm93IHRvIHNlbGVjdCB0byB0aGUgZW5kIG9mIHRoZSB3b3Jk
OiIpOwogICAgIGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9
PiB3aW5kb3cudGVzdFJ1bm5lciAmJiBVSUhlbHBlci5rZXlEb3duKCJyaWdodEFycm93IiwgWyJz
aGlmdEtleSIsICJhbHRLZXkiXSkgLCBkb2N1bWVudCwgInNlbGVjdGlvbmNoYW5nZSIpOwotICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCki
LCAiSGVyZSdzICIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVj
dGlvbigpLnRvU3RyaW5nKCkiLCAiSGVyZSdzIik7CiB9CiAKIGFzeW5jIGZ1bmN0aW9uIHRlc3RF
eHRlbmRTZWxlY3Rpb25Ub0JlZ2lubmluZ09mV29yZCgpCkBAIC03OSw2ICs3OSwxMyBAQCBhc3lu
YyBmdW5jdGlvbiB0ZXN0RXh0ZW5kU2VsZWN0aW9uVG9CZWdpCiAgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJUaGUgbWlzZml0cy4i
KTsKIH0KIAorYXN5bmMgZnVuY3Rpb24gd2FpdEZvclNlY29uZGFyeVByZXNlbnRhdGlvblVwZGF0
ZUlmTmVlZGVkKCkKK3sKKyAgICAvLyBUaGVyZSBtaWdodCBiZSBhIHNlY29uZGFyeSBzZWxlY3Rp
b25jaGFuZ2UgZXZlbnQgYWZ0ZXIgbW92aW5nIGJ5IHBhcmFncmFwaCBib3VuZGFyeS4gU2VlIHdl
YmtpdC5vcmcvYi8xOTk4NTEKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIGF3
YWl0IFVJSGVscGVyLmVuc3VyZVByZXNlbnRhdGlvblVwZGF0ZSgpOworfQorCiBhc3luYyBmdW5j
dGlvbiB0ZXN0RXh0ZW5kU2VsZWN0aW9uVXAoKQogewogICAgIGF3YWl0IFVJSGVscGVyLmNhbGxG
dW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiBzZWxlY3Rpb24uc2V0QmFzZUFuZEV4dGVudChw
YXJhZ3JhcGhzWzFdLmZpcnN0Q2hpbGQsIDEsIHBhcmFncmFwaHNbMV0uZmlyc3RDaGlsZCwgMCks
IGRvY3VtZW50LCAic2VsZWN0aW9uY2hhbmdlIik7CkBAIC04Niw2ICs5Myw3IEBAIGFzeW5jIGZ1
bmN0aW9uIHRlc3RFeHRlbmRTZWxlY3Rpb25VcCgpCiAgICAgZGVidWcoIjxicj5QcmVzcyBTaGlm
dCArIHVwIGFycm93IHRvIHNlbGVjdCB1cDoiKTsKICAgICBhd2FpdCBVSUhlbHBlci5jYWxsRnVu
Y3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gd2luZG93LnRlc3RSdW5uZXIgJiYgVUlIZWxwZXIu
a2V5RG93bigidXBBcnJvdyIsIFsic2hpZnRLZXkiXSkgLCBkb2N1bWVudCwgInNlbGVjdGlvbmNo
YW5nZSIpOwogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigp
LnRvU3RyaW5nKCkiLCAiSGVyZSdzIHRvIHRoZSBjcmF6eSBvbmVzLlxuXG5UIik7CisgICAgYXdh
aXQgd2FpdEZvclNlY29uZGFyeVByZXNlbnRhdGlvblVwZGF0ZUlmTmVlZGVkKCk7CiB9CiAKIGFz
eW5jIGZ1bmN0aW9uIHRlc3RFeHRlbmRTZWxlY3Rpb25Eb3duKCkKQEAgLTk1LDYgKzEwMyw3IEBA
IGFzeW5jIGZ1bmN0aW9uIHRlc3RFeHRlbmRTZWxlY3Rpb25Eb3duKCkKICAgICBkZWJ1ZygiPGJy
PlByZXNzIFNoaWZ0ICsgZG93biBhcnJvdyB0byBzZWxlY3QgZG93bjoiKTsKICAgICBhd2FpdCBV
SUhlbHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gd2luZG93LnRlc3RSdW5u
ZXIgJiYgVUlIZWxwZXIua2V5RG93bigiZG93bkFycm93IiwgWyJzaGlmdEtleSJdKSAsIGRvY3Vt
ZW50LCAic2VsZWN0aW9uY2hhbmdlIik7CiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJUaGUgbWlzZml0cy5cblxuVCIpOworICAg
IGF3YWl0IHdhaXRGb3JTZWNvbmRhcnlQcmVzZW50YXRpb25VcGRhdGVJZk5lZWRlZCgpOwogfQog
CiBhc3luYyBmdW5jdGlvbiB0ZXN0RXh0ZW5kU2VsZWN0aW9uVG9FbmRPZlBhcmFncmFwaCgpCkBA
IC0xMDcsNiArMTE2LDggQEAgYXN5bmMgZnVuY3Rpb24gdGVzdEV4dGVuZFNlbGVjdGlvblRvRW5k
TwogICAgIGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiB3
aW5kb3cudGVzdFJ1bm5lciAmJiBVSUhlbHBlci5rZXlEb3duKCJkb3duQXJyb3ciLCBbInNoaWZ0
S2V5IiwgImFsdEtleSJdKSAsIGRvY3VtZW50LCAic2VsZWN0aW9uY2hhbmdlIik7CiAgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJI
ZXJlJ3MgdG8gdGhlIGNyYXp5IG9uZXMuIik7CiAKKyAgICBhd2FpdCB3YWl0Rm9yU2Vjb25kYXJ5
UHJlc2VudGF0aW9uVXBkYXRlSWZOZWVkZWQoKTsKKwogICAgIHRvZ2dsZU9ubHlTaG93VGVzdENv
bnRhaW5lcigpOwogfQogCkBAIC0xMTgsOCArMTI5LDExIEBAIGFzeW5jIGZ1bmN0aW9uIHRlc3RF
eHRlbmRTZWxlY3Rpb25Ub0JlZ2kKIAogICAgIGRlYnVnKCI8YnI+UHJlc3MgU2hpZnQgKyBPcHRp
b24gKyB1cCBhcnJvdyB0byBzZWxlY3QgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgcGFyYWdyYXBo
OiIpOwogICAgIGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9
PiB3aW5kb3cudGVzdFJ1bm5lciAmJiBVSUhlbHBlci5rZXlEb3duKCJ1cEFycm93IiwgWyJzaGlm
dEtleSIsICJhbHRLZXkiXSkgLCBkb2N1bWVudCwgInNlbGVjdGlvbmNoYW5nZSIpOworCiAgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIs
ICJUaGUgcmViZWxzLiIpOwogCisgICAgYXdhaXQgd2FpdEZvclNlY29uZGFyeVByZXNlbnRhdGlv
blVwZGF0ZUlmTmVlZGVkKCk7CisKICAgICB0b2dnbGVPbmx5U2hvd1Rlc3RDb250YWluZXIoKTsK
IH0KIApAQCAtMTMzLDYgKzE0Nyw4IEBAIGFzeW5jIGZ1bmN0aW9uIHRlc3RFeHRlbmRTZWxlY3Rp
b25Ub0VuZE8KICAgICBhd2FpdCBVSUhlbHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQo
KCkgPT4gd2luZG93LnRlc3RSdW5uZXIgJiYgVUlIZWxwZXIua2V5RG93bigiZG93bkFycm93Iiwg
WyJzaGlmdEtleSIsICJjdHJsS2V5Il0pICwgZG9jdW1lbnQsICJzZWxlY3Rpb25jaGFuZ2UiKTsK
ICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmlu
ZygpIiwgIkhlcmUncyB0byB0aGUgY3Jhenkgb25lcy5cblxuVGhlIG1pc2ZpdHMuXG5cblRoZSBy
ZWJlbHMuIik7CiAKKyAgICBhd2FpdCB3YWl0Rm9yU2Vjb25kYXJ5UHJlc2VudGF0aW9uVXBkYXRl
SWZOZWVkZWQoKTsKKwogICAgIHRvZ2dsZU9ubHlTaG93VGVzdENvbnRhaW5lcigpOwogfQogCkBA
IC0xNDYsNiArMTYyLDggQEAgYXN5bmMgZnVuY3Rpb24gdGVzdEV4dGVuZFNlbGVjdGlvblRvQmVn
aQogICAgIGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiB3
aW5kb3cudGVzdFJ1bm5lciAmJiBVSUhlbHBlci5rZXlEb3duKCJ1cEFycm93IiwgWyJzaGlmdEtl
eSIsICJjdHJsS2V5Il0pICwgZG9jdW1lbnQsICJzZWxlY3Rpb25jaGFuZ2UiKTsKICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIkhl
cmUncyB0byB0aGUgY3Jhenkgb25lcy5cblxuVGhlIG1pc2ZpdHMuIik7CiAKKyAgICBhd2FpdCB3
YWl0Rm9yU2Vjb25kYXJ5UHJlc2VudGF0aW9uVXBkYXRlSWZOZWVkZWQoKTsKKwogICAgIHRvZ2ds
ZU9ubHlTaG93VGVzdENvbnRhaW5lcigpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378282</attachid>
            <date>2019-09-06 23:12:38 -0700</date>
            <delta_ts>2019-09-06 23:21:57 -0700</delta_ts>
            <desc>GTK build fix attempt</desc>
            <filename>bug-201575-20190906231237.patch</filename>
            <type>text/plain</type>
            <size>46894</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0OTYwNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE5LTA5LTA2ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIE9wdGlvbiArIGFycm93IG1vdmVz
IGNhcmV0IHBhc3Qgd2hpdGVzcGFjZSBvbiBpT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTU3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoZSBidWcgd2FzIGNhdXNlZCBieSBmaW5kTmV4dFdvcmRG
cm9tSW5kZXggb24gaU9TIGJlaGF2aW5nIGRpZmZlcmVudGx5IGZyb20gbWFjT1MgYW5kIFVJS2l0
CisgICAgICAgIGJ5IHNraXBwaW5nIHRyYWlsaW5nIHdoaXRlc3BhY2UgYWZ0ZXIgYSB3b3JkIHdo
ZW4gbW92aW5nIGZvcndhcmQgYW5kIG5vdCBza2lwcGluZyBsZWFkaW5nCisgICAgICAgIHdoaXRl
c3BhY2Ugd2hlbiBtb3ZpbmcgYmFja3dhcmQuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1
Y2VzIGEgbmV3IG1vZGUgKFN0b3BBZnRlcldvcmQpIG9mIGZpbmROZXh0V29yZEZyb21JbmRleCBp
biBpT1MgdGhhdAorICAgICAgICBiZXR0ZXIgbWF0Y2hlcyB0aGUgYmVoYXZpb3Igb2YgZmluZE5l
eHRXb3JkRnJvbUluZGV4IG9uIG1hY09TIGFuZCBVSUtpdCwgYW5kIHVzZSBpdCBpbgorICAgICAg
ICB2YXJpb3VzIG1vZGlmeSogZnVuY3Rpb25zIG9mIEZyYW1lU2VsZWN0aW9uIHdoZW4gdGhlIHNl
bGVjdGlvbiB1cGRhdGUgaXMgdHJpZ2dlcmVkIGJ5IHVzZXIuCisKKyAgICAgICAgQWxsIG90aGVy
IGNhbGwgc2l0ZXMgYXMgd2VsbCBhcyB3aGVuIG1vZGlmeSogZnVuY3Rpb25zIGFyZSBpbnZvbGVk
IGZyb20gc2NyaXB0cywKKyAgICAgICAgd2UgdXNlIHRoZSBsZWdhY3kgbW9kZSAoTGVnYWN5U3Rv
cEJlZm9yZVdvcmQpIHRvIG1pbmltaXplIHRoZSBjb21wYXRpYmlsaXR5IHJpc2sgZm9yIG5vdy4K
KworICAgICAgICBUZXN0OiBlZGl0aW5nL3NlbGVjdGlvbi9pb3MvbW92ZS1ieS13b3JkLXdpdGgt
a2V5Ym9hcmQuaHRtbAorCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjp1cGRhdGVNYXJrZXJzRm9yV29yZHNBZmZlY3RlZEJ5RWRpdGluZyk6
CisgICAgICAgICogZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpuZXh0V29yZFdoaXRlc3BhY2VNb2RlSW5JT1MpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVT
ZWxlY3Rpb246Om5leHRXb3JkUG9zaXRpb25Gb3JQbGF0Zm9ybSk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5RXh0ZW5kaW5nUmlnaHQpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4dGVuZGluZ0ZvcndhcmQpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVTZWxlY3Rpb246Om1vZGlmeU1vdmluZ1JpZ2h0KToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lU2VsZWN0aW9uOjptb2RpZnlNb3ZpbmdGb3J3YXJkKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeHRlbmRpbmdMZWZ0KToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeHRlbmRpbmdCYWNrd2FyZCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW92aW5nTGVmdCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW92aW5nQmFja3dhcmQpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVTZWxlY3Rpb246Om1vZGlmeSk6CisgICAgICAgICogZWRpdGluZy9GcmFtZVNl
bGVjdGlvbi5oOgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNlYXJjaEJ1ZmZlcjo6aXNXb3JkU3RhcnRNYXRjaCBjb25zdCk6CisgICAgICAg
ICogZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJldmlvdXNX
b3JkUG9zaXRpb25Cb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjpwcmV2aW91c1dvcmRQb3Np
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpuZXh0V29yZFBvc2l0aW9uQm91bmRhcnkpOgorICAg
ICAgICAoV2ViQ29yZTo6bmV4dFdvcmRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpuZXh0
V29yZEJvdW5kYXJ5SW5EaXJlY3Rpb24pOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVVuaXRz
Lmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Qm91bmRhcmllcy5oOgorICAgICAgICAq
IHBsYXRmb3JtL3RleHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tOgorICAgICAgICAoV2ViQ29yZTo6
ZmluZE5leHRXb3JkRnJvbUluZGV4KTogQWRkZWQgYSBuZXcgbW9kZS4KKwogMjAxOS0wOS0wNiAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBJbmNvcnJl
Y3Qgc2VsZWN0aW9uIHJlY3QgcmV2ZWFsZWQgYWZ0ZXIgcGFzdGluZyBpbWFnZXMgaW4gYSBjb250
ZW50ZWRpdGFibGUgZWxlbWVudApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9h
dGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0
LmNwcAkocmV2aXNpb24gMjQ5NjA3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9h
dGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
MzcsOCArNTM3LDggQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1dvcmRFbmRQbwog
ICAgIC8vIFdlIG1vdmUgZm9yd2FyZCBhbmQgdGhlbiBiYWNrd2FyZCB0byBwb3NpdGlvbiBvdXJz
ZWx2ZXMgYXQgdGhlIGJlZ2lubmluZwogICAgIC8vIG9mIHRoZSBjdXJyZW50IHdvcmQgZm9yIHRo
aXMgYm91bmRhcnksIG1ha2luZyB0aGUgbW9zdCBvZiB0aGUgc2VtYW50aWNzCiAgICAgLy8gb2Yg
cHJldmlvdXNXb3JkUG9zaXRpb24oKSBhbmQgbmV4dFdvcmRQb3NpdGlvbigpLgotICAgIFZpc2li
bGVQb3NpdGlvbiBwb3NpdGlvbkF0U3RhcnRPZkN1cnJlbnRXb3JkID0gcHJldmlvdXNXb3JkUG9z
aXRpb24obmV4dFdvcmRQb3NpdGlvbihwb3NpdGlvbikpOwotICAgIFZpc2libGVQb3NpdGlvbiBw
b3NpdGlvbkF0UHJldmlvdXNXb3JkID0gcHJldmlvdXNXb3JkUG9zaXRpb24ocG9zaXRpb24pOwor
ICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkF0U3RhcnRPZkN1cnJlbnRXb3JkID0gcHJldmlv
dXNXb3JkUG9zaXRpb24obmV4dFdvcmRQb3NpdGlvbihwb3NpdGlvbiwgTmV4dFdvcmRNb2RlSW5J
T1M6OkxlZ2FjeVN0b3BCZWZvcmVXb3JkKSwgTmV4dFdvcmRNb2RlSW5JT1M6OkxlZ2FjeVN0b3BC
ZWZvcmVXb3JkKTsKKyAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25BdFByZXZpb3VzV29yZCA9
IHByZXZpb3VzV29yZFBvc2l0aW9uKHBvc2l0aW9uLCBOZXh0V29yZE1vZGVJbklPUzo6TGVnYWN5
U3RvcEJlZm9yZVdvcmQpOwogCiAgICAgLy8gTmVlZCB0byBjb25zaWRlciBzcGVjaWFsIGNhc2Vz
IChwdW5jdHVhdGlvbikgd2hlbiB3ZSBhcmUgaW4gdGhlIGxhc3Qgd29yZCBvZiBhIHNlbnRlbmNl
LgogICAgIGlmIChpc1N0YXJ0T2ZXb3JkKHBvc2l0aW9uKSAmJiBwb3NpdGlvbkF0UHJldmlvdXNX
b3JkICE9IHBvc2l0aW9uICYmIHBvc2l0aW9uQXRQcmV2aW91c1dvcmQgPT0gcG9zaXRpb25BdFN0
YXJ0T2ZDdXJyZW50V29yZCkKQEAgLTU0NywxMiArNTQ3LDEzIEBAIHN0YXRpYyBWaXNpYmxlUG9z
aXRpb24gcHJldmlvdXNXb3JkRW5kUG8KICAgICAvLyBJbiBvcmRlciB0byBza2lwIHNwYWNlcyB3
aGVuIG1vdmluZyBsZWZ0LCB3ZSBhZHZhbmNlIG9uZSB3b3JkIGJhY2t3YXJkcwogICAgIC8vIGFu
ZCB0aGVuIG1vdmUgb25lIHdvcmQgZm9yd2FyZC4gVGhpcyB3aWxsIHB1dCB1cyBhdCB0aGUgYmVn
aW5uaW5nIG9mCiAgICAgLy8gdGhlIHdvcmQgZm9sbG93aW5nLgotICAgIFZpc2libGVQb3NpdGlv
biBwb3NpdGlvbkJlZm9yZVNwYWNpbmdBbmRQcmVjZWVkaW5nV29yZCA9IHByZXZpb3VzV29yZFBv
c2l0aW9uKHBvc2l0aW9uQXRTdGFydE9mQ3VycmVudFdvcmQpOworICAgIFZpc2libGVQb3NpdGlv
biBwb3NpdGlvbkJlZm9yZVNwYWNpbmdBbmRQcmVjZWVkaW5nV29yZCA9IHByZXZpb3VzV29yZFBv
c2l0aW9uKHBvc2l0aW9uQXRTdGFydE9mQ3VycmVudFdvcmQsIE5leHRXb3JkTW9kZUluSU9TOjpM
ZWdhY3lTdG9wQmVmb3JlV29yZCk7CiAKICAgICBpZiAocG9zaXRpb25CZWZvcmVTcGFjaW5nQW5k
UHJlY2VlZGluZ1dvcmQgIT0gcG9zaXRpb25BdFN0YXJ0T2ZDdXJyZW50V29yZCkKLSAgICAgICAg
cG9zaXRpb25BdFN0YXJ0T2ZDdXJyZW50V29yZCA9IG5leHRXb3JkUG9zaXRpb24ocG9zaXRpb25C
ZWZvcmVTcGFjaW5nQW5kUHJlY2VlZGluZ1dvcmQpOworICAgICAgICBwb3NpdGlvbkF0U3RhcnRP
ZkN1cnJlbnRXb3JkID0gbmV4dFdvcmRQb3NpdGlvbihwb3NpdGlvbkJlZm9yZVNwYWNpbmdBbmRQ
cmVjZWVkaW5nV29yZCwgTmV4dFdvcmRNb2RlSW5JT1M6OkxlZ2FjeVN0b3BCZWZvcmVXb3JkKTsK
IAotICAgIGJvb2wgbW92aW5nRm9yd2FyZE1vdmVkUG9zaXRpb25Ub0VuZE9mQ3VycmVudFdvcmQg
PSBuZXh0V29yZFBvc2l0aW9uKHBvc2l0aW9uQXRTdGFydE9mQ3VycmVudFdvcmQpID09IHByZXZp
b3VzV29yZFBvc2l0aW9uKG5leHRXb3JkUG9zaXRpb24ocG9zaXRpb24pKTsKKyAgICBib29sIG1v
dmluZ0ZvcndhcmRNb3ZlZFBvc2l0aW9uVG9FbmRPZkN1cnJlbnRXb3JkID0gbmV4dFdvcmRQb3Np
dGlvbihwb3NpdGlvbkF0U3RhcnRPZkN1cnJlbnRXb3JkLCBOZXh0V29yZE1vZGVJbklPUzo6TGVn
YWN5U3RvcEJlZm9yZVdvcmQpCisgICAgICAgID09IHByZXZpb3VzV29yZFBvc2l0aW9uKG5leHRX
b3JkUG9zaXRpb24ocG9zaXRpb24sIE5leHRXb3JkTW9kZUluSU9TOjpMZWdhY3lTdG9wQmVmb3Jl
V29yZCksIE5leHRXb3JkTW9kZUluSU9TOjpMZWdhY3lTdG9wQmVmb3JlV29yZCk7CiAgICAgaWYg
KG1vdmluZ0ZvcndhcmRNb3ZlZFBvc2l0aW9uVG9FbmRPZkN1cnJlbnRXb3JkKQogICAgICAgICBw
b3NpdGlvbkF0U3RhcnRPZkN1cnJlbnRXb3JkID0gcG9zaXRpb25CZWZvcmVTcGFjaW5nQW5kUHJl
Y2VlZGluZ1dvcmQ7CiAKQEAgLTU3Myw3ICs1NzQsNyBAQCBzdGF0aWMgVmlzaWJsZVNlbGVjdGlv
biB3b3JkQXRQb3NpdGlvbkZvCiAgICAgICAgIGlmIChpc1N0YXJ0T2ZXb3JkKHBvc2l0aW9uKSAm
JiBkZXByZWNhdGVkSXNFZGl0aW5nV2hpdGVzcGFjZShwb3NpdGlvbi5jaGFyYWN0ZXJCZWZvcmUo
KSkpCiAgICAgICAgICAgICBzdGFydFBvc2l0aW9uID0gcG9zaXRpb247CiAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgIHN0YXJ0UG9zaXRpb24gPSBwcmV2aW91c1dvcmRQb3NpdGlvbihwb3NpdGlv
bik7CisgICAgICAgICAgICBzdGFydFBvc2l0aW9uID0gcHJldmlvdXNXb3JkUG9zaXRpb24ocG9z
aXRpb24sIE5leHRXb3JkTW9kZUluSU9TOjpMZWdhY3lTdG9wQmVmb3JlV29yZCk7CiAgICAgICAg
IGVuZFBvc2l0aW9uID0gbmV4dFdvcmRTdGFydFBvc2l0aW9uKHN0YXJ0UG9zaXRpb24pOwogCiAg
ICAgICAgIC8vIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgd2UgbG9vayBmb3IgdGhlIHdvcmQg
aW4gdGhlIGN1cnJlbnQgbGluZSB3aGVuCkBAIC01ODcsNyArNTg4LDcgQEAgc3RhdGljIFZpc2li
bGVTZWxlY3Rpb24gd29yZEF0UG9zaXRpb25GbwogCiAgICAgY2FzZSBBVEtfVEVYVF9CT1VOREFS
WV9XT1JEX0VORDoKICAgICAgICAgc3RhcnRQb3NpdGlvbiA9IHByZXZpb3VzV29yZEVuZFBvc2l0
aW9uKHBvc2l0aW9uKTsKLSAgICAgICAgZW5kUG9zaXRpb24gPSBuZXh0V29yZFBvc2l0aW9uKHN0
YXJ0UG9zaXRpb24pOworICAgICAgICBlbmRQb3NpdGlvbiA9IG5leHRXb3JkUG9zaXRpb24oc3Rh
cnRQb3NpdGlvbiwgTmV4dFdvcmRNb2RlSW5JT1M6OkxlZ2FjeVN0b3BCZWZvcmVXb3JkKTsKICAg
ICAgICAgYnJlYWs7CiAKICAgICBkZWZhdWx0OgpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcAkocmV2aXNpb24gMjQ5NjA3KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDI2LDcgKzMwMjYsNyBAQCB2b2lkIEVkaXRvcjo6dXBk
YXRlTWFya2Vyc0ZvcldvcmRzQWZmZWN0CiAgICAgLy8gSWYgZG9Ob3RSZW1vdmVJZlNlbGVjdGlv
bkF0V29yZEJvdW5kYXJ5IGlzIHRydWUsIGFuZCBmaXJzdCB3b3JkIGVuZHMgYXQgdGhlIHN0YXJ0
IG9mIHNlbGVjdGlvbiwKICAgICAvLyB3ZSBjaG9vc2UgbmV4dCB3b3JkIGFzIHRoZSBmaXJzdCB3
b3JkLgogICAgIGlmIChkb05vdFJlbW92ZUlmU2VsZWN0aW9uQXRXb3JkQm91bmRhcnkgJiYgZW5k
T2ZGaXJzdFdvcmQgPT0gc3RhcnRPZlNlbGVjdGlvbikgewotICAgICAgICBzdGFydE9mRmlyc3RX
b3JkID0gbmV4dFdvcmRQb3NpdGlvbihzdGFydE9mRmlyc3RXb3JkKTsKKyAgICAgICAgc3RhcnRP
ZkZpcnN0V29yZCA9IG5leHRXb3JkUG9zaXRpb24oc3RhcnRPZkZpcnN0V29yZCwgTmV4dFdvcmRN
b2RlSW5JT1M6OkxlZ2FjeVN0b3BCZWZvcmVXb3JkKTsKICAgICAgICAgZW5kT2ZGaXJzdFdvcmQg
PSBlbmRPZldvcmQoc3RhcnRPZkZpcnN0V29yZCwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KTsKICAg
ICAgICAgaWYgKHN0YXJ0T2ZGaXJzdFdvcmQgPT0gZW5kT2ZTZWxlY3Rpb24pCiAgICAgICAgICAg
ICByZXR1cm47CkBAIC0zMDM1LDcgKzMwMzUsNyBAQCB2b2lkIEVkaXRvcjo6dXBkYXRlTWFya2Vy
c0ZvcldvcmRzQWZmZWN0CiAgICAgLy8gSWYgZG9Ob3RSZW1vdmVJZlNlbGVjdGlvbkF0V29yZEJv
dW5kYXJ5IGlzIHRydWUsIGFuZCBsYXN0IHdvcmQgYmVnaW5zIGF0IHRoZSBlbmQgb2Ygc2VsZWN0
aW9uLAogICAgIC8vIHdlIGNob29zZSBwcmV2aW91cyB3b3JkIGFzIHRoZSBsYXN0IHdvcmQuCiAg
ICAgaWYgKGRvTm90UmVtb3ZlSWZTZWxlY3Rpb25BdFdvcmRCb3VuZGFyeSAmJiBzdGFydE9mTGFz
dFdvcmQgPT0gZW5kT2ZTZWxlY3Rpb24pIHsKLSAgICAgICAgc3RhcnRPZkxhc3RXb3JkID0gcHJl
dmlvdXNXb3JkUG9zaXRpb24oc3RhcnRPZkxhc3RXb3JkKTsKKyAgICAgICAgc3RhcnRPZkxhc3RX
b3JkID0gcHJldmlvdXNXb3JkUG9zaXRpb24oc3RhcnRPZkxhc3RXb3JkLCBOZXh0V29yZE1vZGVJ
bklPUzo6TGVnYWN5U3RvcEJlZm9yZVdvcmQpOwogICAgICAgICBlbmRPZkxhc3RXb3JkID0gZW5k
T2ZXb3JkKHN0YXJ0T2ZMYXN0V29yZCwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KTsKICAgICAgICAg
aWYgKGVuZE9mTGFzdFdvcmQgPT0gc3RhcnRPZlNlbGVjdGlvbikKICAgICAgICAgICAgIHJldHVy
bjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCShyZXZp
c2lvbiAyNDk2MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzExLDIwICs3MTEsMjYgQEAgVmlzaWJsZVBvc2l0aW9uIEZy
YW1lU2VsZWN0aW9uOjplbmRGb3JQbAogICAgIHJldHVybiBwb3NpdGlvbkZvclBsYXRmb3JtKGZh
bHNlKTsKIH0KIAotVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjpuZXh0V29yZFBvc2l0
aW9uRm9yUGxhdGZvcm0oY29uc3QgVmlzaWJsZVBvc2l0aW9uICZvcmlnaW5hbFBvc2l0aW9uKQor
c3RhdGljIE5leHRXb3JkTW9kZUluSU9TIG5leHRXb3JkV2hpdGVzcGFjZU1vZGVJbklPUyhFVXNl
clRyaWdnZXJlZCB1c2VyVHJpZ2dlcmVkKQogewotICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlv
bkFmdGVyQ3VycmVudFdvcmQgPSBuZXh0V29yZFBvc2l0aW9uKG9yaWdpbmFsUG9zaXRpb24pOwor
ICAgIHJldHVybiB1c2VyVHJpZ2dlcmVkID09IFVzZXJUcmlnZ2VyZWQgPyBOZXh0V29yZE1vZGVJ
bklPUzo6U3RvcEFmdGVyV29yZCA6IE5leHRXb3JkTW9kZUluSU9TOjpMZWdhY3lTdG9wQmVmb3Jl
V29yZDsKK30KKworVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjpuZXh0V29yZFBvc2l0
aW9uRm9yUGxhdGZvcm0oY29uc3QgVmlzaWJsZVBvc2l0aW9uICZvcmlnaW5hbFBvc2l0aW9uLCBF
VXNlclRyaWdnZXJlZCB1c2VyVHJpZ2dlcmVkKQoreworICAgIFZpc2libGVQb3NpdGlvbiBwb3Np
dGlvbkFmdGVyQ3VycmVudFdvcmQgPSBuZXh0V29yZFBvc2l0aW9uKG9yaWdpbmFsUG9zaXRpb24s
IG5leHRXb3JkV2hpdGVzcGFjZU1vZGVJbklPUyh1c2VyVHJpZ2dlcmVkKSk7CiAKICAgICBpZiAo
bV9mcmFtZSAmJiBtX2ZyYW1lLT5lZGl0b3IoKS5iZWhhdmlvcigpLnNob3VsZFNraXBTcGFjZVdo
ZW5Nb3ZpbmdSaWdodCgpKSB7CiAgICAgICAgIC8vIEluIG9yZGVyIHRvIHNraXAgc3BhY2VzIHdo
ZW4gbW92aW5nIHJpZ2h0LCB3ZSBhZHZhbmNlIG9uZQogICAgICAgICAvLyB3b3JkIGZ1cnRoZXIg
YW5kIHRoZW4gbW92ZSBvbmUgd29yZCBiYWNrLiBHaXZlbiB0aGUKICAgICAgICAgLy8gc2VtYW50
aWNzIG9mIHByZXZpb3VzV29yZFBvc2l0aW9uKCkgdGhpcyB3aWxsIHB1dCB1cyBhdCB0aGUKICAg
ICAgICAgLy8gYmVnaW5uaW5nIG9mIHRoZSB3b3JkIGZvbGxvd2luZy4KLSAgICAgICAgVmlzaWJs
ZVBvc2l0aW9uIHBvc2l0aW9uQWZ0ZXJTcGFjaW5nQW5kRm9sbG93aW5nV29yZCA9IG5leHRXb3Jk
UG9zaXRpb24ocG9zaXRpb25BZnRlckN1cnJlbnRXb3JkKTsKKyAgICAgICAgYXV0byB3aGl0ZXNw
YWNlTW9kZSA9IG5leHRXb3JkV2hpdGVzcGFjZU1vZGVJbklPUyh1c2VyVHJpZ2dlcmVkKTsKKyAg
ICAgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uQWZ0ZXJTcGFjaW5nQW5kRm9sbG93aW5nV29y
ZCA9IG5leHRXb3JkUG9zaXRpb24ocG9zaXRpb25BZnRlckN1cnJlbnRXb3JkLCB3aGl0ZXNwYWNl
TW9kZSk7CiAgICAgICAgIGlmIChwb3NpdGlvbkFmdGVyU3BhY2luZ0FuZEZvbGxvd2luZ1dvcmQg
IT0gcG9zaXRpb25BZnRlckN1cnJlbnRXb3JkKQotICAgICAgICAgICAgcG9zaXRpb25BZnRlckN1
cnJlbnRXb3JkID0gcHJldmlvdXNXb3JkUG9zaXRpb24ocG9zaXRpb25BZnRlclNwYWNpbmdBbmRG
b2xsb3dpbmdXb3JkKTsKKyAgICAgICAgICAgIHBvc2l0aW9uQWZ0ZXJDdXJyZW50V29yZCA9IHBy
ZXZpb3VzV29yZFBvc2l0aW9uKHBvc2l0aW9uQWZ0ZXJTcGFjaW5nQW5kRm9sbG93aW5nV29yZCwg
d2hpdGVzcGFjZU1vZGUpOwogCi0gICAgICAgIGJvb2wgbW92aW5nQmFja3dhcmRzTW92ZWRQb3Np
dGlvblRvU3RhcnRPZkN1cnJlbnRXb3JkID0gcG9zaXRpb25BZnRlckN1cnJlbnRXb3JkID09IHBy
ZXZpb3VzV29yZFBvc2l0aW9uKG5leHRXb3JkUG9zaXRpb24ob3JpZ2luYWxQb3NpdGlvbikpOwor
ICAgICAgICBib29sIG1vdmluZ0JhY2t3YXJkc01vdmVkUG9zaXRpb25Ub1N0YXJ0T2ZDdXJyZW50
V29yZCA9IHBvc2l0aW9uQWZ0ZXJDdXJyZW50V29yZCA9PSBwcmV2aW91c1dvcmRQb3NpdGlvbihu
ZXh0V29yZFBvc2l0aW9uKG9yaWdpbmFsUG9zaXRpb24sIHdoaXRlc3BhY2VNb2RlKSwgd2hpdGVz
cGFjZU1vZGUpOwogICAgICAgICBpZiAobW92aW5nQmFja3dhcmRzTW92ZWRQb3NpdGlvblRvU3Rh
cnRPZkN1cnJlbnRXb3JkKQogICAgICAgICAgICAgcG9zaXRpb25BZnRlckN1cnJlbnRXb3JkID0g
cG9zaXRpb25BZnRlclNwYWNpbmdBbmRGb2xsb3dpbmdXb3JkOwogICAgIH0KQEAgLTczOSw3ICs3
NDUsNyBAQCBzdGF0aWMgdm9pZCBhZGp1c3RQb3NpdGlvbkZvclVzZXJTZWxlY3RBCiB9CiAjZW5k
aWYKIAotVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeHRlbmRpbmdSaWdo
dChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCitWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxl
Y3Rpb246Om1vZGlmeUV4dGVuZGluZ1JpZ2h0KFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwg
RVVzZXJUcmlnZ2VyZWQgdXNlclRyaWdnZXJlZCkKIHsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9z
KG1fc2VsZWN0aW9uLmV4dGVudCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKTsKIApAQCAtNzU3
LDE1ICs3NjMsMTUgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeAog
ICAgICAgICBicmVhazsKICAgICBjYXNlIFdvcmRHcmFudWxhcml0eToKICAgICAgICAgaWYgKGRp
cmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpCi0gICAgICAg
ICAgICBwb3MgPSBuZXh0V29yZFBvc2l0aW9uRm9yUGxhdGZvcm0ocG9zKTsKKyAgICAgICAgICAg
IHBvcyA9IG5leHRXb3JkUG9zaXRpb25Gb3JQbGF0Zm9ybShwb3MsIHVzZXJUcmlnZ2VyZWQpOwog
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBwb3MgPSBwcmV2aW91c1dvcmRQb3NpdGlvbihwb3Mp
OworICAgICAgICAgICAgcG9zID0gcHJldmlvdXNXb3JkUG9zaXRpb24ocG9zLCBuZXh0V29yZFdo
aXRlc3BhY2VNb2RlSW5JT1ModXNlclRyaWdnZXJlZCkpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIExpbmVCb3VuZGFyeToKICAgICAgICAgaWYgKGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2so
KSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpCi0gICAgICAgICAgICBwb3MgPSBtb2RpZnlFeHRlbmRp
bmdGb3J3YXJkKGdyYW51bGFyaXR5KTsKKyAgICAgICAgICAgIHBvcyA9IG1vZGlmeUV4dGVuZGlu
Z0ZvcndhcmQoZ3JhbnVsYXJpdHksIHVzZXJUcmlnZ2VyZWQpOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBwb3MgPSBtb2RpZnlFeHRlbmRpbmdCYWNrd2FyZChncmFudWxhcml0eSk7CisgICAg
ICAgICAgICBwb3MgPSBtb2RpZnlFeHRlbmRpbmdCYWNrd2FyZChncmFudWxhcml0eSwgdXNlclRy
aWdnZXJlZCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0eToK
ICAgICBjYXNlIExpbmVHcmFudWxhcml0eToKQEAgLTc3NCw3ICs3ODAsNyBAQCBWaXNpYmxlUG9z
aXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4CiAgICAgY2FzZSBQYXJhZ3JhcGhCb3VuZGFy
eToKICAgICBjYXNlIERvY3VtZW50Qm91bmRhcnk6CiAgICAgICAgIC8vIEZJWE1FOiBpbXBsZW1l
bnQgYWxsIG9mIHRoZSBhYm92ZT8KLSAgICAgICAgcG9zID0gbW9kaWZ5RXh0ZW5kaW5nRm9yd2Fy
ZChncmFudWxhcml0eSk7CisgICAgICAgIHBvcyA9IG1vZGlmeUV4dGVuZGluZ0ZvcndhcmQoZ3Jh
bnVsYXJpdHksIHVzZXJUcmlnZ2VyZWQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIERvY3Vt
ZW50R3JhbnVsYXJpdHk6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNzg2LDcg
Kzc5Miw3IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5RXgKICAgICBy
ZXR1cm4gcG9zOwogfQogCi1WaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4
dGVuZGluZ0ZvcndhcmQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQorVmlzaWJsZVBvc2l0
aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeHRlbmRpbmdGb3J3YXJkKFRleHRHcmFudWxhcml0
eSBncmFudWxhcml0eSwgRVVzZXJUcmlnZ2VyZWQgdXNlclRyaWdnZXJlZCkKIHsKICAgICBWaXNp
YmxlUG9zaXRpb24gcG9zKG1fc2VsZWN0aW9uLmV4dGVudCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0
eSgpKTsKICAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7CkBAIC03OTQsNyArODAwLDcgQEAgVmlz
aWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeAogICAgICAgICBwb3MgPSBwb3Mu
bmV4dChDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgV29yZEdyYW51bGFyaXR5OgotICAgICAgICBwb3MgPSBuZXh0V29yZFBvc2l0aW9uRm9yUGxh
dGZvcm0ocG9zKTsKKyAgICAgICAgcG9zID0gbmV4dFdvcmRQb3NpdGlvbkZvclBsYXRmb3JtKHBv
cywgdXNlclRyaWdnZXJlZCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU2VudGVuY2VHcmFu
dWxhcml0eToKICAgICAgICAgcG9zID0gbmV4dFNlbnRlbmNlUG9zaXRpb24ocG9zKTsKQEAgLTgz
MSw3ICs4MzcsNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4CiAg
ICAgcmV0dXJuIHBvczsKIH0KIAotVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2Rp
ZnlNb3ZpbmdSaWdodChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wqIHJlYWNoZWRC
b3VuZGFyeSkKK1Zpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW92aW5nUmln
aHQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBFVXNlclRyaWdnZXJlZCB1c2VyVHJpZ2dl
cmVkLCBib29sKiByZWFjaGVkQm91bmRhcnkpCiB7CiAgICAgaWYgKHJlYWNoZWRCb3VuZGFyeSkK
ICAgICAgICAgKnJlYWNoZWRCb3VuZGFyeSA9IGZhbHNlOwpAQCAtODYxLDcgKzg2Nyw3IEBAIFZp
c2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW8KICAgICBjYXNlIFBhcmFncmFw
aEJvdW5kYXJ5OgogICAgIGNhc2UgRG9jdW1lbnRCb3VuZGFyeToKICAgICAgICAgLy8gRklYTUU6
IEltcGxlbWVudCBhbGwgb2YgdGhlIGFib3ZlLgotICAgICAgICBwb3MgPSBtb2RpZnlNb3ZpbmdG
b3J3YXJkKGdyYW51bGFyaXR5LCByZWFjaGVkQm91bmRhcnkpOworICAgICAgICBwb3MgPSBtb2Rp
ZnlNb3ZpbmdGb3J3YXJkKGdyYW51bGFyaXR5LCB1c2VyVHJpZ2dlcmVkLCByZWFjaGVkQm91bmRh
cnkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIExpbmVCb3VuZGFyeToKICAgICAgICAgcG9z
ID0gcmlnaHRCb3VuZGFyeU9mTGluZShzdGFydEZvclBsYXRmb3JtKCksIGRpcmVjdGlvbk9mRW5j
bG9zaW5nQmxvY2soKSwgcmVhY2hlZEJvdW5kYXJ5KTsKQEAgLTg3Myw3ICs4NzksNyBAQCBWaXNp
YmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeU1vCiAgICAgcmV0dXJuIHBvczsKIH0K
IAotVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNb3ZpbmdGb3J3YXJkKFRl
eHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgYm9vbCogcmVhY2hlZEJvdW5kYXJ5KQorVmlzaWJs
ZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNb3ZpbmdGb3J3YXJkKFRleHRHcmFudWxh
cml0eSBncmFudWxhcml0eSwgRVVzZXJUcmlnZ2VyZWQgdXNlclRyaWdnZXJlZCwgYm9vbCogcmVh
Y2hlZEJvdW5kYXJ5KQogewogICAgIGlmIChyZWFjaGVkQm91bmRhcnkpCiAgICAgICAgICpyZWFj
aGVkQm91bmRhcnkgPSBmYWxzZTsKQEAgLTkwMyw3ICs5MDksNyBAQCBWaXNpYmxlUG9zaXRpb24g
RnJhbWVTZWxlY3Rpb246Om1vZGlmeU1vCiAgICAgICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRp
b24obV9zZWxlY3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpLm5leHQoQ2Fu
bm90Q3Jvc3NFZGl0aW5nQm91bmRhcnksIHJlYWNoZWRCb3VuZGFyeSk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgV29yZEdyYW51bGFyaXR5OgotICAgICAgICBwb3MgPSBuZXh0V29yZFBvc2l0
aW9uRm9yUGxhdGZvcm0oY3VycmVudFBvc2l0aW9uKTsKKyAgICAgICAgcG9zID0gbmV4dFdvcmRQ
b3NpdGlvbkZvclBsYXRmb3JtKGN1cnJlbnRQb3NpdGlvbiwgdXNlclRyaWdnZXJlZCk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0eToKICAgICAgICAgcG9zID0g
bmV4dFNlbnRlbmNlUG9zaXRpb24oY3VycmVudFBvc2l0aW9uKTsKQEAgLTk1Niw3ICs5NjIsNyBA
QCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeU1vCiAgICAgcmV0dXJuIHBv
czsKIH0KIAotVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeHRlbmRpbmdM
ZWZ0KFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSkKK1Zpc2libGVQb3NpdGlvbiBGcmFtZVNl
bGVjdGlvbjo6bW9kaWZ5RXh0ZW5kaW5nTGVmdChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHks
IEVVc2VyVHJpZ2dlcmVkIHVzZXJUcmlnZ2VyZWQpCiB7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBv
cyhtX3NlbGVjdGlvbi5leHRlbnQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSk7CiAKQEAgLTk3
NCwxNSArOTgwLDE1IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5RXgK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6CiAgICAgICAgIGlmIChk
aXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKQotICAgICAg
ICAgICAgcG9zID0gcHJldmlvdXNXb3JkUG9zaXRpb24ocG9zKTsKKyAgICAgICAgICAgIHBvcyA9
IHByZXZpb3VzV29yZFBvc2l0aW9uKHBvcywgbmV4dFdvcmRXaGl0ZXNwYWNlTW9kZUluSU9TKHVz
ZXJUcmlnZ2VyZWQpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcG9zID0gbmV4dFdvcmRQ
b3NpdGlvbkZvclBsYXRmb3JtKHBvcyk7CisgICAgICAgICAgICBwb3MgPSBuZXh0V29yZFBvc2l0
aW9uRm9yUGxhdGZvcm0ocG9zLCB1c2VyVHJpZ2dlcmVkKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBMaW5lQm91bmRhcnk6CiAgICAgICAgIGlmIChkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2Nr
KCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKQotICAgICAgICAgICAgcG9zID0gbW9kaWZ5RXh0ZW5k
aW5nQmFja3dhcmQoZ3JhbnVsYXJpdHkpOworICAgICAgICAgICAgcG9zID0gbW9kaWZ5RXh0ZW5k
aW5nQmFja3dhcmQoZ3JhbnVsYXJpdHksIHVzZXJUcmlnZ2VyZWQpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBwb3MgPSBtb2RpZnlFeHRlbmRpbmdGb3J3YXJkKGdyYW51bGFyaXR5KTsKKyAg
ICAgICAgICAgIHBvcyA9IG1vZGlmeUV4dGVuZGluZ0ZvcndhcmQoZ3JhbnVsYXJpdHksIHVzZXJU
cmlnZ2VyZWQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6
CiAgICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6CkBAIC05OTAsNyArOTk2LDcgQEAgVmlzaWJsZVBv
c2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeAogICAgIGNhc2UgU2VudGVuY2VCb3VuZGFy
eToKICAgICBjYXNlIFBhcmFncmFwaEJvdW5kYXJ5OgogICAgIGNhc2UgRG9jdW1lbnRCb3VuZGFy
eToKLSAgICAgICAgcG9zID0gbW9kaWZ5RXh0ZW5kaW5nQmFja3dhcmQoZ3JhbnVsYXJpdHkpOwor
ICAgICAgICBwb3MgPSBtb2RpZnlFeHRlbmRpbmdCYWNrd2FyZChncmFudWxhcml0eSwgdXNlclRy
aWdnZXJlZCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRG9jdW1lbnRHcmFudWxhcml0eToK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xMDAyLDcgKzEwMDgsNyBAQCBWaXNp
YmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4CiAgICAgcmV0dXJuIHBvczsKIH0K
ICAgICAgICAKLVZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5RXh0ZW5kaW5n
QmFja3dhcmQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQorVmlzaWJsZVBvc2l0aW9uIEZy
YW1lU2VsZWN0aW9uOjptb2RpZnlFeHRlbmRpbmdCYWNrd2FyZChUZXh0R3JhbnVsYXJpdHkgZ3Jh
bnVsYXJpdHksIEVVc2VyVHJpZ2dlcmVkIHVzZXJUcmlnZ2VyZWQpCiB7CiAgICAgVmlzaWJsZVBv
c2l0aW9uIHBvcyhtX3NlbGVjdGlvbi5leHRlbnQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSk7
CiAKQEAgLTEwMTUsNyArMTAyMSw3IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6
bW9kaWZ5RXgKICAgICAgICAgcG9zID0gcG9zLnByZXZpb3VzKENhbm5vdENyb3NzRWRpdGluZ0Jv
dW5kYXJ5KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6Ci0gICAg
ICAgIHBvcyA9IHByZXZpb3VzV29yZFBvc2l0aW9uKHBvcyk7CisgICAgICAgIHBvcyA9IHByZXZp
b3VzV29yZFBvc2l0aW9uKHBvcywgbmV4dFdvcmRXaGl0ZXNwYWNlTW9kZUluSU9TKHVzZXJUcmln
Z2VyZWQpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5Ogog
ICAgICAgICBwb3MgPSBwcmV2aW91c1NlbnRlbmNlUG9zaXRpb24ocG9zKTsKQEAgLTEwNTIsNyAr
MTA1OCw3IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5RXgKICAgICBy
ZXR1cm4gcG9zOwogfQogCi1WaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeU1v
dmluZ0xlZnQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sKiByZWFjaGVkQm91bmRh
cnkpCitWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeU1vdmluZ0xlZnQoVGV4
dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBFVXNlclRyaWdnZXJlZCB1c2VyVHJpZ2dlcmVkLCBi
b29sKiByZWFjaGVkQm91bmRhcnkpCiB7CiAgICAgaWYgKHJlYWNoZWRCb3VuZGFyeSkKICAgICAg
ICAgKnJlYWNoZWRCb3VuZGFyeSA9IGZhbHNlOwpAQCAtMTA4Miw3ICsxMDg4LDcgQEAgVmlzaWJs
ZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNbwogICAgIGNhc2UgUGFyYWdyYXBoQm91
bmRhcnk6CiAgICAgY2FzZSBEb2N1bWVudEJvdW5kYXJ5OgogICAgICAgICAvLyBGSVhNRTogSW1w
bGVtZW50IGFsbCBvZiB0aGUgYWJvdmUuCi0gICAgICAgIHBvcyA9IG1vZGlmeU1vdmluZ0JhY2t3
YXJkKGdyYW51bGFyaXR5LCByZWFjaGVkQm91bmRhcnkpOworICAgICAgICBwb3MgPSBtb2RpZnlN
b3ZpbmdCYWNrd2FyZChncmFudWxhcml0eSwgdXNlclRyaWdnZXJlZCwgcmVhY2hlZEJvdW5kYXJ5
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBMaW5lQm91bmRhcnk6CiAgICAgICAgIHBvcyA9
IGxlZnRCb3VuZGFyeU9mTGluZShzdGFydEZvclBsYXRmb3JtKCksIGRpcmVjdGlvbk9mRW5jbG9z
aW5nQmxvY2soKSwgcmVhY2hlZEJvdW5kYXJ5KTsKQEAgLTEwOTQsNyArMTEwMCw3IEBAIFZpc2li
bGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW8KICAgICByZXR1cm4gcG9zOwogfQog
Ci1WaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeU1vdmluZ0JhY2t3YXJkKFRl
eHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgYm9vbCogcmVhY2hlZEJvdW5kYXJ5KQorVmlzaWJs
ZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNb3ZpbmdCYWNrd2FyZChUZXh0R3JhbnVs
YXJpdHkgZ3JhbnVsYXJpdHksIEVVc2VyVHJpZ2dlcmVkIHVzZXJUcmlnZ2VyZWQsIGJvb2wqIHJl
YWNoZWRCb3VuZGFyeSkKIHsKICAgICBpZiAocmVhY2hlZEJvdW5kYXJ5KQogICAgICAgICAqcmVh
Y2hlZEJvdW5kYXJ5ID0gZmFsc2U7CkBAIC0xMTIzLDcgKzExMjksNyBAQCBWaXNpYmxlUG9zaXRp
b24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeU1vCiAgICAgICAgICAgICBwb3MgPSBWaXNpYmxlUG9z
aXRpb24obV9zZWxlY3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpLnByZXZp
b3VzKENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5LCByZWFjaGVkQm91bmRhcnkpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIFdvcmRHcmFudWxhcml0eToKLSAgICAgICAgcG9zID0gcHJldmlv
dXNXb3JkUG9zaXRpb24oY3VycmVudFBvc2l0aW9uKTsKKyAgICAgICAgcG9zID0gcHJldmlvdXNX
b3JkUG9zaXRpb24oY3VycmVudFBvc2l0aW9uLCBuZXh0V29yZFdoaXRlc3BhY2VNb2RlSW5JT1Mo
dXNlclRyaWdnZXJlZCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFNlbnRlbmNlR3JhbnVs
YXJpdHk6CiAgICAgICAgIHBvcyA9IHByZXZpb3VzU2VudGVuY2VQb3NpdGlvbihjdXJyZW50UG9z
aXRpb24pOwpAQCAtMTMzMCwyNyArMTMzNiwyNyBAQCBib29sIEZyYW1lU2VsZWN0aW9uOjptb2Rp
ZnkoRUFsdGVyYXRpb24gCiAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKICAgICBjYXNlIERpcmVj
dGlvblJpZ2h0OgogICAgICAgICBpZiAoYWx0ZXIgPT0gQWx0ZXJhdGlvbk1vdmUpCi0gICAgICAg
ICAgICBwb3NpdGlvbiA9IG1vZGlmeU1vdmluZ1JpZ2h0KGdyYW51bGFyaXR5LCAmcmVhY2hlZEJv
dW5kYXJ5KTsKKyAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5TW92aW5nUmlnaHQoZ3JhbnVs
YXJpdHksIHVzZXJUcmlnZ2VyZWQsICZyZWFjaGVkQm91bmRhcnkpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBwb3NpdGlvbiA9IG1vZGlmeUV4dGVuZGluZ1JpZ2h0KGdyYW51bGFyaXR5KTsK
KyAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5RXh0ZW5kaW5nUmlnaHQoZ3JhbnVsYXJpdHks
IHVzZXJUcmlnZ2VyZWQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIERpcmVjdGlvbkZvcndh
cmQ6CiAgICAgICAgIGlmIChhbHRlciA9PSBBbHRlcmF0aW9uRXh0ZW5kKQotICAgICAgICAgICAg
cG9zaXRpb24gPSBtb2RpZnlFeHRlbmRpbmdGb3J3YXJkKGdyYW51bGFyaXR5KTsKKyAgICAgICAg
ICAgIHBvc2l0aW9uID0gbW9kaWZ5RXh0ZW5kaW5nRm9yd2FyZChncmFudWxhcml0eSwgdXNlclRy
aWdnZXJlZCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5TW92
aW5nRm9yd2FyZChncmFudWxhcml0eSwgJnJlYWNoZWRCb3VuZGFyeSk7CisgICAgICAgICAgICBw
b3NpdGlvbiA9IG1vZGlmeU1vdmluZ0ZvcndhcmQoZ3JhbnVsYXJpdHksIHVzZXJUcmlnZ2VyZWQs
ICZyZWFjaGVkQm91bmRhcnkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIERpcmVjdGlvbkxl
ZnQ6CiAgICAgICAgIGlmIChhbHRlciA9PSBBbHRlcmF0aW9uTW92ZSkKLSAgICAgICAgICAgIHBv
c2l0aW9uID0gbW9kaWZ5TW92aW5nTGVmdChncmFudWxhcml0eSwgJnJlYWNoZWRCb3VuZGFyeSk7
CisgICAgICAgICAgICBwb3NpdGlvbiA9IG1vZGlmeU1vdmluZ0xlZnQoZ3JhbnVsYXJpdHksIHVz
ZXJUcmlnZ2VyZWQsICZyZWFjaGVkQm91bmRhcnkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBwb3NpdGlvbiA9IG1vZGlmeUV4dGVuZGluZ0xlZnQoZ3JhbnVsYXJpdHkpOworICAgICAgICAg
ICAgcG9zaXRpb24gPSBtb2RpZnlFeHRlbmRpbmdMZWZ0KGdyYW51bGFyaXR5LCB1c2VyVHJpZ2dl
cmVkKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEaXJlY3Rpb25CYWNrd2FyZDoKICAgICAg
ICAgaWYgKGFsdGVyID09IEFsdGVyYXRpb25FeHRlbmQpCi0gICAgICAgICAgICBwb3NpdGlvbiA9
IG1vZGlmeUV4dGVuZGluZ0JhY2t3YXJkKGdyYW51bGFyaXR5KTsKKyAgICAgICAgICAgIHBvc2l0
aW9uID0gbW9kaWZ5RXh0ZW5kaW5nQmFja3dhcmQoZ3JhbnVsYXJpdHksIHVzZXJUcmlnZ2VyZWQp
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBwb3NpdGlvbiA9IG1vZGlmeU1vdmluZ0JhY2t3
YXJkKGdyYW51bGFyaXR5LCAmcmVhY2hlZEJvdW5kYXJ5KTsKKyAgICAgICAgICAgIHBvc2l0aW9u
ID0gbW9kaWZ5TW92aW5nQmFja3dhcmQoZ3JhbnVsYXJpdHksIHVzZXJUcmlnZ2VyZWQsICZyZWFj
aGVkQm91bmRhcnkpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTIxNDUsNyArMjE1MSw3
IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnVwZGF0ZUFwcGVhcmFuY2UoKQogICAgIC8vIENvbnN0
cnVjdCBhIG5ldyBWaXNpYmxlU29sdXRpb24sIHNpbmNlIG1fc2VsZWN0aW9uIGlzIG5vdCBuZWNl
c3NhcmlseSB2YWxpZCwgYW5kIHRoZSBmb2xsb3dpbmcgc3RlcHMKICAgICAvLyBhc3N1bWUgYSB2
YWxpZCBzZWxlY3Rpb24uIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY5NTYzPiBhbmQgPHJkYXI6Ly9wcm9ibGVtLzEwMjMyODY2Pi4KICNpZiBFTkFCTEUoVEVY
VF9DQVJFVCkKLSAgICBWaXNpYmxlUG9zaXRpb24gZW5kVmlzaWJsZVBvc2l0aW9uID0gcGFpbnRC
bG9ja0N1cnNvciA/IG1vZGlmeUV4dGVuZGluZ0ZvcndhcmQoQ2hhcmFjdGVyR3JhbnVsYXJpdHkp
IDogb2xkU2VsZWN0aW9uLnZpc2libGVFbmQoKTsKKyAgICBWaXNpYmxlUG9zaXRpb24gZW5kVmlz
aWJsZVBvc2l0aW9uID0gcGFpbnRCbG9ja0N1cnNvciA/IG1vZGlmeUV4dGVuZGluZ0ZvcndhcmQo
Q2hhcmFjdGVyR3JhbnVsYXJpdHksIE5vdFVzZXJUcmlnZ2VyZWQpIDogb2xkU2VsZWN0aW9uLnZp
c2libGVFbmQoKTsKICAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbihvbGRTZWxlY3Rpb24u
dmlzaWJsZVN0YXJ0KCksIGVuZFZpc2libGVQb3NpdGlvbik7CiAjZWxzZQogICAgIFZpc2libGVT
ZWxlY3Rpb24gc2VsZWN0aW9uKG9sZFNlbGVjdGlvbi52aXNpYmxlU3RhcnQoKSwgb2xkU2VsZWN0
aW9uLnZpc2libGVFbmQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2Vs
ZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVj
dGlvbi5oCShyZXZpc2lvbiAyNDk2MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1l
U2VsZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5OSwxNiArMjk5LDE2IEBAIHByaXZhdGU6
CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUGxhdGZvcm0oYm9vbCBpc0dldFN0YXJ0
KSBjb25zdDsKICAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnRGb3JQbGF0Zm9ybSgpIGNvbnN0Owog
ICAgIFZpc2libGVQb3NpdGlvbiBlbmRGb3JQbGF0Zm9ybSgpIGNvbnN0OwotICAgIFZpc2libGVQ
b3NpdGlvbiBuZXh0V29yZFBvc2l0aW9uRm9yUGxhdGZvcm0oY29uc3QgVmlzaWJsZVBvc2l0aW9u
Jik7CisgICAgVmlzaWJsZVBvc2l0aW9uIG5leHRXb3JkUG9zaXRpb25Gb3JQbGF0Zm9ybShjb25z
dCBWaXNpYmxlUG9zaXRpb24mLCBFVXNlclRyaWdnZXJlZCk7CiAKLSAgICBWaXNpYmxlUG9zaXRp
b24gbW9kaWZ5RXh0ZW5kaW5nUmlnaHQoVGV4dEdyYW51bGFyaXR5KTsKLSAgICBWaXNpYmxlUG9z
aXRpb24gbW9kaWZ5RXh0ZW5kaW5nRm9yd2FyZChUZXh0R3JhbnVsYXJpdHkpOwotICAgIFZpc2li
bGVQb3NpdGlvbiBtb2RpZnlNb3ZpbmdSaWdodChUZXh0R3JhbnVsYXJpdHksIGJvb2wqIHJlYWNo
ZWRCb3VuZGFyeSA9IG51bGxwdHIpOwotICAgIFZpc2libGVQb3NpdGlvbiBtb2RpZnlNb3ZpbmdG
b3J3YXJkKFRleHRHcmFudWxhcml0eSwgYm9vbCogcmVhY2hlZEJvdW5kYXJ5ID0gbnVsbHB0cik7
Ci0gICAgVmlzaWJsZVBvc2l0aW9uIG1vZGlmeUV4dGVuZGluZ0xlZnQoVGV4dEdyYW51bGFyaXR5
KTsKLSAgICBWaXNpYmxlUG9zaXRpb24gbW9kaWZ5RXh0ZW5kaW5nQmFja3dhcmQoVGV4dEdyYW51
bGFyaXR5KTsKLSAgICBWaXNpYmxlUG9zaXRpb24gbW9kaWZ5TW92aW5nTGVmdChUZXh0R3JhbnVs
YXJpdHksIGJvb2wqIHJlYWNoZWRCb3VuZGFyeSA9IG51bGxwdHIpOwotICAgIFZpc2libGVQb3Np
dGlvbiBtb2RpZnlNb3ZpbmdCYWNrd2FyZChUZXh0R3JhbnVsYXJpdHksIGJvb2wqIHJlYWNoZWRC
b3VuZGFyeSA9IG51bGxwdHIpOworICAgIFZpc2libGVQb3NpdGlvbiBtb2RpZnlFeHRlbmRpbmdS
aWdodChUZXh0R3JhbnVsYXJpdHksIEVVc2VyVHJpZ2dlcmVkKTsKKyAgICBWaXNpYmxlUG9zaXRp
b24gbW9kaWZ5RXh0ZW5kaW5nRm9yd2FyZChUZXh0R3JhbnVsYXJpdHksIEVVc2VyVHJpZ2dlcmVk
KTsKKyAgICBWaXNpYmxlUG9zaXRpb24gbW9kaWZ5TW92aW5nUmlnaHQoVGV4dEdyYW51bGFyaXR5
LCBFVXNlclRyaWdnZXJlZCwgYm9vbCogcmVhY2hlZEJvdW5kYXJ5ID0gbnVsbHB0cik7CisgICAg
VmlzaWJsZVBvc2l0aW9uIG1vZGlmeU1vdmluZ0ZvcndhcmQoVGV4dEdyYW51bGFyaXR5LCBFVXNl
clRyaWdnZXJlZCwgYm9vbCogcmVhY2hlZEJvdW5kYXJ5ID0gbnVsbHB0cik7CisgICAgVmlzaWJs
ZVBvc2l0aW9uIG1vZGlmeUV4dGVuZGluZ0xlZnQoVGV4dEdyYW51bGFyaXR5LCBFVXNlclRyaWdn
ZXJlZCk7CisgICAgVmlzaWJsZVBvc2l0aW9uIG1vZGlmeUV4dGVuZGluZ0JhY2t3YXJkKFRleHRH
cmFudWxhcml0eSwgRVVzZXJUcmlnZ2VyZWQpOworICAgIFZpc2libGVQb3NpdGlvbiBtb2RpZnlN
b3ZpbmdMZWZ0KFRleHRHcmFudWxhcml0eSwgRVVzZXJUcmlnZ2VyZWQsIGJvb2wqIHJlYWNoZWRC
b3VuZGFyeSA9IG51bGxwdHIpOworICAgIFZpc2libGVQb3NpdGlvbiBtb2RpZnlNb3ZpbmdCYWNr
d2FyZChUZXh0R3JhbnVsYXJpdHksIEVVc2VyVHJpZ2dlcmVkLCBib29sKiByZWFjaGVkQm91bmRh
cnkgPSBudWxscHRyKTsKIAogICAgIExheW91dFVuaXQgbGluZURpcmVjdGlvblBvaW50Rm9yQmxv
Y2tEaXJlY3Rpb25OYXZpZ2F0aW9uKEVQb3NpdGlvblR5cGUpOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCShyZXZpc2lvbiAyNDk2MDcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMzUs
NyArMjMzNSw3IEBAIGlubGluZSBib29sIFNlYXJjaEJ1ZmZlcjo6aXNXb3JkU3RhcnRNYXQKIAog
ICAgIHNpemVfdCB3b3JkQnJlYWtTZWFyY2hTdGFydCA9IHN0YXJ0ICsgbGVuZ3RoOwogICAgIHdo
aWxlICh3b3JkQnJlYWtTZWFyY2hTdGFydCA+IHN0YXJ0KQotICAgICAgICB3b3JkQnJlYWtTZWFy
Y2hTdGFydCA9IGZpbmROZXh0V29yZEZyb21JbmRleChTdHJpbmdWaWV3KG1fYnVmZmVyLmRhdGEo
KSwgbV9idWZmZXIuc2l6ZSgpKSwgd29yZEJyZWFrU2VhcmNoU3RhcnQsIGZhbHNlIC8qIGJhY2t3
YXJkcyAqLyk7CisgICAgICAgIHdvcmRCcmVha1NlYXJjaFN0YXJ0ID0gZmluZE5leHRXb3JkRnJv
bUluZGV4KFN0cmluZ1ZpZXcobV9idWZmZXIuZGF0YSgpLCBtX2J1ZmZlci5zaXplKCkpLCB3b3Jk
QnJlYWtTZWFyY2hTdGFydCwgTmV4dFdvcmREaXJlY3Rpb246OkJhY2t3YXJkKTsKICAgICByZXR1
cm4gd29yZEJyZWFrU2VhcmNoU3RhcnQgPT0gc3RhcnQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAJKHJldmlzaW9uIDI0OTYwNykKKysrIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYxLDYg
Kzc2MSw3IEBAIFZpc2libGVQb3NpdGlvbiBlbmRPZldvcmQoY29uc3QgVmlzaWJsZVAKICAgICBy
ZXR1cm4gbmV4dEJvdW5kYXJ5KHAsIGVuZFdvcmRCb3VuZGFyeSk7CiB9CiAKK3RlbXBsYXRlIDxO
ZXh0V29yZE1vZGVJbklPUyBpb3NNb2RlPgogc3RhdGljIHVuc2lnbmVkIHByZXZpb3VzV29yZFBv
c2l0aW9uQm91bmRhcnkoU3RyaW5nVmlldyB0ZXh0LCB1bnNpZ25lZCBvZmZzZXQsIEJvdW5kYXJ5
U2VhcmNoQ29udGV4dEF2YWlsYWJpbGl0eSBtYXlIYXZlTW9yZUNvbnRleHQsIGJvb2wmIG5lZWRN
b3JlQ29udGV4dCkKIHsKICAgICBpZiAobWF5SGF2ZU1vcmVDb250ZXh0ICYmICFzdGFydE9mTGFz
dFdvcmRCb3VuZGFyeUNvbnRleHQodGV4dC5zdWJzdHJpbmcoMCwgb2Zmc2V0KSkpIHsKQEAgLTc2
OCwxNCArNzY5LDE3IEBAIHN0YXRpYyB1bnNpZ25lZCBwcmV2aW91c1dvcmRQb3NpdGlvbkJvdW4K
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIG5lZWRNb3JlQ29udGV4dCA9IGZhbHNlOwot
ICAgIHJldHVybiBmaW5kTmV4dFdvcmRGcm9tSW5kZXgodGV4dCwgb2Zmc2V0LCBmYWxzZSk7Cisg
ICAgcmV0dXJuIGZpbmROZXh0V29yZEZyb21JbmRleCh0ZXh0LCBvZmZzZXQsIE5leHRXb3JkRGly
ZWN0aW9uOjpCYWNrd2FyZCwgaW9zTW9kZSk7CiB9CiAKLVZpc2libGVQb3NpdGlvbiBwcmV2aW91
c1dvcmRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uKQorVmlzaWJsZVBv
c2l0aW9uIHByZXZpb3VzV29yZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRp
b24sIE5leHRXb3JkTW9kZUluSU9TIGlvc01vZGUpCiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uLmhv
bm9yRWRpdGluZ0JvdW5kYXJ5QXRPckJlZm9yZShwcmV2aW91c0JvdW5kYXJ5KHBvc2l0aW9uLCBw
cmV2aW91c1dvcmRQb3NpdGlvbkJvdW5kYXJ5KSk7CisgICAgaWYgKGlvc01vZGUgPT0gTmV4dFdv
cmRNb2RlSW5JT1M6OkxlZ2FjeVN0b3BCZWZvcmVXb3JkKSAvLyBGSVhNRTogUmVtb3ZlIHRoaXMg
Y29kZSBwYXRoLgorICAgICAgICByZXR1cm4gcG9zaXRpb24uaG9ub3JFZGl0aW5nQm91bmRhcnlB
dE9yQmVmb3JlKHByZXZpb3VzQm91bmRhcnkocG9zaXRpb24sIHByZXZpb3VzV29yZFBvc2l0aW9u
Qm91bmRhcnk8TmV4dFdvcmRNb2RlSW5JT1M6OkxlZ2FjeVN0b3BCZWZvcmVXb3JkPikpOworICAg
IHJldHVybiBwb3NpdGlvbi5ob25vckVkaXRpbmdCb3VuZGFyeUF0T3JCZWZvcmUocHJldmlvdXNC
b3VuZGFyeShwb3NpdGlvbiwgcHJldmlvdXNXb3JkUG9zaXRpb25Cb3VuZGFyeTxOZXh0V29yZE1v
ZGVJbklPUzo6U3RvcEFmdGVyV29yZD4pKTsKIH0KIAordGVtcGxhdGUgPE5leHRXb3JkTW9kZUlu
SU9TIGlvc01vZGU+CiBzdGF0aWMgdW5zaWduZWQgbmV4dFdvcmRQb3NpdGlvbkJvdW5kYXJ5KFN0
cmluZ1ZpZXcgdGV4dCwgdW5zaWduZWQgb2Zmc2V0LCBCb3VuZGFyeVNlYXJjaENvbnRleHRBdmFp
bGFiaWxpdHkgbWF5SGF2ZU1vcmVDb250ZXh0LCBib29sJiBuZWVkTW9yZUNvbnRleHQpCiB7CiAg
ICAgaWYgKG1heUhhdmVNb3JlQ29udGV4dCAmJiBlbmRPZkZpcnN0V29yZEJvdW5kYXJ5Q29udGV4
dCh0ZXh0LnN1YnN0cmluZyhvZmZzZXQpKSA9PSB0ZXh0Lmxlbmd0aCgpIC0gb2Zmc2V0KSB7CkBA
IC03ODMsMTIgKzc4NywxNCBAQCBzdGF0aWMgdW5zaWduZWQgbmV4dFdvcmRQb3NpdGlvbkJvdW5k
YXJ5CiAgICAgICAgIHJldHVybiB0ZXh0Lmxlbmd0aCgpOwogICAgIH0KICAgICBuZWVkTW9yZUNv
bnRleHQgPSBmYWxzZTsKLSAgICByZXR1cm4gZmluZE5leHRXb3JkRnJvbUluZGV4KHRleHQsIG9m
ZnNldCwgdHJ1ZSk7CisgICAgcmV0dXJuIGZpbmROZXh0V29yZEZyb21JbmRleCh0ZXh0LCBvZmZz
ZXQsIE5leHRXb3JkRGlyZWN0aW9uOjpGb3J3YXJkLCBpb3NNb2RlKTsKIH0KIAotVmlzaWJsZVBv
c2l0aW9uIG5leHRXb3JkUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbikK
K1Zpc2libGVQb3NpdGlvbiBuZXh0V29yZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYg
cG9zaXRpb24sIE5leHRXb3JkTW9kZUluSU9TIGlvc01vZGUpCiB7Ci0gICAgcmV0dXJuIHBvc2l0
aW9uLmhvbm9yRWRpdGluZ0JvdW5kYXJ5QXRPckFmdGVyKG5leHRCb3VuZGFyeShwb3NpdGlvbiwg
bmV4dFdvcmRQb3NpdGlvbkJvdW5kYXJ5KSk7CisgICAgaWYgKGlvc01vZGUgPT0gTmV4dFdvcmRN
b2RlSW5JT1M6OkxlZ2FjeVN0b3BCZWZvcmVXb3JkKSAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgY29k
ZSBwYXRoLgorICAgICAgICByZXR1cm4gcG9zaXRpb24uaG9ub3JFZGl0aW5nQm91bmRhcnlBdE9y
QWZ0ZXIobmV4dEJvdW5kYXJ5KHBvc2l0aW9uLCBuZXh0V29yZFBvc2l0aW9uQm91bmRhcnk8TmV4
dFdvcmRNb2RlSW5JT1M6OkxlZ2FjeVN0b3BCZWZvcmVXb3JkPikpOworICAgIHJldHVybiBwb3Np
dGlvbi5ob25vckVkaXRpbmdCb3VuZGFyeUF0T3JBZnRlcihuZXh0Qm91bmRhcnkocG9zaXRpb24s
IG5leHRXb3JkUG9zaXRpb25Cb3VuZGFyeTxOZXh0V29yZE1vZGVJbklPUzo6U3RvcEFmdGVyV29y
ZD4pKTsKIH0KIAogYm9vbCBpc1N0YXJ0T2ZXb3JkKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcCkK
QEAgLTE3MDAsNyArMTcwNiw3IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gbmV4dFdvcmRCb3Vu
ZGFyeUkKICAgICAgICAgICAgICAgICAvLyBEbyBzYW1lIHRoaW5nIGFzIGJhY2t3YXJkcyB0cmF2
ZWxpbmcgYmVsb3cuCiAgICAgICAgICAgICAgICAgc3RhcnQgPSB2cDsKICAgICAgICAgICAgICAg
ICB3aGlsZSAodHJ1ZSkgewotICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBzdGFydE9mV29y
ZChuZXh0V29yZFBvc2l0aW9uKHN0YXJ0KSwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KTsKKyAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0ID0gc3RhcnRPZldvcmQobmV4dFdvcmRQb3NpdGlvbihzdGFy
dCwgTmV4dFdvcmRNb2RlSW5JT1M6OkxlZ2FjeVN0b3BCZWZvcmVXb3JkKSwgUmlnaHRXb3JkSWZP
bkJvdW5kYXJ5KTsKIAogICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IHN0YXJ0KQog
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xNzM0LDcgKzE3NDAsNyBAQCBzdGF0
aWMgVmlzaWJsZVBvc2l0aW9uIG5leHRXb3JkQm91bmRhcnlJCiAgICAgICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgICAgICBlbmQgPSB2cDsKICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkg
ewotICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBlbmRPZldvcmQocHJldmlvdXNXb3JkUG9z
aXRpb24oZW5kKSwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KTsKKyAgICAgICAgICAgICAgICAgICAg
cmVzdWx0ID0gZW5kT2ZXb3JkKHByZXZpb3VzV29yZFBvc2l0aW9uKGVuZCwgTmV4dFdvcmRNb2Rl
SW5JT1M6OkxlZ2FjeVN0b3BCZWZvcmVXb3JkKSwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KTsKIAog
ICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IGVuZCkKICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5oCShy
ZXZpc2lvbiAyNDk2MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1
ZGUgIkVkaXRpbmdCb3VuZGFyeS5oIgorI2luY2x1ZGUgIlRleHRCb3VuZGFyaWVzLmgiCiAjaW5j
bHVkZSAiVmlzaWJsZVNlbGVjdGlvbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MCw4
ICs0MSw4IEBAIGVudW0gRVdvcmRTaWRlIHsgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5ID0KIC8vIHdv
cmRzCiBXRUJDT1JFX0VYUE9SVCBWaXNpYmxlUG9zaXRpb24gc3RhcnRPZldvcmQoY29uc3QgVmlz
aWJsZVBvc2l0aW9uICYsIEVXb3JkU2lkZSA9IFJpZ2h0V29yZElmT25Cb3VuZGFyeSk7CiBXRUJD
T1JFX0VYUE9SVCBWaXNpYmxlUG9zaXRpb24gZW5kT2ZXb3JkKGNvbnN0IFZpc2libGVQb3NpdGlv
biAmLCBFV29yZFNpZGUgPSBSaWdodFdvcmRJZk9uQm91bmRhcnkpOwotV0VCQ09SRV9FWFBPUlQg
VmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzV29yZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlv
biAmKTsKLVdFQkNPUkVfRVhQT1JUIFZpc2libGVQb3NpdGlvbiBuZXh0V29yZFBvc2l0aW9uKGNv
bnN0IFZpc2libGVQb3NpdGlvbiAmKTsKK1dFQkNPUkVfRVhQT1JUIFZpc2libGVQb3NpdGlvbiBw
cmV2aW91c1dvcmRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24gJiwgTmV4dFdvcmRNb2Rl
SW5JT1MpOworV0VCQ09SRV9FWFBPUlQgVmlzaWJsZVBvc2l0aW9uIG5leHRXb3JkUG9zaXRpb24o
Y29uc3QgVmlzaWJsZVBvc2l0aW9uICYsIE5leHRXb3JkTW9kZUluSU9TKTsKIFZpc2libGVQb3Np
dGlvbiByaWdodFdvcmRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBib29sIHNraXBz
U3BhY2VXaGVuTW92aW5nUmlnaHQpOwogVmlzaWJsZVBvc2l0aW9uIGxlZnRXb3JkUG9zaXRpb24o
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgYm9vbCBza2lwc1NwYWNlV2hlbk1vdmluZ1JpZ2h0KTsK
IGJvb2wgaXNTdGFydE9mV29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJvdW5kYXJpZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmgJKHJldmlzaW9uIDI0
OTYwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJvdW5kYXJpZXMuaAko
d29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgdm9pZCBmaW5kV29yZEJvdW5kYXJ5KFN0cmluZ1ZpZXcsIGludCBwb3NpdGlvbiwgaW50KiBz
dGFydCwgaW50KiBlbmQpOwogICAgIHZvaWQgZmluZEVuZFdvcmRCb3VuZGFyeShTdHJpbmdWaWV3
LCBpbnQgcG9zaXRpb24sIGludCogZW5kKTsKLSAgICBpbnQgZmluZE5leHRXb3JkRnJvbUluZGV4
KFN0cmluZ1ZpZXcsIGludCBwb3NpdGlvbiwgYm9vbCBmb3J3YXJkKTsKKworICAgIGVudW0gY2xh
c3MgTmV4dFdvcmREaXJlY3Rpb24geyBGb3J3YXJkLCBCYWNrd2FyZCB9OworICAgIGVudW0gY2xh
c3MgTmV4dFdvcmRNb2RlSW5JT1MgeyBMZWdhY3lTdG9wQmVmb3JlV29yZCwgU3RvcEFmdGVyV29y
ZCB9OworICAgIGludCBmaW5kTmV4dFdvcmRGcm9tSW5kZXgoU3RyaW5nVmlldywgaW50IHBvc2l0
aW9uLCBOZXh0V29yZERpcmVjdGlvbiwgTmV4dFdvcmRNb2RlSW5JT1MgPSBOZXh0V29yZE1vZGVJ
bklPUzo6TGVnYWN5U3RvcEJlZm9yZVdvcmQpOwogCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tCShyZXZpc2lvbiAy
NDk2MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Qm91bmRhcmll
cy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjI5LDExICsyMjksMTIgQEAgdm9pZCBmaW5kRW5kV29y
ZEJvdW5kYXJ5KFN0cmluZ1ZpZXcgdGV4dAogICAgIGZpbmRXb3JkQm91bmRhcnkodGV4dCwgcG9z
aXRpb24sICZzdGFydCwgZW5kKTsKIH0KIAotaW50IGZpbmROZXh0V29yZEZyb21JbmRleChTdHJp
bmdWaWV3IHRleHQsIGludCBwb3NpdGlvbiwgYm9vbCBmb3J3YXJkKQoraW50IGZpbmROZXh0V29y
ZEZyb21JbmRleChTdHJpbmdWaWV3IHRleHQsIGludCBwb3NpdGlvbiwgTmV4dFdvcmREaXJlY3Rp
b24gZGlyZWN0aW9uLCBOZXh0V29yZE1vZGVJbklPUyB3aGl0ZXNwYWNlTW9kZUluSU9TKQogeyAg
IAogI2lmIFVTRShBUFBLSVQpCisgICAgVU5VU0VEX1BBUkFNKHdoaXRlc3BhY2VNb2RlSW5JT1Mp
OwogICAgIE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtbTlNBdHRyaWJ1
dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzp0ZXh0LmNyZWF0ZU5TU3RyaW5nV2l0aG91
dENvcHlpbmcoKS5nZXQoKV07Ci0gICAgaW50IHJlc3VsdCA9IFthdHRyaWJ1dGVkU3RyaW5nIG5l
eHRXb3JkRnJvbUluZGV4OnBvc2l0aW9uIGZvcndhcmQ6Zm9yd2FyZF07CisgICAgaW50IHJlc3Vs
dCA9IFthdHRyaWJ1dGVkU3RyaW5nIG5leHRXb3JkRnJvbUluZGV4OnBvc2l0aW9uIGZvcndhcmQ6
ZGlyZWN0aW9uID09IE5leHRXb3JkRGlyZWN0aW9uOjpGb3J3YXJkXTsKICAgICBbYXR0cmlidXRl
ZFN0cmluZyByZWxlYXNlXTsKICAgICByZXR1cm4gcmVzdWx0OwogI2Vsc2UKQEAgLTI0MywxNCAr
MjQ0LDMxIEBAIGludCBmaW5kTmV4dFdvcmRGcm9tSW5kZXgoU3RyaW5nVmlldyB0ZXgKICAgICBp
bnQgcG9zID0gcG9zaXRpb247CiAgICAgVUJyZWFrSXRlcmF0b3IqIGJvdW5kYXJ5ID0gd29yZEJy
ZWFrSXRlcmF0b3IodGV4dCk7CiAgICAgaWYgKGJvdW5kYXJ5KSB7Ci0gICAgICAgIGlmIChmb3J3
YXJkKSB7CisgICAgICAgIGlmIChkaXJlY3Rpb24gPT0gTmV4dFdvcmREaXJlY3Rpb246OkZvcndh
cmQpIHsKKyAgICAgICAgICAgIGlmICh3aGl0ZXNwYWNlTW9kZUluSU9TID09IE5leHRXb3JkTW9k
ZUluSU9TOjpTdG9wQWZ0ZXJXb3JkKSB7CisgICAgICAgICAgICAgICAgd2hpbGUgKHN0YXRpY19j
YXN0PHVuc2lnbmVkPihwb3MpIDwgdGV4dC5sZW5ndGgoKSAmJiBpc1dvcmREZWxpbWl0aW5nQ2hh
cmFjdGVyKHRleHRbcG9zXSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcG9zID0gdWJya19mb2xs
b3dpbmcoYm91bmRhcnksIHBvcyk7CisgICAgICAgICAgICAgICAgICAgIGlmIChwb3MgPT0gVUJS
S19ET05FKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRleHQubGVuZ3RoKCk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICAgICAgZG8gewogICAgICAg
ICAgICAgICAgIHBvcyA9IHVicmtfZm9sbG93aW5nKGJvdW5kYXJ5LCBwb3MpOwogICAgICAgICAg
ICAgICAgIGlmIChwb3MgPT0gVUJSS19ET05FKQotICAgICAgICAgICAgICAgICAgICBwb3MgPSB0
ZXh0Lmxlbmd0aCgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGV4dC5sZW5ndGgoKTsK
ICAgICAgICAgICAgIH0gd2hpbGUgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihwb3MpIDwgdGV4dC5s
ZW5ndGgoKSAmJiAocG9zID09IDAgfHwgIWlzU2tpcENoYXJhY3Rlcih0ZXh0W3BvcyAtIDFdKSkg
JiYgaXNTa2lwQ2hhcmFjdGVyKHRleHRbcG9zXSkpOworCisgICAgICAgICAgICAvLyBJQ1Ugd291
bGQgc2tpcCB0aGUgdHJhaWxpbmcgd2hpdGVzcGFjZS4gR28gYmFjay4KKyAgICAgICAgICAgIGlm
ICh3aGl0ZXNwYWNlTW9kZUluSU9TID09IE5leHRXb3JkTW9kZUluSU9TOjpTdG9wQWZ0ZXJXb3Jk
ICYmIGlzV29yZERlbGltaXRpbmdDaGFyYWN0ZXIodGV4dFtwb3MgLSAxXSkpCisgICAgICAgICAg
ICAgICAgcG9zID0gdWJya19wcmVjZWRpbmcoYm91bmRhcnksIHBvcyk7CiAgICAgICAgIH0KICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAod2hpdGVzcGFjZU1vZGVJbklPUyA9PSBOZXh0
V29yZE1vZGVJbklPUzo6U3RvcEFmdGVyV29yZCAmJiBwb3MgJiYgaXNXb3JkRGVsaW1pdGluZ0No
YXJhY3Rlcih0ZXh0W3BvcyAtIDFdKSkgeworICAgICAgICAgICAgICAgIHBvcyA9IHVicmtfcHJl
Y2VkaW5nKGJvdW5kYXJ5LCBwb3MpOworICAgICAgICAgICAgICAgIGlmIChwb3MgPT0gVUJSS19E
T05FKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKwogICAg
ICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgIHBvcyA9IHVicmtfcHJlY2VkaW5nKGJvdW5k
YXJ5LCBwb3MpOwogICAgICAgICAgICAgICAgIGlmIChwb3MgPT0gVUJSS19ET05FKQpJbmRleDog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxv
ZwkocmV2aXNpb24gMjQ5NjA3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTktMDktMDYgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgT3B0aW9uICsgYXJyb3cgbW92ZXMgY2FyZXQgcGFzdCB3aGl0
ZXNwYWNlIG9uIGlPUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjAxNTc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkZWQgYSBuZXcgdGVzdCBmb3IgbW92aW5nIGNhcmV0IGJ5IHdvcmQgZ3JhbnVsYXJp
dHkgb24gaU9TLgorCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vaW9zL21vdmUtYnktd29y
ZC13aXRoLWtleWJvYXJkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9z
ZWxlY3Rpb24vaW9zL21vdmUtYnktd29yZC13aXRoLWtleWJvYXJkLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2lvcy9zZWxlY3Qtbm9uLWVkaXRhYmxlLXRleHQtdXNp
bmcta2V5Ym9hcmQtZXhwZWN0ZWQudHh0OiBSZWJhc2VsaW5lZC4KKyAgICAgICAgKiBlZGl0aW5n
L3NlbGVjdGlvbi9pb3Mvc2VsZWN0LW5vbi1lZGl0YWJsZS10ZXh0LXVzaW5nLWtleWJvYXJkLmh0
bWw6IFVwZGF0ZWQgdGhlIGV4cGVjdGVkCisgICAgICAgIHNlbGVjdGlvbiBzdHJpbmcgZHVlIHRv
IHRoZSBiZWhhdmlvciBjaGFuZ2UuIEFsc28gZml4ZWQgYSBidWcgdGhhdCBzb21lIHRlc3QgY2Fz
ZXMgd2VyZQorICAgICAgICBub3Qgd2FpdGluZyBmb3IgYSBzZWNvbmRhcnkgc2VsZWN0aW9uY2hh
bmdlIGV2ZW50IHRoYXQgaGFwcGVucyBhZnRlciBhbiBleHRyYSBzZWxlY3Rpb24KKyAgICAgICAg
dXBkYXRlIHdpdGggY2hhcmFjdGVyIGdyYW51bGFyaXR5IGludHJvZHVjZWQgaW4gcjI0NzUyNC4K
KwogMjAxOS0wOS0wNiAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAg
ICAgV2ViIEluc3BlY3RvcjogQ1NTIEZvcm1hdHRlcjogdGhlIGNsb3NpbmcgfSBvZiBuZXN0ZWQg
QG1lZGlhIGFyZW4ndCBpbmRlbnRlZApJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rp
b24vaW9zL21vdmUtYnktd29yZC13aXRoLWtleWJvYXJkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3MvbW92ZS1ieS13b3JkLXdpdGgt
a2V5Ym9hcmQtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2VkaXRp
bmcvc2VsZWN0aW9uL2lvcy9tb3ZlLWJ5LXdvcmQtd2l0aC1rZXlib2FyZC1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MjMgQEAKK1RoaXMgdGVzdHMgbW92aW5nIHRoZSBj
YXJldCB3aXRoIHdvcmQgZ3JhbnVsYXJpdHkgb24gaU9TLgorV2ViS2l0IHNob3VsZCBzdG9wIGF0
IHRoZSBlbmQgb2YgZWFjaCB3b3JkIGJlZm9yZSB3aGl0ZXNwYWNlIHdoZW4gbW92aW5nIGZvcndh
cmRzLCBhbmQgYWZ0ZXIgd2hpdGVzcGFjZSB3aGVuIG1vdmluZyBiYWNrd2FyZHMsCitUaGUgZW1w
dHkgbGluZSBzaG91bGQgYmUgc2tpcHBlZCBpbiBlaXRoZXIgZGlyZWN0aW9uLgorCitCZWZvcmUg
bW92aW5nIGZvcndhcmRzOgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICI8I3NlbGVjdGlvbi1j
YXJldD5oZWxsbyB3b3JsZCIKK3wgIgorICAgICIKK3wgPGJyPgorfCAiCisgICAgIgorfCA8ZGl2
PgorfCAgICJyZWQsIGdyZWVuLCAmIGJsdWUuIgorfCAiCisiCisKK0FmdGVyIG1vdmluZyB0byB0
aGUgcmlnaHQgYnkgd29yZCAoMSk6Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgImhlbGxvPCNz
ZWxlY3Rpb24tY2FyZXQ+IHdvcmxkIgorfCAiCisgICAgIgorfCA8YnI+Cit8ICIKKyAgICAiCit8
IDxkaXY+Cit8ICAgInJlZCwgZ3JlZW4sICYgYmx1ZS4iCit8ICIKKyIKKworQWZ0ZXIgbW92aW5n
IHRvIHRoZSByaWdodCBieSB3b3JkICgyKToKK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAiaGVs
bG8gd29ybGQ8I3NlbGVjdGlvbi1jYXJldD4iCit8ICIKKyAgICAiCit8IDxicj4KK3wgIgorICAg
ICIKK3wgPGRpdj4KK3wgICAicmVkLCBncmVlbiwgJiBibHVlLiIKK3wgIgorIgorCitBZnRlciBt
b3ZpbmcgdG8gdGhlIHJpZ2h0IGJ5IHdvcmQgKDMpOgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAg
ICJoZWxsbyB3b3JsZCIKK3wgIgorICAgICIKK3wgPGJyPgorfCAiCisgICAgIgorfCA8ZGl2Pgor
fCAgICJyZWQsPCNzZWxlY3Rpb24tY2FyZXQ+IGdyZWVuLCAmIGJsdWUuIgorfCAiCisiCisKK0Fm
dGVyIG1vdmluZyB0byB0aGUgcmlnaHQgYnkgd29yZCAoNCk6Cit8ICIKKyAgICAiCit8IDxkaXY+
Cit8ICAgImhlbGxvIHdvcmxkIgorfCAiCisgICAgIgorfCA8YnI+Cit8ICIKKyAgICAiCit8IDxk
aXY+Cit8ICAgInJlZCwgZ3JlZW4sPCNzZWxlY3Rpb24tY2FyZXQ+ICYgYmx1ZS4iCit8ICIKKyIK
KworQWZ0ZXIgbW92aW5nIHRvIHRoZSByaWdodCBieSB3b3JkICg1KToKK3wgIgorICAgICIKK3wg
PGRpdj4KK3wgICAiaGVsbG8gd29ybGQiCit8ICIKKyAgICAiCit8IDxicj4KK3wgIgorICAgICIK
K3wgPGRpdj4KK3wgICAicmVkLCBncmVlbiwgJjwjc2VsZWN0aW9uLWNhcmV0PiBibHVlLiIKK3wg
IgorIgorCitBZnRlciBtb3ZpbmcgdG8gdGhlIHJpZ2h0IGJ5IHdvcmQgKDYpOgorfCAiCisgICAg
IgorfCA8ZGl2PgorfCAgICJoZWxsbyB3b3JsZCIKK3wgIgorICAgICIKK3wgPGJyPgorfCAiCisg
ICAgIgorfCA8ZGl2PgorfCAgICJyZWQsIGdyZWVuLCAmIGJsdWUuPCNzZWxlY3Rpb24tY2FyZXQ+
IgorfCAiCisiCisKK0JlZm9yZSBtb3ZpbmcgYmFja3dhcmRzOgorfCAiCisgICAgIgorfCA8ZGl2
PgorfCAgICJoZWxsbyB3b3JsZCIKK3wgIgorICAgICIKK3wgPGJyPgorfCAiCisgICAgIgorfCA8
ZGl2PgorfCAgICJyZWQsIGdyZWVuLCAmIGJsdWUuPCNzZWxlY3Rpb24tY2FyZXQ+IgorfCAiCisi
CisKK0FmdGVyIG1vdmluZyB0byB0aGUgbGVmdCBieSB3b3JkICgxKToKK3wgIgorICAgICIKK3wg
PGRpdj4KK3wgICAiaGVsbG8gd29ybGQiCit8ICIKKyAgICAiCit8IDxicj4KK3wgIgorICAgICIK
K3wgPGRpdj4KK3wgICAicmVkLCBncmVlbiwgJiA8I3NlbGVjdGlvbi1jYXJldD5ibHVlLiIKK3wg
IgorIgorCitBZnRlciBtb3ZpbmcgdG8gdGhlIGxlZnQgYnkgd29yZCAoMik6Cit8ICIKKyAgICAi
Cit8IDxkaXY+Cit8ICAgImhlbGxvIHdvcmxkIgorfCAiCisgICAgIgorfCA8YnI+Cit8ICIKKyAg
ICAiCit8IDxkaXY+Cit8ICAgInJlZCwgZ3JlZW4sIDwjc2VsZWN0aW9uLWNhcmV0PiYgYmx1ZS4i
Cit8ICIKKyIKKworQWZ0ZXIgbW92aW5nIHRvIHRoZSBsZWZ0IGJ5IHdvcmQgKDMpOgorfCAiCisg
ICAgIgorfCA8ZGl2PgorfCAgICJoZWxsbyB3b3JsZCIKK3wgIgorICAgICIKK3wgPGJyPgorfCAi
CisgICAgIgorfCA8ZGl2PgorfCAgICJyZWQsIDwjc2VsZWN0aW9uLWNhcmV0PmdyZWVuLCAmIGJs
dWUuIgorfCAiCisiCisKK0FmdGVyIG1vdmluZyB0byB0aGUgbGVmdCBieSB3b3JkICg0KToKK3wg
IgorICAgICIKK3wgPGRpdj4KK3wgICAiaGVsbG8gd29ybGQiCit8ICIKKyAgICAiCit8IDxicj4K
K3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAiPCNzZWxlY3Rpb24tY2FyZXQ+cmVkLCBncmVlbiwg
JiBibHVlLiIKK3wgIgorIgorCitBZnRlciBtb3ZpbmcgdG8gdGhlIGxlZnQgYnkgd29yZCAoNSk6
Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgImhlbGxvIDwjc2VsZWN0aW9uLWNhcmV0Pndvcmxk
IgorfCAiCisgICAgIgorfCA8YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgInJlZCwgZ3Jl
ZW4sICYgYmx1ZS4iCit8ICIKKyIKKworQWZ0ZXIgbW92aW5nIHRvIHRoZSBsZWZ0IGJ5IHdvcmQg
KDYpOgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICI8I3NlbGVjdGlvbi1jYXJldD5oZWxsbyB3
b3JsZCIKK3wgIgorICAgICIKK3wgPGJyPgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJyZWQs
IGdyZWVuLCAmIGJsdWUuIgorfCAiCisiCisKK0JlZm9yZSBleHRlbmRpbmcgZm9yd2FyZHM6Cit8
ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgIjwjc2VsZWN0aW9uLWNhcmV0PmhlbGxvIHdvcmxkIgor
fCAiCisgICAgIgorfCA8YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgInJlZCwgZ3JlZW4s
ICYgYmx1ZS4iCit8ICIKKyIKKworQWZ0ZXIgZXh0ZW5kaW5nIHRvIHRoZSByaWdodCBieSB3b3Jk
ICgxKToKK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAiPCNzZWxlY3Rpb24tYW5jaG9yPmhlbGxv
PCNzZWxlY3Rpb24tZm9jdXM+IHdvcmxkIgorfCAiCisgICAgIgorfCA8YnI+Cit8ICIKKyAgICAi
Cit8IDxkaXY+Cit8ICAgInJlZCwgZ3JlZW4sICYgYmx1ZS4iCit8ICIKKyIKKworQWZ0ZXIgZXh0
ZW5kaW5nIHRvIHRoZSByaWdodCBieSB3b3JkICgyKToKK3wgIgorICAgICIKK3wgPGRpdj4KK3wg
ICAiPCNzZWxlY3Rpb24tYW5jaG9yPmhlbGxvIHdvcmxkPCNzZWxlY3Rpb24tZm9jdXM+IgorfCAi
CisgICAgIgorfCA8YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgInJlZCwgZ3JlZW4sICYg
Ymx1ZS4iCit8ICIKKyIKKworQWZ0ZXIgZXh0ZW5kaW5nIHRvIHRoZSByaWdodCBieSB3b3JkICgz
KToKK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAiPCNzZWxlY3Rpb24tYW5jaG9yPmhlbGxvIHdv
cmxkIgorfCAiCisgICAgIgorfCA8YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgInJlZCw8
I3NlbGVjdGlvbi1mb2N1cz4gZ3JlZW4sICYgYmx1ZS4iCit8ICIKKyIKKworQWZ0ZXIgZXh0ZW5k
aW5nIHRvIHRoZSByaWdodCBieSB3b3JkICg0KToKK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAi
PCNzZWxlY3Rpb24tYW5jaG9yPmhlbGxvIHdvcmxkIgorfCAiCisgICAgIgorfCA8YnI+Cit8ICIK
KyAgICAiCit8IDxkaXY+Cit8ICAgInJlZCwgZ3JlZW4sPCNzZWxlY3Rpb24tZm9jdXM+ICYgYmx1
ZS4iCit8ICIKKyIKKworQWZ0ZXIgZXh0ZW5kaW5nIHRvIHRoZSByaWdodCBieSB3b3JkICg1KToK
K3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAiPCNzZWxlY3Rpb24tYW5jaG9yPmhlbGxvIHdvcmxk
IgorfCAiCisgICAgIgorfCA8YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgInJlZCwgZ3Jl
ZW4sICY8I3NlbGVjdGlvbi1mb2N1cz4gYmx1ZS4iCit8ICIKKyIKKworQWZ0ZXIgZXh0ZW5kaW5n
IHRvIHRoZSByaWdodCBieSB3b3JkICg2KToKK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAiPCNz
ZWxlY3Rpb24tYW5jaG9yPmhlbGxvIHdvcmxkIgorfCAiCisgICAgIgorfCA8YnI+Cit8ICIKKyAg
ICAiCit8IDxkaXY+Cit8ICAgInJlZCwgZ3JlZW4sICYgYmx1ZS48I3NlbGVjdGlvbi1mb2N1cz4i
Cit8ICIKKyIKKworQmVmb3JlIGV4dGVuZGluZyBiYWNrd2FyZHM6Cit8ICIKKyAgICAiCit8IDxk
aXY+Cit8ICAgImhlbGxvIHdvcmxkIgorfCAiCisgICAgIgorfCA8YnI+Cit8ICIKKyAgICAiCit8
IDxkaXY+Cit8ICAgInJlZCwgZ3JlZW4sICYgYmx1ZS48I3NlbGVjdGlvbi1jYXJldD4iCit8ICIK
KyIKKworQWZ0ZXIgZXh0ZW5kaW5nIHRvIHRoZSBsZWZ0IGJ5IHdvcmQgKDEpOgorfCAiCisgICAg
IgorfCA8ZGl2PgorfCAgICJoZWxsbyB3b3JsZCIKK3wgIgorICAgICIKK3wgPGJyPgorfCAiCisg
ICAgIgorfCA8ZGl2PgorfCAgICJyZWQsIGdyZWVuLCAmIDwjc2VsZWN0aW9uLWZvY3VzPmJsdWUu
PCNzZWxlY3Rpb24tYW5jaG9yPiIKK3wgIgorIgorCitBZnRlciBleHRlbmRpbmcgdG8gdGhlIGxl
ZnQgYnkgd29yZCAoMik6Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgImhlbGxvIHdvcmxkIgor
fCAiCisgICAgIgorfCA8YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgInJlZCwgZ3JlZW4s
IDwjc2VsZWN0aW9uLWZvY3VzPiYgYmx1ZS48I3NlbGVjdGlvbi1hbmNob3I+IgorfCAiCisiCisK
K0FmdGVyIGV4dGVuZGluZyB0byB0aGUgbGVmdCBieSB3b3JkICgzKToKK3wgIgorICAgICIKK3wg
PGRpdj4KK3wgICAiaGVsbG8gd29ybGQiCit8ICIKKyAgICAiCit8IDxicj4KK3wgIgorICAgICIK
K3wgPGRpdj4KK3wgICAicmVkLCA8I3NlbGVjdGlvbi1mb2N1cz5ncmVlbiwgJiBibHVlLjwjc2Vs
ZWN0aW9uLWFuY2hvcj4iCit8ICIKKyIKKworQWZ0ZXIgZXh0ZW5kaW5nIHRvIHRoZSBsZWZ0IGJ5
IHdvcmQgKDQpOgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJoZWxsbyB3b3JsZCIKK3wgIgor
ICAgICIKK3wgPGJyPgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICI8I3NlbGVjdGlvbi1mb2N1
cz5yZWQsIGdyZWVuLCAmIGJsdWUuPCNzZWxlY3Rpb24tYW5jaG9yPiIKK3wgIgorIgorCitBZnRl
ciBleHRlbmRpbmcgdG8gdGhlIGxlZnQgYnkgd29yZCAoNSk6Cit8ICIKKyAgICAiCit8IDxkaXY+
Cit8ICAgImhlbGxvIDwjc2VsZWN0aW9uLWZvY3VzPndvcmxkIgorfCAiCisgICAgIgorfCA8YnI+
Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgInJlZCwgZ3JlZW4sICYgYmx1ZS48I3NlbGVjdGlv
bi1hbmNob3I+IgorfCAiCisiCisKK0FmdGVyIGV4dGVuZGluZyB0byB0aGUgbGVmdCBieSB3b3Jk
ICg2KToKK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAiPCNzZWxlY3Rpb24tZm9jdXM+aGVsbG8g
d29ybGQiCit8ICIKKyAgICAiCit8IDxicj4KK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAicmVk
LCBncmVlbiwgJiBibHVlLjwjc2VsZWN0aW9uLWFuY2hvcj4iCit8ICIKKyIKSW5kZXg6IExheW91
dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9tb3ZlLWJ5LXdvcmQtd2l0aC1rZXlib2FyZC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9tb3Zl
LWJ5LXdvcmQtd2l0aC1rZXlib2FyZC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3Rz
L2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9tb3ZlLWJ5LXdvcmQtd2l0aC1rZXlib2FyZC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzkgQEAKKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtp
dC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgs
IGluaXRpYWwtc2NhbGU9MSwgbWF4aW11bS1zY2FsZT0xLCBzaHJpbmstdG8tZml0PW5vIj4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvZHVtcC1hcy1tYXJrdXAuanMiPjwvc2NyaXB0
PgorPHNjcmlwdD4KKworTWFya3VwLmRlc2NyaXB0aW9uKGBUaGlzIHRlc3RzIG1vdmluZyB0aGUg
Y2FyZXQgd2l0aCB3b3JkIGdyYW51bGFyaXR5IG9uIGlPUy4KK1dlYktpdCBzaG91bGQgc3RvcCBh
dCB0aGUgZW5kIG9mIGVhY2ggd29yZCBiZWZvcmUgd2hpdGVzcGFjZSB3aGVuIG1vdmluZyBmb3J3
YXJkcywgYW5kIGFmdGVyIHdoaXRlc3BhY2Ugd2hlbiBtb3ZpbmcgYmFja3dhcmRzLAorVGhlIGVt
cHR5IGxpbmUgc2hvdWxkIGJlIHNraXBwZWQgaW4gZWl0aGVyIGRpcmVjdGlvbi5gKTsKK01hcmt1
cC5ub0F1dG9EdW1wKCk7CitNYXJrdXAud2FpdFVudGlsRG9uZSgpOworCithc3luYyBmdW5jdGlv
biBydW5UZXN0KCkKK3sKKyAgICBjb25zdCBlZGl0b3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnZWRpdG9yJyk7CisKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIGF3YWl0
IFVJSGVscGVyLmFjdGl2YXRlRWxlbWVudEFuZFdhaXRGb3JJbnB1dFNlc3Npb24oZWRpdG9yKTsK
KworICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgTWFya3VwLmR1bXAoZWRp
dG9yLCAnTWFya3VwJyk7CisgICAgICAgIE1hcmt1cC5ub3RpZnlEb25lKCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBnZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbihlZGl0b3IsIDAp
OworICAgIE1hcmt1cC5kdW1wKGVkaXRvciwgJ0JlZm9yZSBtb3ZpbmcgZm9yd2FyZHMnKTsKKwor
ICAgIGNvbnN0IG1vdmVDb3VudCA9IDY7CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1vdmVD
b3VudDsgaSsrKSB7CisgICAgICAgIGF3YWl0IFVJSGVscGVyLmtleURvd24oJ3JpZ2h0QXJyb3cn
LCBbJ2FsdEtleSddKTsKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIuZW5zdXJlUHJlc2VudGF0aW9u
VXBkYXRlKCk7CisgICAgICAgIE1hcmt1cC5kdW1wKGVkaXRvciwgYEFmdGVyIG1vdmluZyB0byB0
aGUgcmlnaHQgYnkgd29yZCAoJHtpICsgMX0pYCk7CisgICAgfQorCisgICAgZ2V0U2VsZWN0aW9u
KCkuc2V0UG9zaXRpb24oZWRpdG9yLCBlZGl0b3IuY2hpbGROb2Rlcy5sZW5ndGgpOworICAgIE1h
cmt1cC5kdW1wKGVkaXRvciwgJ0JlZm9yZSBtb3ZpbmcgYmFja3dhcmRzJyk7CisKKyAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IG1vdmVDb3VudDsgaSsrKSB7CisgICAgICAgIGF3YWl0IFVJSGVscGVy
LmtleURvd24oJ2xlZnRBcnJvdycsIFsnYWx0S2V5J10pOworICAgICAgICBhd2FpdCBVSUhlbHBl
ci5lbnN1cmVQcmVzZW50YXRpb25VcGRhdGUoKTsKKyAgICAgICAgTWFya3VwLmR1bXAoZWRpdG9y
LCBgQWZ0ZXIgbW92aW5nIHRvIHRoZSBsZWZ0IGJ5IHdvcmQgKCR7aSArIDF9KWApOworICAgIH0K
KworICAgIGdldFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKGVkaXRvciwgMCk7CisgICAgTWFya3Vw
LmR1bXAoZWRpdG9yLCAnQmVmb3JlIGV4dGVuZGluZyBmb3J3YXJkcycpOworCisgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCBtb3ZlQ291bnQ7IGkrKykgeworICAgICAgICBhd2FpdCBVSUhlbHBlci5r
ZXlEb3duKCdyaWdodEFycm93JywgWydzaGlmdEtleScsICdhbHRLZXknXSk7CisgICAgICAgIGF3
YWl0IFVJSGVscGVyLmVuc3VyZVByZXNlbnRhdGlvblVwZGF0ZSgpOworICAgICAgICBNYXJrdXAu
ZHVtcChlZGl0b3IsIGBBZnRlciBleHRlbmRpbmcgdG8gdGhlIHJpZ2h0IGJ5IHdvcmQgKCR7aSAr
IDF9KWApOworICAgIH0KKworICAgIGdldFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKGVkaXRvciwg
ZWRpdG9yLmNoaWxkTm9kZXMubGVuZ3RoKTsKKyAgICBNYXJrdXAuZHVtcChlZGl0b3IsICdCZWZv
cmUgZXh0ZW5kaW5nIGJhY2t3YXJkcycpOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtb3Zl
Q291bnQ7IGkrKykgeworICAgICAgICBhd2FpdCBVSUhlbHBlci5rZXlEb3duKCdsZWZ0QXJyb3cn
LCBbJ3NoaWZ0S2V5JywgJ2FsdEtleSddKTsKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIuZW5zdXJl
UHJlc2VudGF0aW9uVXBkYXRlKCk7CisgICAgICAgIE1hcmt1cC5kdW1wKGVkaXRvciwgYEFmdGVy
IGV4dGVuZGluZyB0byB0aGUgbGVmdCBieSB3b3JkICgke2kgKyAxfSlgKTsKKyAgICB9CisKKyAg
ICBNYXJrdXAubm90aWZ5RG9uZSgpOworfQorCitvbmxvYWQgPSBydW5UZXN0OworPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImVkaXRvciIgY29udGVudGVkaXRhYmxlPgorICAg
IDxkaXY+aGVsbG8gd29ybGQ8L2Rpdj4KKyAgICA8YnI+CisgICAgPGRpdj5yZWQsIGdyZWVuLCAm
IGJsdWUuPC9kaXY+Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9zZWxlY3Qtbm9uLWVkaXRhYmxlLXRleHQtdXNpbmcta2V5
Ym9hcmQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvc2Vs
ZWN0aW9uL2lvcy9zZWxlY3Qtbm9uLWVkaXRhYmxlLXRleHQtdXNpbmcta2V5Ym9hcmQtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAyNDk2MDcpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlv
bi9pb3Mvc2VsZWN0LW5vbi1lZGl0YWJsZS10ZXh0LXVzaW5nLWtleWJvYXJkLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMTEsNyArMTEsNyBAQCBQcmVzcyBTaGlmdCArIGxlZnQgYXJy
b3cgdG8gc2VsZWN0IHRoZSBwCiBQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygp
IGlzICJIZXIiCiAKIFByZXNzIFNoaWZ0ICsgT3B0aW9uICsgcmlnaHQgYXJyb3cgdG8gc2VsZWN0
IHRvIHRoZSBlbmQgb2YgdGhlIHdvcmQ6Ci1QQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0
cmluZygpIGlzICJIZXJlJ3MgIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmco
KSBpcyAiSGVyZSdzIgogCiBQcmVzcyBTaGlmdCArIE9wdGlvbiArIGxlZnQgYXJyb3cgdG8gc2Vs
ZWN0IHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHdvcmQ6CiBQQVNTIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS50b1N0cmluZygpIGlzICJUaGUiCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVj
dGlvbi9pb3Mvc2VsZWN0LW5vbi1lZGl0YWJsZS10ZXh0LXVzaW5nLWtleWJvYXJkLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL3NlbGVjdC1ub24t
ZWRpdGFibGUtdGV4dC11c2luZy1rZXlib2FyZC5odG1sCShyZXZpc2lvbiAyNDk2MDcpCisrKyBM
YXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3Mvc2VsZWN0LW5vbi1lZGl0YWJsZS10ZXh0
LXVzaW5nLWtleWJvYXJkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgYXN5
bmMgZnVuY3Rpb24gdGVzdEV4dGVuZFNlbGVjdGlvblRvRW5kTwogCiAgICAgZGVidWcoIjxicj5Q
cmVzcyBTaGlmdCArIE9wdGlvbiArIHJpZ2h0IGFycm93IHRvIHNlbGVjdCB0byB0aGUgZW5kIG9m
IHRoZSB3b3JkOiIpOwogICAgIGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JF
dmVudCgoKSA9PiB3aW5kb3cudGVzdFJ1bm5lciAmJiBVSUhlbHBlci5rZXlEb3duKCJyaWdodEFy
cm93IiwgWyJzaGlmdEtleSIsICJhbHRLZXkiXSkgLCBkb2N1bWVudCwgInNlbGVjdGlvbmNoYW5n
ZSIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRv
U3RyaW5nKCkiLCAiSGVyZSdzICIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93
LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiSGVyZSdzIik7CiB9CiAKIGFzeW5jIGZ1bmN0
aW9uIHRlc3RFeHRlbmRTZWxlY3Rpb25Ub0JlZ2lubmluZ09mV29yZCgpCkBAIC03OSw2ICs3OSwx
MyBAQCBhc3luYyBmdW5jdGlvbiB0ZXN0RXh0ZW5kU2VsZWN0aW9uVG9CZWdpCiAgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJUaGUg
bWlzZml0cy4iKTsKIH0KIAorYXN5bmMgZnVuY3Rpb24gd2FpdEZvclNlY29uZGFyeVByZXNlbnRh
dGlvblVwZGF0ZUlmTmVlZGVkKCkKK3sKKyAgICAvLyBUaGVyZSBtaWdodCBiZSBhIHNlY29uZGFy
eSBzZWxlY3Rpb25jaGFuZ2UgZXZlbnQgYWZ0ZXIgbW92aW5nIGJ5IHBhcmFncmFwaCBib3VuZGFy
eS4gU2VlIHdlYmtpdC5vcmcvYi8xOTk4NTEKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgIGF3YWl0IFVJSGVscGVyLmVuc3VyZVByZXNlbnRhdGlvblVwZGF0ZSgpOworfQorCiBh
c3luYyBmdW5jdGlvbiB0ZXN0RXh0ZW5kU2VsZWN0aW9uVXAoKQogewogICAgIGF3YWl0IFVJSGVs
cGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiBzZWxlY3Rpb24uc2V0QmFzZUFu
ZEV4dGVudChwYXJhZ3JhcGhzWzFdLmZpcnN0Q2hpbGQsIDEsIHBhcmFncmFwaHNbMV0uZmlyc3RD
aGlsZCwgMCksIGRvY3VtZW50LCAic2VsZWN0aW9uY2hhbmdlIik7CkBAIC04Niw2ICs5Myw3IEBA
IGFzeW5jIGZ1bmN0aW9uIHRlc3RFeHRlbmRTZWxlY3Rpb25VcCgpCiAgICAgZGVidWcoIjxicj5Q
cmVzcyBTaGlmdCArIHVwIGFycm93IHRvIHNlbGVjdCB1cDoiKTsKICAgICBhd2FpdCBVSUhlbHBl
ci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gd2luZG93LnRlc3RSdW5uZXIgJiYg
VUlIZWxwZXIua2V5RG93bigidXBBcnJvdyIsIFsic2hpZnRLZXkiXSkgLCBkb2N1bWVudCwgInNl
bGVjdGlvbmNoYW5nZSIpOwogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNl
bGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiSGVyZSdzIHRvIHRoZSBjcmF6eSBvbmVzLlxuXG5UIik7
CisgICAgYXdhaXQgd2FpdEZvclNlY29uZGFyeVByZXNlbnRhdGlvblVwZGF0ZUlmTmVlZGVkKCk7
CiB9CiAKIGFzeW5jIGZ1bmN0aW9uIHRlc3RFeHRlbmRTZWxlY3Rpb25Eb3duKCkKQEAgLTk1LDYg
KzEwMyw3IEBAIGFzeW5jIGZ1bmN0aW9uIHRlc3RFeHRlbmRTZWxlY3Rpb25Eb3duKCkKICAgICBk
ZWJ1ZygiPGJyPlByZXNzIFNoaWZ0ICsgZG93biBhcnJvdyB0byBzZWxlY3QgZG93bjoiKTsKICAg
ICBhd2FpdCBVSUhlbHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gd2luZG93
LnRlc3RSdW5uZXIgJiYgVUlIZWxwZXIua2V5RG93bigiZG93bkFycm93IiwgWyJzaGlmdEtleSJd
KSAsIGRvY3VtZW50LCAic2VsZWN0aW9uY2hhbmdlIik7CiAgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJUaGUgbWlzZml0cy5cblxu
VCIpOworICAgIGF3YWl0IHdhaXRGb3JTZWNvbmRhcnlQcmVzZW50YXRpb25VcGRhdGVJZk5lZWRl
ZCgpOwogfQogCiBhc3luYyBmdW5jdGlvbiB0ZXN0RXh0ZW5kU2VsZWN0aW9uVG9FbmRPZlBhcmFn
cmFwaCgpCkBAIC0xMDcsNiArMTE2LDggQEAgYXN5bmMgZnVuY3Rpb24gdGVzdEV4dGVuZFNlbGVj
dGlvblRvRW5kTwogICAgIGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVu
dCgoKSA9PiB3aW5kb3cudGVzdFJ1bm5lciAmJiBVSUhlbHBlci5rZXlEb3duKCJkb3duQXJyb3ci
LCBbInNoaWZ0S2V5IiwgImFsdEtleSJdKSAsIGRvY3VtZW50LCAic2VsZWN0aW9uY2hhbmdlIik7
CiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJp
bmcoKSIsICJIZXJlJ3MgdG8gdGhlIGNyYXp5IG9uZXMuIik7CiAKKyAgICBhd2FpdCB3YWl0Rm9y
U2Vjb25kYXJ5UHJlc2VudGF0aW9uVXBkYXRlSWZOZWVkZWQoKTsKKwogICAgIHRvZ2dsZU9ubHlT
aG93VGVzdENvbnRhaW5lcigpOwogfQogCkBAIC0xMTgsOCArMTI5LDExIEBAIGFzeW5jIGZ1bmN0
aW9uIHRlc3RFeHRlbmRTZWxlY3Rpb25Ub0JlZ2kKIAogICAgIGRlYnVnKCI8YnI+UHJlc3MgU2hp
ZnQgKyBPcHRpb24gKyB1cCBhcnJvdyB0byBzZWxlY3QgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUg
cGFyYWdyYXBoOiIpOwogICAgIGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JF
dmVudCgoKSA9PiB3aW5kb3cudGVzdFJ1bm5lciAmJiBVSUhlbHBlci5rZXlEb3duKCJ1cEFycm93
IiwgWyJzaGlmdEtleSIsICJhbHRLZXkiXSkgLCBkb2N1bWVudCwgInNlbGVjdGlvbmNoYW5nZSIp
OworCiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9T
dHJpbmcoKSIsICJUaGUgcmViZWxzLiIpOwogCisgICAgYXdhaXQgd2FpdEZvclNlY29uZGFyeVBy
ZXNlbnRhdGlvblVwZGF0ZUlmTmVlZGVkKCk7CisKICAgICB0b2dnbGVPbmx5U2hvd1Rlc3RDb250
YWluZXIoKTsKIH0KIApAQCAtMTMzLDYgKzE0Nyw4IEBAIGFzeW5jIGZ1bmN0aW9uIHRlc3RFeHRl
bmRTZWxlY3Rpb25Ub0VuZE8KICAgICBhd2FpdCBVSUhlbHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0
Rm9yRXZlbnQoKCkgPT4gd2luZG93LnRlc3RSdW5uZXIgJiYgVUlIZWxwZXIua2V5RG93bigiZG93
bkFycm93IiwgWyJzaGlmdEtleSIsICJjdHJsS2V5Il0pICwgZG9jdW1lbnQsICJzZWxlY3Rpb25j
aGFuZ2UiKTsKICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24o
KS50b1N0cmluZygpIiwgIkhlcmUncyB0byB0aGUgY3Jhenkgb25lcy5cblxuVGhlIG1pc2ZpdHMu
XG5cblRoZSByZWJlbHMuIik7CiAKKyAgICBhd2FpdCB3YWl0Rm9yU2Vjb25kYXJ5UHJlc2VudGF0
aW9uVXBkYXRlSWZOZWVkZWQoKTsKKwogICAgIHRvZ2dsZU9ubHlTaG93VGVzdENvbnRhaW5lcigp
OwogfQogCkBAIC0xNDYsNiArMTYyLDggQEAgYXN5bmMgZnVuY3Rpb24gdGVzdEV4dGVuZFNlbGVj
dGlvblRvQmVnaQogICAgIGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVu
dCgoKSA9PiB3aW5kb3cudGVzdFJ1bm5lciAmJiBVSUhlbHBlci5rZXlEb3duKCJ1cEFycm93Iiwg
WyJzaGlmdEtleSIsICJjdHJsS2V5Il0pICwgZG9jdW1lbnQsICJzZWxlY3Rpb25jaGFuZ2UiKTsK
ICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmlu
ZygpIiwgIkhlcmUncyB0byB0aGUgY3Jhenkgb25lcy5cblxuVGhlIG1pc2ZpdHMuIik7CiAKKyAg
ICBhd2FpdCB3YWl0Rm9yU2Vjb25kYXJ5UHJlc2VudGF0aW9uVXBkYXRlSWZOZWVkZWQoKTsKKwog
ICAgIHRvZ2dsZU9ubHlTaG93VGVzdENvbnRhaW5lcigpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378283</attachid>
            <date>2019-09-06 23:21:58 -0700</date>
            <delta_ts>2019-09-06 23:28:57 -0700</delta_ts>
            <desc>Another GTK build fix attempt</desc>
            <filename>bug-201575-20190906232157.patch</filename>
            <type>text/plain</type>
            <size>48304</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0OTYwNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE5LTA5LTA2ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIE9wdGlvbiArIGFycm93IG1vdmVz
IGNhcmV0IHBhc3Qgd2hpdGVzcGFjZSBvbiBpT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTU3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoZSBidWcgd2FzIGNhdXNlZCBieSBmaW5kTmV4dFdvcmRG
cm9tSW5kZXggb24gaU9TIGJlaGF2aW5nIGRpZmZlcmVudGx5IGZyb20gbWFjT1MgYW5kIFVJS2l0
CisgICAgICAgIGJ5IHNraXBwaW5nIHRyYWlsaW5nIHdoaXRlc3BhY2UgYWZ0ZXIgYSB3b3JkIHdo
ZW4gbW92aW5nIGZvcndhcmQgYW5kIG5vdCBza2lwcGluZyBsZWFkaW5nCisgICAgICAgIHdoaXRl
c3BhY2Ugd2hlbiBtb3ZpbmcgYmFja3dhcmQuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1
Y2VzIGEgbmV3IG1vZGUgKFN0b3BBZnRlcldvcmQpIG9mIGZpbmROZXh0V29yZEZyb21JbmRleCBp
biBpT1MgdGhhdAorICAgICAgICBiZXR0ZXIgbWF0Y2hlcyB0aGUgYmVoYXZpb3Igb2YgZmluZE5l
eHRXb3JkRnJvbUluZGV4IG9uIG1hY09TIGFuZCBVSUtpdCwgYW5kIHVzZSBpdCBpbgorICAgICAg
ICB2YXJpb3VzIG1vZGlmeSogZnVuY3Rpb25zIG9mIEZyYW1lU2VsZWN0aW9uIHdoZW4gdGhlIHNl
bGVjdGlvbiB1cGRhdGUgaXMgdHJpZ2dlcmVkIGJ5IHVzZXIuCisKKyAgICAgICAgQWxsIG90aGVy
IGNhbGwgc2l0ZXMgYXMgd2VsbCBhcyB3aGVuIG1vZGlmeSogZnVuY3Rpb25zIGFyZSBpbnZvbGVk
IGZyb20gc2NyaXB0cywKKyAgICAgICAgd2UgdXNlIHRoZSBsZWdhY3kgbW9kZSAoTGVnYWN5U3Rv
cEJlZm9yZVdvcmQpIHRvIG1pbmltaXplIHRoZSBjb21wYXRpYmlsaXR5IHJpc2sgZm9yIG5vdy4K
KworICAgICAgICBUZXN0OiBlZGl0aW5nL3NlbGVjdGlvbi9pb3MvbW92ZS1ieS13b3JkLXdpdGgt
a2V5Ym9hcmQuaHRtbAorCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjp1cGRhdGVNYXJrZXJzRm9yV29yZHNBZmZlY3RlZEJ5RWRpdGluZyk6
CisgICAgICAgICogZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpuZXh0V29yZFdoaXRlc3BhY2VNb2RlSW5JT1MpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVT
ZWxlY3Rpb246Om5leHRXb3JkUG9zaXRpb25Gb3JQbGF0Zm9ybSk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5RXh0ZW5kaW5nUmlnaHQpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4dGVuZGluZ0ZvcndhcmQpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVTZWxlY3Rpb246Om1vZGlmeU1vdmluZ1JpZ2h0KToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lU2VsZWN0aW9uOjptb2RpZnlNb3ZpbmdGb3J3YXJkKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeHRlbmRpbmdMZWZ0KToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeHRlbmRpbmdCYWNrd2FyZCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW92aW5nTGVmdCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW92aW5nQmFja3dhcmQpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVTZWxlY3Rpb246Om1vZGlmeSk6CisgICAgICAgICogZWRpdGluZy9GcmFtZVNl
bGVjdGlvbi5oOgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNlYXJjaEJ1ZmZlcjo6aXNXb3JkU3RhcnRNYXRjaCBjb25zdCk6CisgICAgICAg
ICogZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJldmlvdXNX
b3JkUG9zaXRpb25Cb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjpwcmV2aW91c1dvcmRQb3Np
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpuZXh0V29yZFBvc2l0aW9uQm91bmRhcnkpOgorICAg
ICAgICAoV2ViQ29yZTo6bmV4dFdvcmRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpuZXh0
V29yZEJvdW5kYXJ5SW5EaXJlY3Rpb24pOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVVuaXRz
Lmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Qm91bmRhcmllcy5oOgorICAgICAgICAq
IHBsYXRmb3JtL3RleHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tOgorICAgICAgICAoV2ViQ29yZTo6
ZmluZE5leHRXb3JkRnJvbUluZGV4KTogQWRkZWQgYSBuZXcgbW9kZS4KKwogMjAxOS0wOS0wNiAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBJbmNvcnJl
Y3Qgc2VsZWN0aW9uIHJlY3QgcmV2ZWFsZWQgYWZ0ZXIgcGFzdGluZyBpbWFnZXMgaW4gYSBjb250
ZW50ZWRpdGFibGUgZWxlbWVudApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9h
dGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0
LmNwcAkocmV2aXNpb24gMjQ5NjA3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9h
dGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
MjAsMTIgKzUyMCwxMiBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIG5leHRXb3JkU3RhcnRQb3Np
CiAgICAgLy8gSW4gb3JkZXIgdG8gc2tpcCBzcGFjZXMgd2hlbiBtb3ZpbmcgcmlnaHQsIHdlIGFk
dmFuY2Ugb25lIHdvcmQgZnVydGhlcgogICAgIC8vIGFuZCB0aGVuIG1vdmUgb25lIHdvcmQgYmFj
ay4gVGhpcyB3aWxsIHB1dCB1cyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZQogICAgIC8vIHdvcmQg
Zm9sbG93aW5nLgotICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkFmdGVyU3BhY2luZ0FuZEZv
bGxvd2luZ1dvcmQgPSBuZXh0V29yZFBvc2l0aW9uKHBvc2l0aW9uQWZ0ZXJDdXJyZW50V29yZCk7
CisgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uQWZ0ZXJTcGFjaW5nQW5kRm9sbG93aW5nV29y
ZCA9IG5leHRXb3JkUG9zaXRpb24ocG9zaXRpb25BZnRlckN1cnJlbnRXb3JkLCBOZXh0V29yZE1v
ZGVJbklPUzo6TGVnYWN5U3RvcEJlZm9yZVdvcmQpOwogCiAgICAgaWYgKHBvc2l0aW9uQWZ0ZXJT
cGFjaW5nQW5kRm9sbG93aW5nV29yZCAhPSBwb3NpdGlvbkFmdGVyQ3VycmVudFdvcmQpCi0gICAg
ICAgIHBvc2l0aW9uQWZ0ZXJDdXJyZW50V29yZCA9IHByZXZpb3VzV29yZFBvc2l0aW9uKHBvc2l0
aW9uQWZ0ZXJTcGFjaW5nQW5kRm9sbG93aW5nV29yZCk7CisgICAgICAgIHBvc2l0aW9uQWZ0ZXJD
dXJyZW50V29yZCA9IHByZXZpb3VzV29yZFBvc2l0aW9uKHBvc2l0aW9uQWZ0ZXJTcGFjaW5nQW5k
Rm9sbG93aW5nV29yZCwgTmV4dFdvcmRNb2RlSW5JT1M6OkxlZ2FjeVN0b3BCZWZvcmVXb3JkKTsK
IAotICAgIGJvb2wgbW92aW5nQmFja3dhcmRzTW92ZWRQb3NpdGlvblRvU3RhcnRPZkN1cnJlbnRX
b3JkID0gcG9zaXRpb25BZnRlckN1cnJlbnRXb3JkID09IHByZXZpb3VzV29yZFBvc2l0aW9uKG5l
eHRXb3JkUG9zaXRpb24ocG9zaXRpb24pKTsKKyAgICBib29sIG1vdmluZ0JhY2t3YXJkc01vdmVk
UG9zaXRpb25Ub1N0YXJ0T2ZDdXJyZW50V29yZCA9IHBvc2l0aW9uQWZ0ZXJDdXJyZW50V29yZCA9
PSBwcmV2aW91c1dvcmRQb3NpdGlvbihuZXh0V29yZFBvc2l0aW9uKHBvc2l0aW9uLCBOZXh0V29y
ZE1vZGVJbklPUzo6TGVnYWN5U3RvcEJlZm9yZVdvcmQpLCBOZXh0V29yZE1vZGVJbklPUzo6TGVn
YWN5U3RvcEJlZm9yZVdvcmQpOwogICAgIGlmIChtb3ZpbmdCYWNrd2FyZHNNb3ZlZFBvc2l0aW9u
VG9TdGFydE9mQ3VycmVudFdvcmQpCiAgICAgICAgIHBvc2l0aW9uQWZ0ZXJDdXJyZW50V29yZCA9
IHBvc2l0aW9uQWZ0ZXJTcGFjaW5nQW5kRm9sbG93aW5nV29yZDsKIApAQCAtNTM3LDIyICs1Mzcs
MjMgQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1dvcmRFbmRQbwogICAgIC8vIFdl
IG1vdmUgZm9yd2FyZCBhbmQgdGhlbiBiYWNrd2FyZCB0byBwb3NpdGlvbiBvdXJzZWx2ZXMgYXQg
dGhlIGJlZ2lubmluZwogICAgIC8vIG9mIHRoZSBjdXJyZW50IHdvcmQgZm9yIHRoaXMgYm91bmRh
cnksIG1ha2luZyB0aGUgbW9zdCBvZiB0aGUgc2VtYW50aWNzCiAgICAgLy8gb2YgcHJldmlvdXNX
b3JkUG9zaXRpb24oKSBhbmQgbmV4dFdvcmRQb3NpdGlvbigpLgotICAgIFZpc2libGVQb3NpdGlv
biBwb3NpdGlvbkF0U3RhcnRPZkN1cnJlbnRXb3JkID0gcHJldmlvdXNXb3JkUG9zaXRpb24obmV4
dFdvcmRQb3NpdGlvbihwb3NpdGlvbikpOwotICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkF0
UHJldmlvdXNXb3JkID0gcHJldmlvdXNXb3JkUG9zaXRpb24ocG9zaXRpb24pOworICAgIFZpc2li
bGVQb3NpdGlvbiBwb3NpdGlvbkF0U3RhcnRPZkN1cnJlbnRXb3JkID0gcHJldmlvdXNXb3JkUG9z
aXRpb24obmV4dFdvcmRQb3NpdGlvbihwb3NpdGlvbiwgTmV4dFdvcmRNb2RlSW5JT1M6OkxlZ2Fj
eVN0b3BCZWZvcmVXb3JkKSwgTmV4dFdvcmRNb2RlSW5JT1M6OkxlZ2FjeVN0b3BCZWZvcmVXb3Jk
KTsKKyAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25BdFByZXZpb3VzV29yZCA9IHByZXZpb3Vz
V29yZFBvc2l0aW9uKHBvc2l0aW9uLCBOZXh0V29yZE1vZGVJbklPUzo6TGVnYWN5U3RvcEJlZm9y
ZVdvcmQpOwogCiAgICAgLy8gTmVlZCB0byBjb25zaWRlciBzcGVjaWFsIGNhc2VzIChwdW5jdHVh
dGlvbikgd2hlbiB3ZSBhcmUgaW4gdGhlIGxhc3Qgd29yZCBvZiBhIHNlbnRlbmNlLgogICAgIGlm
IChpc1N0YXJ0T2ZXb3JkKHBvc2l0aW9uKSAmJiBwb3NpdGlvbkF0UHJldmlvdXNXb3JkICE9IHBv
c2l0aW9uICYmIHBvc2l0aW9uQXRQcmV2aW91c1dvcmQgPT0gcG9zaXRpb25BdFN0YXJ0T2ZDdXJy
ZW50V29yZCkKLSAgICAgICAgcmV0dXJuIG5leHRXb3JkUG9zaXRpb24ocG9zaXRpb25BdFN0YXJ0
T2ZDdXJyZW50V29yZCk7CisgICAgICAgIHJldHVybiBuZXh0V29yZFBvc2l0aW9uKHBvc2l0aW9u
QXRTdGFydE9mQ3VycmVudFdvcmQsIE5leHRXb3JkTW9kZUluSU9TOjpMZWdhY3lTdG9wQmVmb3Jl
V29yZCk7CiAKICAgICAvLyBJbiBvcmRlciB0byBza2lwIHNwYWNlcyB3aGVuIG1vdmluZyBsZWZ0
LCB3ZSBhZHZhbmNlIG9uZSB3b3JkIGJhY2t3YXJkcwogICAgIC8vIGFuZCB0aGVuIG1vdmUgb25l
IHdvcmQgZm9yd2FyZC4gVGhpcyB3aWxsIHB1dCB1cyBhdCB0aGUgYmVnaW5uaW5nIG9mCiAgICAg
Ly8gdGhlIHdvcmQgZm9sbG93aW5nLgotICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkJlZm9y
ZVNwYWNpbmdBbmRQcmVjZWVkaW5nV29yZCA9IHByZXZpb3VzV29yZFBvc2l0aW9uKHBvc2l0aW9u
QXRTdGFydE9mQ3VycmVudFdvcmQpOworICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkJlZm9y
ZVNwYWNpbmdBbmRQcmVjZWVkaW5nV29yZCA9IHByZXZpb3VzV29yZFBvc2l0aW9uKHBvc2l0aW9u
QXRTdGFydE9mQ3VycmVudFdvcmQsIE5leHRXb3JkTW9kZUluSU9TOjpMZWdhY3lTdG9wQmVmb3Jl
V29yZCk7CiAKICAgICBpZiAocG9zaXRpb25CZWZvcmVTcGFjaW5nQW5kUHJlY2VlZGluZ1dvcmQg
IT0gcG9zaXRpb25BdFN0YXJ0T2ZDdXJyZW50V29yZCkKLSAgICAgICAgcG9zaXRpb25BdFN0YXJ0
T2ZDdXJyZW50V29yZCA9IG5leHRXb3JkUG9zaXRpb24ocG9zaXRpb25CZWZvcmVTcGFjaW5nQW5k
UHJlY2VlZGluZ1dvcmQpOworICAgICAgICBwb3NpdGlvbkF0U3RhcnRPZkN1cnJlbnRXb3JkID0g
bmV4dFdvcmRQb3NpdGlvbihwb3NpdGlvbkJlZm9yZVNwYWNpbmdBbmRQcmVjZWVkaW5nV29yZCwg
TmV4dFdvcmRNb2RlSW5JT1M6OkxlZ2FjeVN0b3BCZWZvcmVXb3JkKTsKIAotICAgIGJvb2wgbW92
aW5nRm9yd2FyZE1vdmVkUG9zaXRpb25Ub0VuZE9mQ3VycmVudFdvcmQgPSBuZXh0V29yZFBvc2l0
aW9uKHBvc2l0aW9uQXRTdGFydE9mQ3VycmVudFdvcmQpID09IHByZXZpb3VzV29yZFBvc2l0aW9u
KG5leHRXb3JkUG9zaXRpb24ocG9zaXRpb24pKTsKKyAgICBib29sIG1vdmluZ0ZvcndhcmRNb3Zl
ZFBvc2l0aW9uVG9FbmRPZkN1cnJlbnRXb3JkID0gbmV4dFdvcmRQb3NpdGlvbihwb3NpdGlvbkF0
U3RhcnRPZkN1cnJlbnRXb3JkLCBOZXh0V29yZE1vZGVJbklPUzo6TGVnYWN5U3RvcEJlZm9yZVdv
cmQpCisgICAgICAgID09IHByZXZpb3VzV29yZFBvc2l0aW9uKG5leHRXb3JkUG9zaXRpb24ocG9z
aXRpb24sIE5leHRXb3JkTW9kZUluSU9TOjpMZWdhY3lTdG9wQmVmb3JlV29yZCksIE5leHRXb3Jk
TW9kZUluSU9TOjpMZWdhY3lTdG9wQmVmb3JlV29yZCk7CiAgICAgaWYgKG1vdmluZ0ZvcndhcmRN
b3ZlZFBvc2l0aW9uVG9FbmRPZkN1cnJlbnRXb3JkKQogICAgICAgICBwb3NpdGlvbkF0U3RhcnRP
ZkN1cnJlbnRXb3JkID0gcG9zaXRpb25CZWZvcmVTcGFjaW5nQW5kUHJlY2VlZGluZ1dvcmQ7CiAK
QEAgLTU3Myw3ICs1NzQsNyBAQCBzdGF0aWMgVmlzaWJsZVNlbGVjdGlvbiB3b3JkQXRQb3NpdGlv
bkZvCiAgICAgICAgIGlmIChpc1N0YXJ0T2ZXb3JkKHBvc2l0aW9uKSAmJiBkZXByZWNhdGVkSXNF
ZGl0aW5nV2hpdGVzcGFjZShwb3NpdGlvbi5jaGFyYWN0ZXJCZWZvcmUoKSkpCiAgICAgICAgICAg
ICBzdGFydFBvc2l0aW9uID0gcG9zaXRpb247CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHN0
YXJ0UG9zaXRpb24gPSBwcmV2aW91c1dvcmRQb3NpdGlvbihwb3NpdGlvbik7CisgICAgICAgICAg
ICBzdGFydFBvc2l0aW9uID0gcHJldmlvdXNXb3JkUG9zaXRpb24ocG9zaXRpb24sIE5leHRXb3Jk
TW9kZUluSU9TOjpMZWdhY3lTdG9wQmVmb3JlV29yZCk7CiAgICAgICAgIGVuZFBvc2l0aW9uID0g
bmV4dFdvcmRTdGFydFBvc2l0aW9uKHN0YXJ0UG9zaXRpb24pOwogCiAgICAgICAgIC8vIFdlIG5l
ZWQgdG8gbWFrZSBzdXJlIHRoYXQgd2UgbG9vayBmb3IgdGhlIHdvcmQgaW4gdGhlIGN1cnJlbnQg
bGluZSB3aGVuCkBAIC01ODcsNyArNTg4LDcgQEAgc3RhdGljIFZpc2libGVTZWxlY3Rpb24gd29y
ZEF0UG9zaXRpb25GbwogCiAgICAgY2FzZSBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX0VORDoKICAg
ICAgICAgc3RhcnRQb3NpdGlvbiA9IHByZXZpb3VzV29yZEVuZFBvc2l0aW9uKHBvc2l0aW9uKTsK
LSAgICAgICAgZW5kUG9zaXRpb24gPSBuZXh0V29yZFBvc2l0aW9uKHN0YXJ0UG9zaXRpb24pOwor
ICAgICAgICBlbmRQb3NpdGlvbiA9IG5leHRXb3JkUG9zaXRpb24oc3RhcnRQb3NpdGlvbiwgTmV4
dFdvcmRNb2RlSW5JT1M6OkxlZ2FjeVN0b3BCZWZvcmVXb3JkKTsKICAgICAgICAgYnJlYWs7CiAK
ICAgICBkZWZhdWx0OgpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkocmV2aXNpb24g
MjQ5NjA3KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMDI2LDcgKzMwMjYsNyBAQCB2b2lkIEVkaXRvcjo6dXBkYXRlTWFya2Vyc0Zvcldv
cmRzQWZmZWN0CiAgICAgLy8gSWYgZG9Ob3RSZW1vdmVJZlNlbGVjdGlvbkF0V29yZEJvdW5kYXJ5
IGlzIHRydWUsIGFuZCBmaXJzdCB3b3JkIGVuZHMgYXQgdGhlIHN0YXJ0IG9mIHNlbGVjdGlvbiwK
ICAgICAvLyB3ZSBjaG9vc2UgbmV4dCB3b3JkIGFzIHRoZSBmaXJzdCB3b3JkLgogICAgIGlmIChk
b05vdFJlbW92ZUlmU2VsZWN0aW9uQXRXb3JkQm91bmRhcnkgJiYgZW5kT2ZGaXJzdFdvcmQgPT0g
c3RhcnRPZlNlbGVjdGlvbikgewotICAgICAgICBzdGFydE9mRmlyc3RXb3JkID0gbmV4dFdvcmRQ
b3NpdGlvbihzdGFydE9mRmlyc3RXb3JkKTsKKyAgICAgICAgc3RhcnRPZkZpcnN0V29yZCA9IG5l
eHRXb3JkUG9zaXRpb24oc3RhcnRPZkZpcnN0V29yZCwgTmV4dFdvcmRNb2RlSW5JT1M6OkxlZ2Fj
eVN0b3BCZWZvcmVXb3JkKTsKICAgICAgICAgZW5kT2ZGaXJzdFdvcmQgPSBlbmRPZldvcmQoc3Rh
cnRPZkZpcnN0V29yZCwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KTsKICAgICAgICAgaWYgKHN0YXJ0
T2ZGaXJzdFdvcmQgPT0gZW5kT2ZTZWxlY3Rpb24pCiAgICAgICAgICAgICByZXR1cm47CkBAIC0z
MDM1LDcgKzMwMzUsNyBAQCB2b2lkIEVkaXRvcjo6dXBkYXRlTWFya2Vyc0ZvcldvcmRzQWZmZWN0
CiAgICAgLy8gSWYgZG9Ob3RSZW1vdmVJZlNlbGVjdGlvbkF0V29yZEJvdW5kYXJ5IGlzIHRydWUs
IGFuZCBsYXN0IHdvcmQgYmVnaW5zIGF0IHRoZSBlbmQgb2Ygc2VsZWN0aW9uLAogICAgIC8vIHdl
IGNob29zZSBwcmV2aW91cyB3b3JkIGFzIHRoZSBsYXN0IHdvcmQuCiAgICAgaWYgKGRvTm90UmVt
b3ZlSWZTZWxlY3Rpb25BdFdvcmRCb3VuZGFyeSAmJiBzdGFydE9mTGFzdFdvcmQgPT0gZW5kT2ZT
ZWxlY3Rpb24pIHsKLSAgICAgICAgc3RhcnRPZkxhc3RXb3JkID0gcHJldmlvdXNXb3JkUG9zaXRp
b24oc3RhcnRPZkxhc3RXb3JkKTsKKyAgICAgICAgc3RhcnRPZkxhc3RXb3JkID0gcHJldmlvdXNX
b3JkUG9zaXRpb24oc3RhcnRPZkxhc3RXb3JkLCBOZXh0V29yZE1vZGVJbklPUzo6TGVnYWN5U3Rv
cEJlZm9yZVdvcmQpOwogICAgICAgICBlbmRPZkxhc3RXb3JkID0gZW5kT2ZXb3JkKHN0YXJ0T2ZM
YXN0V29yZCwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KTsKICAgICAgICAgaWYgKGVuZE9mTGFzdFdv
cmQgPT0gc3RhcnRPZlNlbGVjdGlvbikKICAgICAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCShyZXZpc2lvbiAyNDk2MDcpCisr
KyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzExLDIwICs3MTEsMjYgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjpl
bmRGb3JQbAogICAgIHJldHVybiBwb3NpdGlvbkZvclBsYXRmb3JtKGZhbHNlKTsKIH0KIAotVmlz
aWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjpuZXh0V29yZFBvc2l0aW9uRm9yUGxhdGZvcm0o
Y29uc3QgVmlzaWJsZVBvc2l0aW9uICZvcmlnaW5hbFBvc2l0aW9uKQorc3RhdGljIE5leHRXb3Jk
TW9kZUluSU9TIG5leHRXb3JkV2hpdGVzcGFjZU1vZGVJbklPUyhFVXNlclRyaWdnZXJlZCB1c2Vy
VHJpZ2dlcmVkKQogewotICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkFmdGVyQ3VycmVudFdv
cmQgPSBuZXh0V29yZFBvc2l0aW9uKG9yaWdpbmFsUG9zaXRpb24pOworICAgIHJldHVybiB1c2Vy
VHJpZ2dlcmVkID09IFVzZXJUcmlnZ2VyZWQgPyBOZXh0V29yZE1vZGVJbklPUzo6U3RvcEFmdGVy
V29yZCA6IE5leHRXb3JkTW9kZUluSU9TOjpMZWdhY3lTdG9wQmVmb3JlV29yZDsKK30KKworVmlz
aWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjpuZXh0V29yZFBvc2l0aW9uRm9yUGxhdGZvcm0o
Y29uc3QgVmlzaWJsZVBvc2l0aW9uICZvcmlnaW5hbFBvc2l0aW9uLCBFVXNlclRyaWdnZXJlZCB1
c2VyVHJpZ2dlcmVkKQoreworICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkFmdGVyQ3VycmVu
dFdvcmQgPSBuZXh0V29yZFBvc2l0aW9uKG9yaWdpbmFsUG9zaXRpb24sIG5leHRXb3JkV2hpdGVz
cGFjZU1vZGVJbklPUyh1c2VyVHJpZ2dlcmVkKSk7CiAKICAgICBpZiAobV9mcmFtZSAmJiBtX2Zy
YW1lLT5lZGl0b3IoKS5iZWhhdmlvcigpLnNob3VsZFNraXBTcGFjZVdoZW5Nb3ZpbmdSaWdodCgp
KSB7CiAgICAgICAgIC8vIEluIG9yZGVyIHRvIHNraXAgc3BhY2VzIHdoZW4gbW92aW5nIHJpZ2h0
LCB3ZSBhZHZhbmNlIG9uZQogICAgICAgICAvLyB3b3JkIGZ1cnRoZXIgYW5kIHRoZW4gbW92ZSBv
bmUgd29yZCBiYWNrLiBHaXZlbiB0aGUKICAgICAgICAgLy8gc2VtYW50aWNzIG9mIHByZXZpb3Vz
V29yZFBvc2l0aW9uKCkgdGhpcyB3aWxsIHB1dCB1cyBhdCB0aGUKICAgICAgICAgLy8gYmVnaW5u
aW5nIG9mIHRoZSB3b3JkIGZvbGxvd2luZy4KLSAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0
aW9uQWZ0ZXJTcGFjaW5nQW5kRm9sbG93aW5nV29yZCA9IG5leHRXb3JkUG9zaXRpb24ocG9zaXRp
b25BZnRlckN1cnJlbnRXb3JkKTsKKyAgICAgICAgYXV0byB3aGl0ZXNwYWNlTW9kZSA9IG5leHRX
b3JkV2hpdGVzcGFjZU1vZGVJbklPUyh1c2VyVHJpZ2dlcmVkKTsKKyAgICAgICAgVmlzaWJsZVBv
c2l0aW9uIHBvc2l0aW9uQWZ0ZXJTcGFjaW5nQW5kRm9sbG93aW5nV29yZCA9IG5leHRXb3JkUG9z
aXRpb24ocG9zaXRpb25BZnRlckN1cnJlbnRXb3JkLCB3aGl0ZXNwYWNlTW9kZSk7CiAgICAgICAg
IGlmIChwb3NpdGlvbkFmdGVyU3BhY2luZ0FuZEZvbGxvd2luZ1dvcmQgIT0gcG9zaXRpb25BZnRl
ckN1cnJlbnRXb3JkKQotICAgICAgICAgICAgcG9zaXRpb25BZnRlckN1cnJlbnRXb3JkID0gcHJl
dmlvdXNXb3JkUG9zaXRpb24ocG9zaXRpb25BZnRlclNwYWNpbmdBbmRGb2xsb3dpbmdXb3JkKTsK
KyAgICAgICAgICAgIHBvc2l0aW9uQWZ0ZXJDdXJyZW50V29yZCA9IHByZXZpb3VzV29yZFBvc2l0
aW9uKHBvc2l0aW9uQWZ0ZXJTcGFjaW5nQW5kRm9sbG93aW5nV29yZCwgd2hpdGVzcGFjZU1vZGUp
OwogCi0gICAgICAgIGJvb2wgbW92aW5nQmFja3dhcmRzTW92ZWRQb3NpdGlvblRvU3RhcnRPZkN1
cnJlbnRXb3JkID0gcG9zaXRpb25BZnRlckN1cnJlbnRXb3JkID09IHByZXZpb3VzV29yZFBvc2l0
aW9uKG5leHRXb3JkUG9zaXRpb24ob3JpZ2luYWxQb3NpdGlvbikpOworICAgICAgICBib29sIG1v
dmluZ0JhY2t3YXJkc01vdmVkUG9zaXRpb25Ub1N0YXJ0T2ZDdXJyZW50V29yZCA9IHBvc2l0aW9u
QWZ0ZXJDdXJyZW50V29yZCA9PSBwcmV2aW91c1dvcmRQb3NpdGlvbihuZXh0V29yZFBvc2l0aW9u
KG9yaWdpbmFsUG9zaXRpb24sIHdoaXRlc3BhY2VNb2RlKSwgd2hpdGVzcGFjZU1vZGUpOwogICAg
ICAgICBpZiAobW92aW5nQmFja3dhcmRzTW92ZWRQb3NpdGlvblRvU3RhcnRPZkN1cnJlbnRXb3Jk
KQogICAgICAgICAgICAgcG9zaXRpb25BZnRlckN1cnJlbnRXb3JkID0gcG9zaXRpb25BZnRlclNw
YWNpbmdBbmRGb2xsb3dpbmdXb3JkOwogICAgIH0KQEAgLTczOSw3ICs3NDUsNyBAQCBzdGF0aWMg
dm9pZCBhZGp1c3RQb3NpdGlvbkZvclVzZXJTZWxlY3RBCiB9CiAjZW5kaWYKIAotVmlzaWJsZVBv
c2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeHRlbmRpbmdSaWdodChUZXh0R3JhbnVsYXJp
dHkgZ3JhbnVsYXJpdHkpCitWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4
dGVuZGluZ1JpZ2h0KFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgRVVzZXJUcmlnZ2VyZWQg
dXNlclRyaWdnZXJlZCkKIHsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zKG1fc2VsZWN0aW9uLmV4
dGVudCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKTsKIApAQCAtNzU3LDE1ICs3NjMsMTUgQEAg
VmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeAogICAgICAgICBicmVhazsK
ICAgICBjYXNlIFdvcmRHcmFudWxhcml0eToKICAgICAgICAgaWYgKGRpcmVjdGlvbk9mRW5jbG9z
aW5nQmxvY2soKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpCi0gICAgICAgICAgICBwb3MgPSBuZXh0
V29yZFBvc2l0aW9uRm9yUGxhdGZvcm0ocG9zKTsKKyAgICAgICAgICAgIHBvcyA9IG5leHRXb3Jk
UG9zaXRpb25Gb3JQbGF0Zm9ybShwb3MsIHVzZXJUcmlnZ2VyZWQpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBwb3MgPSBwcmV2aW91c1dvcmRQb3NpdGlvbihwb3MpOworICAgICAgICAgICAg
cG9zID0gcHJldmlvdXNXb3JkUG9zaXRpb24ocG9zLCBuZXh0V29yZFdoaXRlc3BhY2VNb2RlSW5J
T1ModXNlclRyaWdnZXJlZCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIExpbmVCb3VuZGFy
eToKICAgICAgICAgaWYgKGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBUZXh0RGlyZWN0
aW9uOjpMVFIpCi0gICAgICAgICAgICBwb3MgPSBtb2RpZnlFeHRlbmRpbmdGb3J3YXJkKGdyYW51
bGFyaXR5KTsKKyAgICAgICAgICAgIHBvcyA9IG1vZGlmeUV4dGVuZGluZ0ZvcndhcmQoZ3JhbnVs
YXJpdHksIHVzZXJUcmlnZ2VyZWQpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBwb3MgPSBt
b2RpZnlFeHRlbmRpbmdCYWNrd2FyZChncmFudWxhcml0eSk7CisgICAgICAgICAgICBwb3MgPSBt
b2RpZnlFeHRlbmRpbmdCYWNrd2FyZChncmFudWxhcml0eSwgdXNlclRyaWdnZXJlZCk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0eToKICAgICBjYXNlIExpbmVH
cmFudWxhcml0eToKQEAgLTc3NCw3ICs3ODAsNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxl
Y3Rpb246Om1vZGlmeUV4CiAgICAgY2FzZSBQYXJhZ3JhcGhCb3VuZGFyeToKICAgICBjYXNlIERv
Y3VtZW50Qm91bmRhcnk6CiAgICAgICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgYWxsIG9mIHRoZSBh
Ym92ZT8KLSAgICAgICAgcG9zID0gbW9kaWZ5RXh0ZW5kaW5nRm9yd2FyZChncmFudWxhcml0eSk7
CisgICAgICAgIHBvcyA9IG1vZGlmeUV4dGVuZGluZ0ZvcndhcmQoZ3JhbnVsYXJpdHksIHVzZXJU
cmlnZ2VyZWQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIERvY3VtZW50R3JhbnVsYXJpdHk6
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNzg2LDcgKzc5Miw3IEBAIFZpc2li
bGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5RXgKICAgICByZXR1cm4gcG9zOwogfQog
Ci1WaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4dGVuZGluZ0ZvcndhcmQo
VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQorVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0
aW9uOjptb2RpZnlFeHRlbmRpbmdGb3J3YXJkKFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwg
RVVzZXJUcmlnZ2VyZWQgdXNlclRyaWdnZXJlZCkKIHsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9z
KG1fc2VsZWN0aW9uLmV4dGVudCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKTsKICAgICBzd2l0
Y2ggKGdyYW51bGFyaXR5KSB7CkBAIC03OTQsNyArODAwLDcgQEAgVmlzaWJsZVBvc2l0aW9uIEZy
YW1lU2VsZWN0aW9uOjptb2RpZnlFeAogICAgICAgICBwb3MgPSBwb3MubmV4dChDYW5ub3RDcm9z
c0VkaXRpbmdCb3VuZGFyeSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV29yZEdyYW51bGFy
aXR5OgotICAgICAgICBwb3MgPSBuZXh0V29yZFBvc2l0aW9uRm9yUGxhdGZvcm0ocG9zKTsKKyAg
ICAgICAgcG9zID0gbmV4dFdvcmRQb3NpdGlvbkZvclBsYXRmb3JtKHBvcywgdXNlclRyaWdnZXJl
ZCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0eToKICAgICAg
ICAgcG9zID0gbmV4dFNlbnRlbmNlUG9zaXRpb24ocG9zKTsKQEAgLTgzMSw3ICs4MzcsNyBAQCBW
aXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4CiAgICAgcmV0dXJuIHBvczsK
IH0KIAotVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNb3ZpbmdSaWdodChU
ZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wqIHJlYWNoZWRCb3VuZGFyeSkKK1Zpc2li
bGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW92aW5nUmlnaHQoVGV4dEdyYW51bGFy
aXR5IGdyYW51bGFyaXR5LCBFVXNlclRyaWdnZXJlZCB1c2VyVHJpZ2dlcmVkLCBib29sKiByZWFj
aGVkQm91bmRhcnkpCiB7CiAgICAgaWYgKHJlYWNoZWRCb3VuZGFyeSkKICAgICAgICAgKnJlYWNo
ZWRCb3VuZGFyeSA9IGZhbHNlOwpAQCAtODYxLDcgKzg2Nyw3IEBAIFZpc2libGVQb3NpdGlvbiBG
cmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW8KICAgICBjYXNlIFBhcmFncmFwaEJvdW5kYXJ5OgogICAg
IGNhc2UgRG9jdW1lbnRCb3VuZGFyeToKICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBhbGwg
b2YgdGhlIGFib3ZlLgotICAgICAgICBwb3MgPSBtb2RpZnlNb3ZpbmdGb3J3YXJkKGdyYW51bGFy
aXR5LCByZWFjaGVkQm91bmRhcnkpOworICAgICAgICBwb3MgPSBtb2RpZnlNb3ZpbmdGb3J3YXJk
KGdyYW51bGFyaXR5LCB1c2VyVHJpZ2dlcmVkLCByZWFjaGVkQm91bmRhcnkpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIExpbmVCb3VuZGFyeToKICAgICAgICAgcG9zID0gcmlnaHRCb3VuZGFy
eU9mTGluZShzdGFydEZvclBsYXRmb3JtKCksIGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSwg
cmVhY2hlZEJvdW5kYXJ5KTsKQEAgLTg3Myw3ICs4NzksNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJh
bWVTZWxlY3Rpb246Om1vZGlmeU1vCiAgICAgcmV0dXJuIHBvczsKIH0KIAotVmlzaWJsZVBvc2l0
aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNb3ZpbmdGb3J3YXJkKFRleHRHcmFudWxhcml0eSBn
cmFudWxhcml0eSwgYm9vbCogcmVhY2hlZEJvdW5kYXJ5KQorVmlzaWJsZVBvc2l0aW9uIEZyYW1l
U2VsZWN0aW9uOjptb2RpZnlNb3ZpbmdGb3J3YXJkKFRleHRHcmFudWxhcml0eSBncmFudWxhcml0
eSwgRVVzZXJUcmlnZ2VyZWQgdXNlclRyaWdnZXJlZCwgYm9vbCogcmVhY2hlZEJvdW5kYXJ5KQog
ewogICAgIGlmIChyZWFjaGVkQm91bmRhcnkpCiAgICAgICAgICpyZWFjaGVkQm91bmRhcnkgPSBm
YWxzZTsKQEAgLTkwMyw3ICs5MDksNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246
Om1vZGlmeU1vCiAgICAgICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24u
ZXh0ZW50KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpLm5leHQoQ2Fubm90Q3Jvc3NFZGl0aW5n
Qm91bmRhcnksIHJlYWNoZWRCb3VuZGFyeSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV29y
ZEdyYW51bGFyaXR5OgotICAgICAgICBwb3MgPSBuZXh0V29yZFBvc2l0aW9uRm9yUGxhdGZvcm0o
Y3VycmVudFBvc2l0aW9uKTsKKyAgICAgICAgcG9zID0gbmV4dFdvcmRQb3NpdGlvbkZvclBsYXRm
b3JtKGN1cnJlbnRQb3NpdGlvbiwgdXNlclRyaWdnZXJlZCk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgU2VudGVuY2VHcmFudWxhcml0eToKICAgICAgICAgcG9zID0gbmV4dFNlbnRlbmNlUG9z
aXRpb24oY3VycmVudFBvc2l0aW9uKTsKQEAgLTk1Niw3ICs5NjIsNyBAQCBWaXNpYmxlUG9zaXRp
b24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeU1vCiAgICAgcmV0dXJuIHBvczsKIH0KIAotVmlzaWJs
ZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeHRlbmRpbmdMZWZ0KFRleHRHcmFudWxh
cml0eSBncmFudWxhcml0eSkKK1Zpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5
RXh0ZW5kaW5nTGVmdChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIEVVc2VyVHJpZ2dlcmVk
IHVzZXJUcmlnZ2VyZWQpCiB7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvcyhtX3NlbGVjdGlvbi5l
eHRlbnQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSk7CiAKQEAgLTk3NCwxNSArOTgwLDE1IEBA
IFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5RXgKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6CiAgICAgICAgIGlmIChkaXJlY3Rpb25PZkVuY2xv
c2luZ0Jsb2NrKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKQotICAgICAgICAgICAgcG9zID0gcHJl
dmlvdXNXb3JkUG9zaXRpb24ocG9zKTsKKyAgICAgICAgICAgIHBvcyA9IHByZXZpb3VzV29yZFBv
c2l0aW9uKHBvcywgbmV4dFdvcmRXaGl0ZXNwYWNlTW9kZUluSU9TKHVzZXJUcmlnZ2VyZWQpKTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgcG9zID0gbmV4dFdvcmRQb3NpdGlvbkZvclBsYXRm
b3JtKHBvcyk7CisgICAgICAgICAgICBwb3MgPSBuZXh0V29yZFBvc2l0aW9uRm9yUGxhdGZvcm0o
cG9zLCB1c2VyVHJpZ2dlcmVkKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBMaW5lQm91bmRh
cnk6CiAgICAgICAgIGlmIChkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gVGV4dERpcmVj
dGlvbjo6TFRSKQotICAgICAgICAgICAgcG9zID0gbW9kaWZ5RXh0ZW5kaW5nQmFja3dhcmQoZ3Jh
bnVsYXJpdHkpOworICAgICAgICAgICAgcG9zID0gbW9kaWZ5RXh0ZW5kaW5nQmFja3dhcmQoZ3Jh
bnVsYXJpdHksIHVzZXJUcmlnZ2VyZWQpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBwb3Mg
PSBtb2RpZnlFeHRlbmRpbmdGb3J3YXJkKGdyYW51bGFyaXR5KTsKKyAgICAgICAgICAgIHBvcyA9
IG1vZGlmeUV4dGVuZGluZ0ZvcndhcmQoZ3JhbnVsYXJpdHksIHVzZXJUcmlnZ2VyZWQpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6CiAgICAgY2FzZSBMaW5l
R3JhbnVsYXJpdHk6CkBAIC05OTAsNyArOTk2LDcgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2Vs
ZWN0aW9uOjptb2RpZnlFeAogICAgIGNhc2UgU2VudGVuY2VCb3VuZGFyeToKICAgICBjYXNlIFBh
cmFncmFwaEJvdW5kYXJ5OgogICAgIGNhc2UgRG9jdW1lbnRCb3VuZGFyeToKLSAgICAgICAgcG9z
ID0gbW9kaWZ5RXh0ZW5kaW5nQmFja3dhcmQoZ3JhbnVsYXJpdHkpOworICAgICAgICBwb3MgPSBt
b2RpZnlFeHRlbmRpbmdCYWNrd2FyZChncmFudWxhcml0eSwgdXNlclRyaWdnZXJlZCk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgRG9jdW1lbnRHcmFudWxhcml0eToKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CkBAIC0xMDAyLDcgKzEwMDgsNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJh
bWVTZWxlY3Rpb246Om1vZGlmeUV4CiAgICAgcmV0dXJuIHBvczsKIH0KICAgICAgICAKLVZpc2li
bGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5RXh0ZW5kaW5nQmFja3dhcmQoVGV4dEdy
YW51bGFyaXR5IGdyYW51bGFyaXR5KQorVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjpt
b2RpZnlFeHRlbmRpbmdCYWNrd2FyZChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIEVVc2Vy
VHJpZ2dlcmVkIHVzZXJUcmlnZ2VyZWQpCiB7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvcyhtX3Nl
bGVjdGlvbi5leHRlbnQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSk7CiAKQEAgLTEwMTUsNyAr
MTAyMSw3IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5RXgKICAgICAg
ICAgcG9zID0gcG9zLnByZXZpb3VzKENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6Ci0gICAgICAgIHBvcyA9IHByZXZp
b3VzV29yZFBvc2l0aW9uKHBvcyk7CisgICAgICAgIHBvcyA9IHByZXZpb3VzV29yZFBvc2l0aW9u
KHBvcywgbmV4dFdvcmRXaGl0ZXNwYWNlTW9kZUluSU9TKHVzZXJUcmlnZ2VyZWQpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5OgogICAgICAgICBwb3MgPSBw
cmV2aW91c1NlbnRlbmNlUG9zaXRpb24ocG9zKTsKQEAgLTEwNTIsNyArMTA1OCw3IEBAIFZpc2li
bGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5RXgKICAgICByZXR1cm4gcG9zOwogfQog
Ci1WaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeU1vdmluZ0xlZnQoVGV4dEdy
YW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sKiByZWFjaGVkQm91bmRhcnkpCitWaXNpYmxlUG9z
aXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeU1vdmluZ0xlZnQoVGV4dEdyYW51bGFyaXR5IGdy
YW51bGFyaXR5LCBFVXNlclRyaWdnZXJlZCB1c2VyVHJpZ2dlcmVkLCBib29sKiByZWFjaGVkQm91
bmRhcnkpCiB7CiAgICAgaWYgKHJlYWNoZWRCb3VuZGFyeSkKICAgICAgICAgKnJlYWNoZWRCb3Vu
ZGFyeSA9IGZhbHNlOwpAQCAtMTA4Miw3ICsxMDg4LDcgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1l
U2VsZWN0aW9uOjptb2RpZnlNbwogICAgIGNhc2UgUGFyYWdyYXBoQm91bmRhcnk6CiAgICAgY2Fz
ZSBEb2N1bWVudEJvdW5kYXJ5OgogICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGFsbCBvZiB0
aGUgYWJvdmUuCi0gICAgICAgIHBvcyA9IG1vZGlmeU1vdmluZ0JhY2t3YXJkKGdyYW51bGFyaXR5
LCByZWFjaGVkQm91bmRhcnkpOworICAgICAgICBwb3MgPSBtb2RpZnlNb3ZpbmdCYWNrd2FyZChn
cmFudWxhcml0eSwgdXNlclRyaWdnZXJlZCwgcmVhY2hlZEJvdW5kYXJ5KTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBMaW5lQm91bmRhcnk6CiAgICAgICAgIHBvcyA9IGxlZnRCb3VuZGFyeU9m
TGluZShzdGFydEZvclBsYXRmb3JtKCksIGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSwgcmVh
Y2hlZEJvdW5kYXJ5KTsKQEAgLTEwOTQsNyArMTEwMCw3IEBAIFZpc2libGVQb3NpdGlvbiBGcmFt
ZVNlbGVjdGlvbjo6bW9kaWZ5TW8KICAgICByZXR1cm4gcG9zOwogfQogCi1WaXNpYmxlUG9zaXRp
b24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeU1vdmluZ0JhY2t3YXJkKFRleHRHcmFudWxhcml0eSBn
cmFudWxhcml0eSwgYm9vbCogcmVhY2hlZEJvdW5kYXJ5KQorVmlzaWJsZVBvc2l0aW9uIEZyYW1l
U2VsZWN0aW9uOjptb2RpZnlNb3ZpbmdCYWNrd2FyZChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJp
dHksIEVVc2VyVHJpZ2dlcmVkIHVzZXJUcmlnZ2VyZWQsIGJvb2wqIHJlYWNoZWRCb3VuZGFyeSkK
IHsKICAgICBpZiAocmVhY2hlZEJvdW5kYXJ5KQogICAgICAgICAqcmVhY2hlZEJvdW5kYXJ5ID0g
ZmFsc2U7CkBAIC0xMTIzLDcgKzExMjksNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rp
b246Om1vZGlmeU1vCiAgICAgICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rp
b24uZXh0ZW50KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpLnByZXZpb3VzKENhbm5vdENyb3Nz
RWRpdGluZ0JvdW5kYXJ5LCByZWFjaGVkQm91bmRhcnkpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIFdvcmRHcmFudWxhcml0eToKLSAgICAgICAgcG9zID0gcHJldmlvdXNXb3JkUG9zaXRpb24o
Y3VycmVudFBvc2l0aW9uKTsKKyAgICAgICAgcG9zID0gcHJldmlvdXNXb3JkUG9zaXRpb24oY3Vy
cmVudFBvc2l0aW9uLCBuZXh0V29yZFdoaXRlc3BhY2VNb2RlSW5JT1ModXNlclRyaWdnZXJlZCkp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6CiAgICAgICAg
IHBvcyA9IHByZXZpb3VzU2VudGVuY2VQb3NpdGlvbihjdXJyZW50UG9zaXRpb24pOwpAQCAtMTMz
MCwyNyArMTMzNiwyNyBAQCBib29sIEZyYW1lU2VsZWN0aW9uOjptb2RpZnkoRUFsdGVyYXRpb24g
CiAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKICAgICBjYXNlIERpcmVjdGlvblJpZ2h0OgogICAg
ICAgICBpZiAoYWx0ZXIgPT0gQWx0ZXJhdGlvbk1vdmUpCi0gICAgICAgICAgICBwb3NpdGlvbiA9
IG1vZGlmeU1vdmluZ1JpZ2h0KGdyYW51bGFyaXR5LCAmcmVhY2hlZEJvdW5kYXJ5KTsKKyAgICAg
ICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5TW92aW5nUmlnaHQoZ3JhbnVsYXJpdHksIHVzZXJUcmln
Z2VyZWQsICZyZWFjaGVkQm91bmRhcnkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBwb3Np
dGlvbiA9IG1vZGlmeUV4dGVuZGluZ1JpZ2h0KGdyYW51bGFyaXR5KTsKKyAgICAgICAgICAgIHBv
c2l0aW9uID0gbW9kaWZ5RXh0ZW5kaW5nUmlnaHQoZ3JhbnVsYXJpdHksIHVzZXJUcmlnZ2VyZWQp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIERpcmVjdGlvbkZvcndhcmQ6CiAgICAgICAgIGlm
IChhbHRlciA9PSBBbHRlcmF0aW9uRXh0ZW5kKQotICAgICAgICAgICAgcG9zaXRpb24gPSBtb2Rp
ZnlFeHRlbmRpbmdGb3J3YXJkKGdyYW51bGFyaXR5KTsKKyAgICAgICAgICAgIHBvc2l0aW9uID0g
bW9kaWZ5RXh0ZW5kaW5nRm9yd2FyZChncmFudWxhcml0eSwgdXNlclRyaWdnZXJlZCk7CiAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5TW92aW5nRm9yd2FyZChncmFu
dWxhcml0eSwgJnJlYWNoZWRCb3VuZGFyeSk7CisgICAgICAgICAgICBwb3NpdGlvbiA9IG1vZGlm
eU1vdmluZ0ZvcndhcmQoZ3JhbnVsYXJpdHksIHVzZXJUcmlnZ2VyZWQsICZyZWFjaGVkQm91bmRh
cnkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIERpcmVjdGlvbkxlZnQ6CiAgICAgICAgIGlm
IChhbHRlciA9PSBBbHRlcmF0aW9uTW92ZSkKLSAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5
TW92aW5nTGVmdChncmFudWxhcml0eSwgJnJlYWNoZWRCb3VuZGFyeSk7CisgICAgICAgICAgICBw
b3NpdGlvbiA9IG1vZGlmeU1vdmluZ0xlZnQoZ3JhbnVsYXJpdHksIHVzZXJUcmlnZ2VyZWQsICZy
ZWFjaGVkQm91bmRhcnkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBwb3NpdGlvbiA9IG1v
ZGlmeUV4dGVuZGluZ0xlZnQoZ3JhbnVsYXJpdHkpOworICAgICAgICAgICAgcG9zaXRpb24gPSBt
b2RpZnlFeHRlbmRpbmdMZWZ0KGdyYW51bGFyaXR5LCB1c2VyVHJpZ2dlcmVkKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBEaXJlY3Rpb25CYWNrd2FyZDoKICAgICAgICAgaWYgKGFsdGVyID09
IEFsdGVyYXRpb25FeHRlbmQpCi0gICAgICAgICAgICBwb3NpdGlvbiA9IG1vZGlmeUV4dGVuZGlu
Z0JhY2t3YXJkKGdyYW51bGFyaXR5KTsKKyAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5RXh0
ZW5kaW5nQmFja3dhcmQoZ3JhbnVsYXJpdHksIHVzZXJUcmlnZ2VyZWQpOwogICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBwb3NpdGlvbiA9IG1vZGlmeU1vdmluZ0JhY2t3YXJkKGdyYW51bGFyaXR5
LCAmcmVhY2hlZEJvdW5kYXJ5KTsKKyAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5TW92aW5n
QmFja3dhcmQoZ3JhbnVsYXJpdHksIHVzZXJUcmlnZ2VyZWQsICZyZWFjaGVkQm91bmRhcnkpOwog
ICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTIxNDUsNyArMjE1MSw3IEBAIHZvaWQgRnJhbWVT
ZWxlY3Rpb246OnVwZGF0ZUFwcGVhcmFuY2UoKQogICAgIC8vIENvbnN0cnVjdCBhIG5ldyBWaXNp
YmxlU29sdXRpb24sIHNpbmNlIG1fc2VsZWN0aW9uIGlzIG5vdCBuZWNlc3NhcmlseSB2YWxpZCwg
YW5kIHRoZSBmb2xsb3dpbmcgc3RlcHMKICAgICAvLyBhc3N1bWUgYSB2YWxpZCBzZWxlY3Rpb24u
IFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5NTYzPiBhbmQg
PHJkYXI6Ly9wcm9ibGVtLzEwMjMyODY2Pi4KICNpZiBFTkFCTEUoVEVYVF9DQVJFVCkKLSAgICBW
aXNpYmxlUG9zaXRpb24gZW5kVmlzaWJsZVBvc2l0aW9uID0gcGFpbnRCbG9ja0N1cnNvciA/IG1v
ZGlmeUV4dGVuZGluZ0ZvcndhcmQoQ2hhcmFjdGVyR3JhbnVsYXJpdHkpIDogb2xkU2VsZWN0aW9u
LnZpc2libGVFbmQoKTsKKyAgICBWaXNpYmxlUG9zaXRpb24gZW5kVmlzaWJsZVBvc2l0aW9uID0g
cGFpbnRCbG9ja0N1cnNvciA/IG1vZGlmeUV4dGVuZGluZ0ZvcndhcmQoQ2hhcmFjdGVyR3JhbnVs
YXJpdHksIE5vdFVzZXJUcmlnZ2VyZWQpIDogb2xkU2VsZWN0aW9uLnZpc2libGVFbmQoKTsKICAg
ICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbihvbGRTZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCks
IGVuZFZpc2libGVQb3NpdGlvbik7CiAjZWxzZQogICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0
aW9uKG9sZFNlbGVjdGlvbi52aXNpYmxlU3RhcnQoKSwgb2xkU2VsZWN0aW9uLnZpc2libGVFbmQo
KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCShyZXZpc2lv
biAyNDk2MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI5OSwxNiArMjk5LDE2IEBAIHByaXZhdGU6CiAgICAgVmlzaWJsZVBv
c2l0aW9uIHBvc2l0aW9uRm9yUGxhdGZvcm0oYm9vbCBpc0dldFN0YXJ0KSBjb25zdDsKICAgICBW
aXNpYmxlUG9zaXRpb24gc3RhcnRGb3JQbGF0Zm9ybSgpIGNvbnN0OwogICAgIFZpc2libGVQb3Np
dGlvbiBlbmRGb3JQbGF0Zm9ybSgpIGNvbnN0OwotICAgIFZpc2libGVQb3NpdGlvbiBuZXh0V29y
ZFBvc2l0aW9uRm9yUGxhdGZvcm0oY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7CisgICAgVmlzaWJs
ZVBvc2l0aW9uIG5leHRXb3JkUG9zaXRpb25Gb3JQbGF0Zm9ybShjb25zdCBWaXNpYmxlUG9zaXRp
b24mLCBFVXNlclRyaWdnZXJlZCk7CiAKLSAgICBWaXNpYmxlUG9zaXRpb24gbW9kaWZ5RXh0ZW5k
aW5nUmlnaHQoVGV4dEdyYW51bGFyaXR5KTsKLSAgICBWaXNpYmxlUG9zaXRpb24gbW9kaWZ5RXh0
ZW5kaW5nRm9yd2FyZChUZXh0R3JhbnVsYXJpdHkpOwotICAgIFZpc2libGVQb3NpdGlvbiBtb2Rp
ZnlNb3ZpbmdSaWdodChUZXh0R3JhbnVsYXJpdHksIGJvb2wqIHJlYWNoZWRCb3VuZGFyeSA9IG51
bGxwdHIpOwotICAgIFZpc2libGVQb3NpdGlvbiBtb2RpZnlNb3ZpbmdGb3J3YXJkKFRleHRHcmFu
dWxhcml0eSwgYm9vbCogcmVhY2hlZEJvdW5kYXJ5ID0gbnVsbHB0cik7Ci0gICAgVmlzaWJsZVBv
c2l0aW9uIG1vZGlmeUV4dGVuZGluZ0xlZnQoVGV4dEdyYW51bGFyaXR5KTsKLSAgICBWaXNpYmxl
UG9zaXRpb24gbW9kaWZ5RXh0ZW5kaW5nQmFja3dhcmQoVGV4dEdyYW51bGFyaXR5KTsKLSAgICBW
aXNpYmxlUG9zaXRpb24gbW9kaWZ5TW92aW5nTGVmdChUZXh0R3JhbnVsYXJpdHksIGJvb2wqIHJl
YWNoZWRCb3VuZGFyeSA9IG51bGxwdHIpOwotICAgIFZpc2libGVQb3NpdGlvbiBtb2RpZnlNb3Zp
bmdCYWNrd2FyZChUZXh0R3JhbnVsYXJpdHksIGJvb2wqIHJlYWNoZWRCb3VuZGFyeSA9IG51bGxw
dHIpOworICAgIFZpc2libGVQb3NpdGlvbiBtb2RpZnlFeHRlbmRpbmdSaWdodChUZXh0R3JhbnVs
YXJpdHksIEVVc2VyVHJpZ2dlcmVkKTsKKyAgICBWaXNpYmxlUG9zaXRpb24gbW9kaWZ5RXh0ZW5k
aW5nRm9yd2FyZChUZXh0R3JhbnVsYXJpdHksIEVVc2VyVHJpZ2dlcmVkKTsKKyAgICBWaXNpYmxl
UG9zaXRpb24gbW9kaWZ5TW92aW5nUmlnaHQoVGV4dEdyYW51bGFyaXR5LCBFVXNlclRyaWdnZXJl
ZCwgYm9vbCogcmVhY2hlZEJvdW5kYXJ5ID0gbnVsbHB0cik7CisgICAgVmlzaWJsZVBvc2l0aW9u
IG1vZGlmeU1vdmluZ0ZvcndhcmQoVGV4dEdyYW51bGFyaXR5LCBFVXNlclRyaWdnZXJlZCwgYm9v
bCogcmVhY2hlZEJvdW5kYXJ5ID0gbnVsbHB0cik7CisgICAgVmlzaWJsZVBvc2l0aW9uIG1vZGlm
eUV4dGVuZGluZ0xlZnQoVGV4dEdyYW51bGFyaXR5LCBFVXNlclRyaWdnZXJlZCk7CisgICAgVmlz
aWJsZVBvc2l0aW9uIG1vZGlmeUV4dGVuZGluZ0JhY2t3YXJkKFRleHRHcmFudWxhcml0eSwgRVVz
ZXJUcmlnZ2VyZWQpOworICAgIFZpc2libGVQb3NpdGlvbiBtb2RpZnlNb3ZpbmdMZWZ0KFRleHRH
cmFudWxhcml0eSwgRVVzZXJUcmlnZ2VyZWQsIGJvb2wqIHJlYWNoZWRCb3VuZGFyeSA9IG51bGxw
dHIpOworICAgIFZpc2libGVQb3NpdGlvbiBtb2RpZnlNb3ZpbmdCYWNrd2FyZChUZXh0R3JhbnVs
YXJpdHksIEVVc2VyVHJpZ2dlcmVkLCBib29sKiByZWFjaGVkQm91bmRhcnkgPSBudWxscHRyKTsK
IAogICAgIExheW91dFVuaXQgbGluZURpcmVjdGlvblBvaW50Rm9yQmxvY2tEaXJlY3Rpb25OYXZp
Z2F0aW9uKEVQb3NpdGlvblR5cGUpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Rl
eHRJdGVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0
SXRlcmF0b3IuY3BwCShyZXZpc2lvbiAyNDk2MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1RleHRJdGVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMzUsNyArMjMzNSw3IEBAIGlu
bGluZSBib29sIFNlYXJjaEJ1ZmZlcjo6aXNXb3JkU3RhcnRNYXQKIAogICAgIHNpemVfdCB3b3Jk
QnJlYWtTZWFyY2hTdGFydCA9IHN0YXJ0ICsgbGVuZ3RoOwogICAgIHdoaWxlICh3b3JkQnJlYWtT
ZWFyY2hTdGFydCA+IHN0YXJ0KQotICAgICAgICB3b3JkQnJlYWtTZWFyY2hTdGFydCA9IGZpbmRO
ZXh0V29yZEZyb21JbmRleChTdHJpbmdWaWV3KG1fYnVmZmVyLmRhdGEoKSwgbV9idWZmZXIuc2l6
ZSgpKSwgd29yZEJyZWFrU2VhcmNoU3RhcnQsIGZhbHNlIC8qIGJhY2t3YXJkcyAqLyk7CisgICAg
ICAgIHdvcmRCcmVha1NlYXJjaFN0YXJ0ID0gZmluZE5leHRXb3JkRnJvbUluZGV4KFN0cmluZ1Zp
ZXcobV9idWZmZXIuZGF0YSgpLCBtX2J1ZmZlci5zaXplKCkpLCB3b3JkQnJlYWtTZWFyY2hTdGFy
dCwgTmV4dFdvcmREaXJlY3Rpb246OkJhY2t3YXJkKTsKICAgICByZXR1cm4gd29yZEJyZWFrU2Vh
cmNoU3RhcnQgPT0gc3RhcnQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlz
aWJsZVVuaXRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2li
bGVVbml0cy5jcHAJKHJldmlzaW9uIDI0OTYwNykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VmlzaWJsZVVuaXRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYxLDYgKzc2MSw3IEBAIFZpc2li
bGVQb3NpdGlvbiBlbmRPZldvcmQoY29uc3QgVmlzaWJsZVAKICAgICByZXR1cm4gbmV4dEJvdW5k
YXJ5KHAsIGVuZFdvcmRCb3VuZGFyeSk7CiB9CiAKK3RlbXBsYXRlIDxOZXh0V29yZE1vZGVJbklP
UyBpb3NNb2RlPgogc3RhdGljIHVuc2lnbmVkIHByZXZpb3VzV29yZFBvc2l0aW9uQm91bmRhcnko
U3RyaW5nVmlldyB0ZXh0LCB1bnNpZ25lZCBvZmZzZXQsIEJvdW5kYXJ5U2VhcmNoQ29udGV4dEF2
YWlsYWJpbGl0eSBtYXlIYXZlTW9yZUNvbnRleHQsIGJvb2wmIG5lZWRNb3JlQ29udGV4dCkKIHsK
ICAgICBpZiAobWF5SGF2ZU1vcmVDb250ZXh0ICYmICFzdGFydE9mTGFzdFdvcmRCb3VuZGFyeUNv
bnRleHQodGV4dC5zdWJzdHJpbmcoMCwgb2Zmc2V0KSkpIHsKQEAgLTc2OCwxNCArNzY5LDE3IEBA
IHN0YXRpYyB1bnNpZ25lZCBwcmV2aW91c1dvcmRQb3NpdGlvbkJvdW4KICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQogICAgIG5lZWRNb3JlQ29udGV4dCA9IGZhbHNlOwotICAgIHJldHVybiBmaW5k
TmV4dFdvcmRGcm9tSW5kZXgodGV4dCwgb2Zmc2V0LCBmYWxzZSk7CisgICAgcmV0dXJuIGZpbmRO
ZXh0V29yZEZyb21JbmRleCh0ZXh0LCBvZmZzZXQsIE5leHRXb3JkRGlyZWN0aW9uOjpCYWNrd2Fy
ZCwgaW9zTW9kZSk7CiB9CiAKLVZpc2libGVQb3NpdGlvbiBwcmV2aW91c1dvcmRQb3NpdGlvbihj
b25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uKQorVmlzaWJsZVBvc2l0aW9uIHByZXZpb3Vz
V29yZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24sIE5leHRXb3JkTW9k
ZUluSU9TIGlvc01vZGUpCiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uLmhvbm9yRWRpdGluZ0JvdW5k
YXJ5QXRPckJlZm9yZShwcmV2aW91c0JvdW5kYXJ5KHBvc2l0aW9uLCBwcmV2aW91c1dvcmRQb3Np
dGlvbkJvdW5kYXJ5KSk7CisgICAgaWYgKGlvc01vZGUgPT0gTmV4dFdvcmRNb2RlSW5JT1M6Okxl
Z2FjeVN0b3BCZWZvcmVXb3JkKSAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgY29kZSBwYXRoLgorICAg
ICAgICByZXR1cm4gcG9zaXRpb24uaG9ub3JFZGl0aW5nQm91bmRhcnlBdE9yQmVmb3JlKHByZXZp
b3VzQm91bmRhcnkocG9zaXRpb24sIHByZXZpb3VzV29yZFBvc2l0aW9uQm91bmRhcnk8TmV4dFdv
cmRNb2RlSW5JT1M6OkxlZ2FjeVN0b3BCZWZvcmVXb3JkPikpOworICAgIHJldHVybiBwb3NpdGlv
bi5ob25vckVkaXRpbmdCb3VuZGFyeUF0T3JCZWZvcmUocHJldmlvdXNCb3VuZGFyeShwb3NpdGlv
biwgcHJldmlvdXNXb3JkUG9zaXRpb25Cb3VuZGFyeTxOZXh0V29yZE1vZGVJbklPUzo6U3RvcEFm
dGVyV29yZD4pKTsKIH0KIAordGVtcGxhdGUgPE5leHRXb3JkTW9kZUluSU9TIGlvc01vZGU+CiBz
dGF0aWMgdW5zaWduZWQgbmV4dFdvcmRQb3NpdGlvbkJvdW5kYXJ5KFN0cmluZ1ZpZXcgdGV4dCwg
dW5zaWduZWQgb2Zmc2V0LCBCb3VuZGFyeVNlYXJjaENvbnRleHRBdmFpbGFiaWxpdHkgbWF5SGF2
ZU1vcmVDb250ZXh0LCBib29sJiBuZWVkTW9yZUNvbnRleHQpCiB7CiAgICAgaWYgKG1heUhhdmVN
b3JlQ29udGV4dCAmJiBlbmRPZkZpcnN0V29yZEJvdW5kYXJ5Q29udGV4dCh0ZXh0LnN1YnN0cmlu
ZyhvZmZzZXQpKSA9PSB0ZXh0Lmxlbmd0aCgpIC0gb2Zmc2V0KSB7CkBAIC03ODMsMTIgKzc4Nywx
NCBAQCBzdGF0aWMgdW5zaWduZWQgbmV4dFdvcmRQb3NpdGlvbkJvdW5kYXJ5CiAgICAgICAgIHJl
dHVybiB0ZXh0Lmxlbmd0aCgpOwogICAgIH0KICAgICBuZWVkTW9yZUNvbnRleHQgPSBmYWxzZTsK
LSAgICByZXR1cm4gZmluZE5leHRXb3JkRnJvbUluZGV4KHRleHQsIG9mZnNldCwgdHJ1ZSk7Cisg
ICAgcmV0dXJuIGZpbmROZXh0V29yZEZyb21JbmRleCh0ZXh0LCBvZmZzZXQsIE5leHRXb3JkRGly
ZWN0aW9uOjpGb3J3YXJkLCBpb3NNb2RlKTsKIH0KIAotVmlzaWJsZVBvc2l0aW9uIG5leHRXb3Jk
UG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbikKK1Zpc2libGVQb3NpdGlv
biBuZXh0V29yZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24sIE5leHRX
b3JkTW9kZUluSU9TIGlvc01vZGUpCiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uLmhvbm9yRWRpdGlu
Z0JvdW5kYXJ5QXRPckFmdGVyKG5leHRCb3VuZGFyeShwb3NpdGlvbiwgbmV4dFdvcmRQb3NpdGlv
bkJvdW5kYXJ5KSk7CisgICAgaWYgKGlvc01vZGUgPT0gTmV4dFdvcmRNb2RlSW5JT1M6OkxlZ2Fj
eVN0b3BCZWZvcmVXb3JkKSAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgY29kZSBwYXRoLgorICAgICAg
ICByZXR1cm4gcG9zaXRpb24uaG9ub3JFZGl0aW5nQm91bmRhcnlBdE9yQWZ0ZXIobmV4dEJvdW5k
YXJ5KHBvc2l0aW9uLCBuZXh0V29yZFBvc2l0aW9uQm91bmRhcnk8TmV4dFdvcmRNb2RlSW5JT1M6
OkxlZ2FjeVN0b3BCZWZvcmVXb3JkPikpOworICAgIHJldHVybiBwb3NpdGlvbi5ob25vckVkaXRp
bmdCb3VuZGFyeUF0T3JBZnRlcihuZXh0Qm91bmRhcnkocG9zaXRpb24sIG5leHRXb3JkUG9zaXRp
b25Cb3VuZGFyeTxOZXh0V29yZE1vZGVJbklPUzo6U3RvcEFmdGVyV29yZD4pKTsKIH0KIAogYm9v
bCBpc1N0YXJ0T2ZXb3JkKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcCkKQEAgLTE3MDAsNyArMTcw
Niw3IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gbmV4dFdvcmRCb3VuZGFyeUkKICAgICAgICAg
ICAgICAgICAvLyBEbyBzYW1lIHRoaW5nIGFzIGJhY2t3YXJkcyB0cmF2ZWxpbmcgYmVsb3cuCiAg
ICAgICAgICAgICAgICAgc3RhcnQgPSB2cDsKICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkg
ewotICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBzdGFydE9mV29yZChuZXh0V29yZFBvc2l0
aW9uKHN0YXJ0KSwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KTsKKyAgICAgICAgICAgICAgICAgICAg
cmVzdWx0ID0gc3RhcnRPZldvcmQobmV4dFdvcmRQb3NpdGlvbihzdGFydCwgTmV4dFdvcmRNb2Rl
SW5JT1M6OkxlZ2FjeVN0b3BCZWZvcmVXb3JkKSwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KTsKIAog
ICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IHN0YXJ0KQogICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CkBAIC0xNzM0LDcgKzE3NDAsNyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0
aW9uIG5leHRXb3JkQm91bmRhcnlJCiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAg
ICBlbmQgPSB2cDsKICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICAgICAg
ICAgICAgICByZXN1bHQgPSBlbmRPZldvcmQocHJldmlvdXNXb3JkUG9zaXRpb24oZW5kKSwgUmln
aHRXb3JkSWZPbkJvdW5kYXJ5KTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gZW5kT2ZX
b3JkKHByZXZpb3VzV29yZFBvc2l0aW9uKGVuZCwgTmV4dFdvcmRNb2RlSW5JT1M6OkxlZ2FjeVN0
b3BCZWZvcmVXb3JkKSwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KTsKIAogICAgICAgICAgICAgICAg
ICAgICBpZiAocmVzdWx0ID09IGVuZCkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5oCShyZXZpc2lvbiAyNDk2MDcp
CisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkVkaXRpbmdCb3Vu
ZGFyeS5oIgorI2luY2x1ZGUgIlRleHRCb3VuZGFyaWVzLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVNl
bGVjdGlvbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MCw4ICs0MSw4IEBAIGVudW0g
RVdvcmRTaWRlIHsgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5ID0KIC8vIHdvcmRzCiBXRUJDT1JFX0VY
UE9SVCBWaXNpYmxlUG9zaXRpb24gc3RhcnRPZldvcmQoY29uc3QgVmlzaWJsZVBvc2l0aW9uICYs
IEVXb3JkU2lkZSA9IFJpZ2h0V29yZElmT25Cb3VuZGFyeSk7CiBXRUJDT1JFX0VYUE9SVCBWaXNp
YmxlUG9zaXRpb24gZW5kT2ZXb3JkKGNvbnN0IFZpc2libGVQb3NpdGlvbiAmLCBFV29yZFNpZGUg
PSBSaWdodFdvcmRJZk9uQm91bmRhcnkpOwotV0VCQ09SRV9FWFBPUlQgVmlzaWJsZVBvc2l0aW9u
IHByZXZpb3VzV29yZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiAmKTsKLVdFQkNPUkVf
RVhQT1JUIFZpc2libGVQb3NpdGlvbiBuZXh0V29yZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3Np
dGlvbiAmKTsKK1dFQkNPUkVfRVhQT1JUIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1dvcmRQb3Np
dGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24gJiwgTmV4dFdvcmRNb2RlSW5JT1MpOworV0VCQ09S
RV9FWFBPUlQgVmlzaWJsZVBvc2l0aW9uIG5leHRXb3JkUG9zaXRpb24oY29uc3QgVmlzaWJsZVBv
c2l0aW9uICYsIE5leHRXb3JkTW9kZUluSU9TKTsKIFZpc2libGVQb3NpdGlvbiByaWdodFdvcmRQ
b3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBib29sIHNraXBzU3BhY2VXaGVuTW92aW5n
UmlnaHQpOwogVmlzaWJsZVBvc2l0aW9uIGxlZnRXb3JkUG9zaXRpb24oY29uc3QgVmlzaWJsZVBv
c2l0aW9uJiwgYm9vbCBza2lwc1NwYWNlV2hlbk1vdmluZ1JpZ2h0KTsKIGJvb2wgaXNTdGFydE9m
V29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvVGV4dEJvdW5kYXJpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmgJKHJldmlzaW9uIDI0OTYwNykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJvdW5kYXJpZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtNDcsNyArNDcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgdm9pZCBmaW5kV29y
ZEJvdW5kYXJ5KFN0cmluZ1ZpZXcsIGludCBwb3NpdGlvbiwgaW50KiBzdGFydCwgaW50KiBlbmQp
OwogICAgIHZvaWQgZmluZEVuZFdvcmRCb3VuZGFyeShTdHJpbmdWaWV3LCBpbnQgcG9zaXRpb24s
IGludCogZW5kKTsKLSAgICBpbnQgZmluZE5leHRXb3JkRnJvbUluZGV4KFN0cmluZ1ZpZXcsIGlu
dCBwb3NpdGlvbiwgYm9vbCBmb3J3YXJkKTsKKworICAgIGVudW0gY2xhc3MgTmV4dFdvcmREaXJl
Y3Rpb24geyBGb3J3YXJkLCBCYWNrd2FyZCB9OworICAgIGVudW0gY2xhc3MgTmV4dFdvcmRNb2Rl
SW5JT1MgeyBMZWdhY3lTdG9wQmVmb3JlV29yZCwgU3RvcEFmdGVyV29yZCB9OworICAgIGludCBm
aW5kTmV4dFdvcmRGcm9tSW5kZXgoU3RyaW5nVmlldywgaW50IHBvc2l0aW9uLCBOZXh0V29yZERp
cmVjdGlvbiwgTmV4dFdvcmRNb2RlSW5JT1MgPSBOZXh0V29yZE1vZGVJbklPUzo6TGVnYWN5U3Rv
cEJlZm9yZVdvcmQpOwogCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
bWFjL1RleHRCb3VuZGFyaWVzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tCShyZXZpc2lvbiAyNDk2MDcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Qm91bmRhcmllcy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjI5LDExICsyMjksMTIgQEAgdm9pZCBmaW5kRW5kV29yZEJvdW5kYXJ5KFN0cmlu
Z1ZpZXcgdGV4dAogICAgIGZpbmRXb3JkQm91bmRhcnkodGV4dCwgcG9zaXRpb24sICZzdGFydCwg
ZW5kKTsKIH0KIAotaW50IGZpbmROZXh0V29yZEZyb21JbmRleChTdHJpbmdWaWV3IHRleHQsIGlu
dCBwb3NpdGlvbiwgYm9vbCBmb3J3YXJkKQoraW50IGZpbmROZXh0V29yZEZyb21JbmRleChTdHJp
bmdWaWV3IHRleHQsIGludCBwb3NpdGlvbiwgTmV4dFdvcmREaXJlY3Rpb24gZGlyZWN0aW9uLCBO
ZXh0V29yZE1vZGVJbklPUyB3aGl0ZXNwYWNlTW9kZUluSU9TKQogeyAgIAogI2lmIFVTRShBUFBL
SVQpCisgICAgVU5VU0VEX1BBUkFNKHdoaXRlc3BhY2VNb2RlSW5JT1MpOwogICAgIE5TQXR0cmli
dXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9j
XSBpbml0V2l0aFN0cmluZzp0ZXh0LmNyZWF0ZU5TU3RyaW5nV2l0aG91dENvcHlpbmcoKS5nZXQo
KV07Ci0gICAgaW50IHJlc3VsdCA9IFthdHRyaWJ1dGVkU3RyaW5nIG5leHRXb3JkRnJvbUluZGV4
OnBvc2l0aW9uIGZvcndhcmQ6Zm9yd2FyZF07CisgICAgaW50IHJlc3VsdCA9IFthdHRyaWJ1dGVk
U3RyaW5nIG5leHRXb3JkRnJvbUluZGV4OnBvc2l0aW9uIGZvcndhcmQ6ZGlyZWN0aW9uID09IE5l
eHRXb3JkRGlyZWN0aW9uOjpGb3J3YXJkXTsKICAgICBbYXR0cmlidXRlZFN0cmluZyByZWxlYXNl
XTsKICAgICByZXR1cm4gcmVzdWx0OwogI2Vsc2UKQEAgLTI0MywxNCArMjQ0LDMxIEBAIGludCBm
aW5kTmV4dFdvcmRGcm9tSW5kZXgoU3RyaW5nVmlldyB0ZXgKICAgICBpbnQgcG9zID0gcG9zaXRp
b247CiAgICAgVUJyZWFrSXRlcmF0b3IqIGJvdW5kYXJ5ID0gd29yZEJyZWFrSXRlcmF0b3IodGV4
dCk7CiAgICAgaWYgKGJvdW5kYXJ5KSB7Ci0gICAgICAgIGlmIChmb3J3YXJkKSB7CisgICAgICAg
IGlmIChkaXJlY3Rpb24gPT0gTmV4dFdvcmREaXJlY3Rpb246OkZvcndhcmQpIHsKKyAgICAgICAg
ICAgIGlmICh3aGl0ZXNwYWNlTW9kZUluSU9TID09IE5leHRXb3JkTW9kZUluSU9TOjpTdG9wQWZ0
ZXJXb3JkKSB7CisgICAgICAgICAgICAgICAgd2hpbGUgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihw
b3MpIDwgdGV4dC5sZW5ndGgoKSAmJiBpc1dvcmREZWxpbWl0aW5nQ2hhcmFjdGVyKHRleHRbcG9z
XSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcG9zID0gdWJya19mb2xsb3dpbmcoYm91bmRhcnks
IHBvcyk7CisgICAgICAgICAgICAgICAgICAgIGlmIChwb3MgPT0gVUJSS19ET05FKQorICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRleHQubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQogICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgIHBvcyA9
IHVicmtfZm9sbG93aW5nKGJvdW5kYXJ5LCBwb3MpOwogICAgICAgICAgICAgICAgIGlmIChwb3Mg
PT0gVUJSS19ET05FKQotICAgICAgICAgICAgICAgICAgICBwb3MgPSB0ZXh0Lmxlbmd0aCgpOwor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGV4dC5sZW5ndGgoKTsKICAgICAgICAgICAgIH0g
d2hpbGUgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihwb3MpIDwgdGV4dC5sZW5ndGgoKSAmJiAocG9z
ID09IDAgfHwgIWlzU2tpcENoYXJhY3Rlcih0ZXh0W3BvcyAtIDFdKSkgJiYgaXNTa2lwQ2hhcmFj
dGVyKHRleHRbcG9zXSkpOworCisgICAgICAgICAgICAvLyBJQ1Ugd291bGQgc2tpcCB0aGUgdHJh
aWxpbmcgd2hpdGVzcGFjZS4gR28gYmFjay4KKyAgICAgICAgICAgIGlmICh3aGl0ZXNwYWNlTW9k
ZUluSU9TID09IE5leHRXb3JkTW9kZUluSU9TOjpTdG9wQWZ0ZXJXb3JkICYmIGlzV29yZERlbGlt
aXRpbmdDaGFyYWN0ZXIodGV4dFtwb3MgLSAxXSkpCisgICAgICAgICAgICAgICAgcG9zID0gdWJy
a19wcmVjZWRpbmcoYm91bmRhcnksIHBvcyk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICBpZiAod2hpdGVzcGFjZU1vZGVJbklPUyA9PSBOZXh0V29yZE1vZGVJbklPUzo6
U3RvcEFmdGVyV29yZCAmJiBwb3MgJiYgaXNXb3JkRGVsaW1pdGluZ0NoYXJhY3Rlcih0ZXh0W3Bv
cyAtIDFdKSkgeworICAgICAgICAgICAgICAgIHBvcyA9IHVicmtfcHJlY2VkaW5nKGJvdW5kYXJ5
LCBwb3MpOworICAgICAgICAgICAgICAgIGlmIChwb3MgPT0gVUJSS19ET05FKQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgZG8gewog
ICAgICAgICAgICAgICAgIHBvcyA9IHVicmtfcHJlY2VkaW5nKGJvdW5kYXJ5LCBwb3MpOwogICAg
ICAgICAgICAgICAgIGlmIChwb3MgPT0gVUJSS19ET05FKQpJbmRleDogTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ5
NjA3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MjAgQEAKKzIwMTktMDktMDYgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgT3B0aW9uICsgYXJyb3cgbW92ZXMgY2FyZXQgcGFzdCB3aGl0ZXNwYWNlIG9uIGlPUwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNTc1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSBu
ZXcgdGVzdCBmb3IgbW92aW5nIGNhcmV0IGJ5IHdvcmQgZ3JhbnVsYXJpdHkgb24gaU9TLgorCisg
ICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vaW9zL21vdmUtYnktd29yZC13aXRoLWtleWJvYXJk
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vaW9zL21v
dmUtYnktd29yZC13aXRoLWtleWJvYXJkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcv
c2VsZWN0aW9uL2lvcy9zZWxlY3Qtbm9uLWVkaXRhYmxlLXRleHQtdXNpbmcta2V5Ym9hcmQtZXhw
ZWN0ZWQudHh0OiBSZWJhc2VsaW5lZC4KKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9pb3Mv
c2VsZWN0LW5vbi1lZGl0YWJsZS10ZXh0LXVzaW5nLWtleWJvYXJkLmh0bWw6IFVwZGF0ZWQgdGhl
IGV4cGVjdGVkCisgICAgICAgIHNlbGVjdGlvbiBzdHJpbmcgZHVlIHRvIHRoZSBiZWhhdmlvciBj
aGFuZ2UuIEFsc28gZml4ZWQgYSBidWcgdGhhdCBzb21lIHRlc3QgY2FzZXMgd2VyZQorICAgICAg
ICBub3Qgd2FpdGluZyBmb3IgYSBzZWNvbmRhcnkgc2VsZWN0aW9uY2hhbmdlIGV2ZW50IHRoYXQg
aGFwcGVucyBhZnRlciBhbiBleHRyYSBzZWxlY3Rpb24KKyAgICAgICAgdXBkYXRlIHdpdGggY2hh
cmFjdGVyIGdyYW51bGFyaXR5IGludHJvZHVjZWQgaW4gcjI0NzUyNC4KKwogMjAxOS0wOS0wNiAg
RGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogQ1NTIEZvcm1hdHRlcjogdGhlIGNsb3NpbmcgfSBvZiBuZXN0ZWQgQG1lZGlhIGFyZW4ndCBp
bmRlbnRlZApJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL21vdmUtYnkt
d29yZC13aXRoLWtleWJvYXJkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3MvbW92ZS1ieS13b3JkLXdpdGgta2V5Ym9hcmQtZXhwZWN0
ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lv
cy9tb3ZlLWJ5LXdvcmQtd2l0aC1rZXlib2FyZC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw0MjMgQEAKK1RoaXMgdGVzdHMgbW92aW5nIHRoZSBjYXJldCB3aXRoIHdvcmQg
Z3JhbnVsYXJpdHkgb24gaU9TLgorV2ViS2l0IHNob3VsZCBzdG9wIGF0IHRoZSBlbmQgb2YgZWFj
aCB3b3JkIGJlZm9yZSB3aGl0ZXNwYWNlIHdoZW4gbW92aW5nIGZvcndhcmRzLCBhbmQgYWZ0ZXIg
d2hpdGVzcGFjZSB3aGVuIG1vdmluZyBiYWNrd2FyZHMsCitUaGUgZW1wdHkgbGluZSBzaG91bGQg
YmUgc2tpcHBlZCBpbiBlaXRoZXIgZGlyZWN0aW9uLgorCitCZWZvcmUgbW92aW5nIGZvcndhcmRz
OgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICI8I3NlbGVjdGlvbi1jYXJldD5oZWxsbyB3b3Js
ZCIKK3wgIgorICAgICIKK3wgPGJyPgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJyZWQsIGdy
ZWVuLCAmIGJsdWUuIgorfCAiCisiCisKK0FmdGVyIG1vdmluZyB0byB0aGUgcmlnaHQgYnkgd29y
ZCAoMSk6Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgImhlbGxvPCNzZWxlY3Rpb24tY2FyZXQ+
IHdvcmxkIgorfCAiCisgICAgIgorfCA8YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgInJl
ZCwgZ3JlZW4sICYgYmx1ZS4iCit8ICIKKyIKKworQWZ0ZXIgbW92aW5nIHRvIHRoZSByaWdodCBi
eSB3b3JkICgyKToKK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAiaGVsbG8gd29ybGQ8I3NlbGVj
dGlvbi1jYXJldD4iCit8ICIKKyAgICAiCit8IDxicj4KK3wgIgorICAgICIKK3wgPGRpdj4KK3wg
ICAicmVkLCBncmVlbiwgJiBibHVlLiIKK3wgIgorIgorCitBZnRlciBtb3ZpbmcgdG8gdGhlIHJp
Z2h0IGJ5IHdvcmQgKDMpOgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJoZWxsbyB3b3JsZCIK
K3wgIgorICAgICIKK3wgPGJyPgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJyZWQsPCNzZWxl
Y3Rpb24tY2FyZXQ+IGdyZWVuLCAmIGJsdWUuIgorfCAiCisiCisKK0FmdGVyIG1vdmluZyB0byB0
aGUgcmlnaHQgYnkgd29yZCAoNCk6Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgImhlbGxvIHdv
cmxkIgorfCAiCisgICAgIgorfCA8YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgInJlZCwg
Z3JlZW4sPCNzZWxlY3Rpb24tY2FyZXQ+ICYgYmx1ZS4iCit8ICIKKyIKKworQWZ0ZXIgbW92aW5n
IHRvIHRoZSByaWdodCBieSB3b3JkICg1KToKK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAiaGVs
bG8gd29ybGQiCit8ICIKKyAgICAiCit8IDxicj4KK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAi
cmVkLCBncmVlbiwgJjwjc2VsZWN0aW9uLWNhcmV0PiBibHVlLiIKK3wgIgorIgorCitBZnRlciBt
b3ZpbmcgdG8gdGhlIHJpZ2h0IGJ5IHdvcmQgKDYpOgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAg
ICJoZWxsbyB3b3JsZCIKK3wgIgorICAgICIKK3wgPGJyPgorfCAiCisgICAgIgorfCA8ZGl2Pgor
fCAgICJyZWQsIGdyZWVuLCAmIGJsdWUuPCNzZWxlY3Rpb24tY2FyZXQ+IgorfCAiCisiCisKK0Jl
Zm9yZSBtb3ZpbmcgYmFja3dhcmRzOgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJoZWxsbyB3
b3JsZCIKK3wgIgorICAgICIKK3wgPGJyPgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJyZWQs
IGdyZWVuLCAmIGJsdWUuPCNzZWxlY3Rpb24tY2FyZXQ+IgorfCAiCisiCisKK0FmdGVyIG1vdmlu
ZyB0byB0aGUgbGVmdCBieSB3b3JkICgxKToKK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAiaGVs
bG8gd29ybGQiCit8ICIKKyAgICAiCit8IDxicj4KK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAi
cmVkLCBncmVlbiwgJiA8I3NlbGVjdGlvbi1jYXJldD5ibHVlLiIKK3wgIgorIgorCitBZnRlciBt
b3ZpbmcgdG8gdGhlIGxlZnQgYnkgd29yZCAoMik6Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAg
ImhlbGxvIHdvcmxkIgorfCAiCisgICAgIgorfCA8YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8
ICAgInJlZCwgZ3JlZW4sIDwjc2VsZWN0aW9uLWNhcmV0PiYgYmx1ZS4iCit8ICIKKyIKKworQWZ0
ZXIgbW92aW5nIHRvIHRoZSBsZWZ0IGJ5IHdvcmQgKDMpOgorfCAiCisgICAgIgorfCA8ZGl2Pgor
fCAgICJoZWxsbyB3b3JsZCIKK3wgIgorICAgICIKK3wgPGJyPgorfCAiCisgICAgIgorfCA8ZGl2
PgorfCAgICJyZWQsIDwjc2VsZWN0aW9uLWNhcmV0PmdyZWVuLCAmIGJsdWUuIgorfCAiCisiCisK
K0FmdGVyIG1vdmluZyB0byB0aGUgbGVmdCBieSB3b3JkICg0KToKK3wgIgorICAgICIKK3wgPGRp
dj4KK3wgICAiaGVsbG8gd29ybGQiCit8ICIKKyAgICAiCit8IDxicj4KK3wgIgorICAgICIKK3wg
PGRpdj4KK3wgICAiPCNzZWxlY3Rpb24tY2FyZXQ+cmVkLCBncmVlbiwgJiBibHVlLiIKK3wgIgor
IgorCitBZnRlciBtb3ZpbmcgdG8gdGhlIGxlZnQgYnkgd29yZCAoNSk6Cit8ICIKKyAgICAiCit8
IDxkaXY+Cit8ICAgImhlbGxvIDwjc2VsZWN0aW9uLWNhcmV0PndvcmxkIgorfCAiCisgICAgIgor
fCA8YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgInJlZCwgZ3JlZW4sICYgYmx1ZS4iCit8
ICIKKyIKKworQWZ0ZXIgbW92aW5nIHRvIHRoZSBsZWZ0IGJ5IHdvcmQgKDYpOgorfCAiCisgICAg
IgorfCA8ZGl2PgorfCAgICI8I3NlbGVjdGlvbi1jYXJldD5oZWxsbyB3b3JsZCIKK3wgIgorICAg
ICIKK3wgPGJyPgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJyZWQsIGdyZWVuLCAmIGJsdWUu
IgorfCAiCisiCisKK0JlZm9yZSBleHRlbmRpbmcgZm9yd2FyZHM6Cit8ICIKKyAgICAiCit8IDxk
aXY+Cit8ICAgIjwjc2VsZWN0aW9uLWNhcmV0PmhlbGxvIHdvcmxkIgorfCAiCisgICAgIgorfCA8
YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgInJlZCwgZ3JlZW4sICYgYmx1ZS4iCit8ICIK
KyIKKworQWZ0ZXIgZXh0ZW5kaW5nIHRvIHRoZSByaWdodCBieSB3b3JkICgxKToKK3wgIgorICAg
ICIKK3wgPGRpdj4KK3wgICAiPCNzZWxlY3Rpb24tYW5jaG9yPmhlbGxvPCNzZWxlY3Rpb24tZm9j
dXM+IHdvcmxkIgorfCAiCisgICAgIgorfCA8YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAg
InJlZCwgZ3JlZW4sICYgYmx1ZS4iCit8ICIKKyIKKworQWZ0ZXIgZXh0ZW5kaW5nIHRvIHRoZSBy
aWdodCBieSB3b3JkICgyKToKK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAiPCNzZWxlY3Rpb24t
YW5jaG9yPmhlbGxvIHdvcmxkPCNzZWxlY3Rpb24tZm9jdXM+IgorfCAiCisgICAgIgorfCA8YnI+
Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgInJlZCwgZ3JlZW4sICYgYmx1ZS4iCit8ICIKKyIK
KworQWZ0ZXIgZXh0ZW5kaW5nIHRvIHRoZSByaWdodCBieSB3b3JkICgzKToKK3wgIgorICAgICIK
K3wgPGRpdj4KK3wgICAiPCNzZWxlY3Rpb24tYW5jaG9yPmhlbGxvIHdvcmxkIgorfCAiCisgICAg
IgorfCA8YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgInJlZCw8I3NlbGVjdGlvbi1mb2N1
cz4gZ3JlZW4sICYgYmx1ZS4iCit8ICIKKyIKKworQWZ0ZXIgZXh0ZW5kaW5nIHRvIHRoZSByaWdo
dCBieSB3b3JkICg0KToKK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAiPCNzZWxlY3Rpb24tYW5j
aG9yPmhlbGxvIHdvcmxkIgorfCAiCisgICAgIgorfCA8YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+
Cit8ICAgInJlZCwgZ3JlZW4sPCNzZWxlY3Rpb24tZm9jdXM+ICYgYmx1ZS4iCit8ICIKKyIKKwor
QWZ0ZXIgZXh0ZW5kaW5nIHRvIHRoZSByaWdodCBieSB3b3JkICg1KToKK3wgIgorICAgICIKK3wg
PGRpdj4KK3wgICAiPCNzZWxlY3Rpb24tYW5jaG9yPmhlbGxvIHdvcmxkIgorfCAiCisgICAgIgor
fCA8YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgInJlZCwgZ3JlZW4sICY8I3NlbGVjdGlv
bi1mb2N1cz4gYmx1ZS4iCit8ICIKKyIKKworQWZ0ZXIgZXh0ZW5kaW5nIHRvIHRoZSByaWdodCBi
eSB3b3JkICg2KToKK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAiPCNzZWxlY3Rpb24tYW5jaG9y
PmhlbGxvIHdvcmxkIgorfCAiCisgICAgIgorfCA8YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8
ICAgInJlZCwgZ3JlZW4sICYgYmx1ZS48I3NlbGVjdGlvbi1mb2N1cz4iCit8ICIKKyIKKworQmVm
b3JlIGV4dGVuZGluZyBiYWNrd2FyZHM6Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgImhlbGxv
IHdvcmxkIgorfCAiCisgICAgIgorfCA8YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgInJl
ZCwgZ3JlZW4sICYgYmx1ZS48I3NlbGVjdGlvbi1jYXJldD4iCit8ICIKKyIKKworQWZ0ZXIgZXh0
ZW5kaW5nIHRvIHRoZSBsZWZ0IGJ5IHdvcmQgKDEpOgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAg
ICJoZWxsbyB3b3JsZCIKK3wgIgorICAgICIKK3wgPGJyPgorfCAiCisgICAgIgorfCA8ZGl2Pgor
fCAgICJyZWQsIGdyZWVuLCAmIDwjc2VsZWN0aW9uLWZvY3VzPmJsdWUuPCNzZWxlY3Rpb24tYW5j
aG9yPiIKK3wgIgorIgorCitBZnRlciBleHRlbmRpbmcgdG8gdGhlIGxlZnQgYnkgd29yZCAoMik6
Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgImhlbGxvIHdvcmxkIgorfCAiCisgICAgIgorfCA8
YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgInJlZCwgZ3JlZW4sIDwjc2VsZWN0aW9uLWZv
Y3VzPiYgYmx1ZS48I3NlbGVjdGlvbi1hbmNob3I+IgorfCAiCisiCisKK0FmdGVyIGV4dGVuZGlu
ZyB0byB0aGUgbGVmdCBieSB3b3JkICgzKToKK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAiaGVs
bG8gd29ybGQiCit8ICIKKyAgICAiCit8IDxicj4KK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAi
cmVkLCA8I3NlbGVjdGlvbi1mb2N1cz5ncmVlbiwgJiBibHVlLjwjc2VsZWN0aW9uLWFuY2hvcj4i
Cit8ICIKKyIKKworQWZ0ZXIgZXh0ZW5kaW5nIHRvIHRoZSBsZWZ0IGJ5IHdvcmQgKDQpOgorfCAi
CisgICAgIgorfCA8ZGl2PgorfCAgICJoZWxsbyB3b3JsZCIKK3wgIgorICAgICIKK3wgPGJyPgor
fCAiCisgICAgIgorfCA8ZGl2PgorfCAgICI8I3NlbGVjdGlvbi1mb2N1cz5yZWQsIGdyZWVuLCAm
IGJsdWUuPCNzZWxlY3Rpb24tYW5jaG9yPiIKK3wgIgorIgorCitBZnRlciBleHRlbmRpbmcgdG8g
dGhlIGxlZnQgYnkgd29yZCAoNSk6Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgImhlbGxvIDwj
c2VsZWN0aW9uLWZvY3VzPndvcmxkIgorfCAiCisgICAgIgorfCA8YnI+Cit8ICIKKyAgICAiCit8
IDxkaXY+Cit8ICAgInJlZCwgZ3JlZW4sICYgYmx1ZS48I3NlbGVjdGlvbi1hbmNob3I+IgorfCAi
CisiCisKK0FmdGVyIGV4dGVuZGluZyB0byB0aGUgbGVmdCBieSB3b3JkICg2KToKK3wgIgorICAg
ICIKK3wgPGRpdj4KK3wgICAiPCNzZWxlY3Rpb24tZm9jdXM+aGVsbG8gd29ybGQiCit8ICIKKyAg
ICAiCit8IDxicj4KK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAicmVkLCBncmVlbiwgJiBibHVl
Ljwjc2VsZWN0aW9uLWFuY2hvcj4iCit8ICIKKyIKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcv
c2VsZWN0aW9uL2lvcy9tb3ZlLWJ5LXdvcmQtd2l0aC1rZXlib2FyZC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9tb3ZlLWJ5LXdvcmQtd2l0aC1r
ZXlib2FyZC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0
aW9uL2lvcy9tb3ZlLWJ5LXdvcmQtd2l0aC1rZXlib2FyZC5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNzkgQEAKKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBb
IHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIG5h
bWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9
MSwgbWF4aW11bS1zY2FsZT0xLCBzaHJpbmstdG8tZml0PW5vIj4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvZHVtcC1hcy1tYXJrdXAuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKwor
TWFya3VwLmRlc2NyaXB0aW9uKGBUaGlzIHRlc3RzIG1vdmluZyB0aGUgY2FyZXQgd2l0aCB3b3Jk
IGdyYW51bGFyaXR5IG9uIGlPUy4KK1dlYktpdCBzaG91bGQgc3RvcCBhdCB0aGUgZW5kIG9mIGVh
Y2ggd29yZCBiZWZvcmUgd2hpdGVzcGFjZSB3aGVuIG1vdmluZyBmb3J3YXJkcywgYW5kIGFmdGVy
IHdoaXRlc3BhY2Ugd2hlbiBtb3ZpbmcgYmFja3dhcmRzLAorVGhlIGVtcHR5IGxpbmUgc2hvdWxk
IGJlIHNraXBwZWQgaW4gZWl0aGVyIGRpcmVjdGlvbi5gKTsKK01hcmt1cC5ub0F1dG9EdW1wKCk7
CitNYXJrdXAud2FpdFVudGlsRG9uZSgpOworCithc3luYyBmdW5jdGlvbiBydW5UZXN0KCkKK3sK
KyAgICBjb25zdCBlZGl0b3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yJyk7CisK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIGF3YWl0IFVJSGVscGVyLmFjdGl2
YXRlRWxlbWVudEFuZFdhaXRGb3JJbnB1dFNlc3Npb24oZWRpdG9yKTsKKworICAgIGlmICghd2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgTWFya3VwLmR1bXAoZWRpdG9yLCAnTWFya3VwJyk7
CisgICAgICAgIE1hcmt1cC5ub3RpZnlEb25lKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBnZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbihlZGl0b3IsIDApOworICAgIE1hcmt1cC5k
dW1wKGVkaXRvciwgJ0JlZm9yZSBtb3ZpbmcgZm9yd2FyZHMnKTsKKworICAgIGNvbnN0IG1vdmVD
b3VudCA9IDY7CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1vdmVDb3VudDsgaSsrKSB7Cisg
ICAgICAgIGF3YWl0IFVJSGVscGVyLmtleURvd24oJ3JpZ2h0QXJyb3cnLCBbJ2FsdEtleSddKTsK
KyAgICAgICAgYXdhaXQgVUlIZWxwZXIuZW5zdXJlUHJlc2VudGF0aW9uVXBkYXRlKCk7CisgICAg
ICAgIE1hcmt1cC5kdW1wKGVkaXRvciwgYEFmdGVyIG1vdmluZyB0byB0aGUgcmlnaHQgYnkgd29y
ZCAoJHtpICsgMX0pYCk7CisgICAgfQorCisgICAgZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24o
ZWRpdG9yLCBlZGl0b3IuY2hpbGROb2Rlcy5sZW5ndGgpOworICAgIE1hcmt1cC5kdW1wKGVkaXRv
ciwgJ0JlZm9yZSBtb3ZpbmcgYmFja3dhcmRzJyk7CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8
IG1vdmVDb3VudDsgaSsrKSB7CisgICAgICAgIGF3YWl0IFVJSGVscGVyLmtleURvd24oJ2xlZnRB
cnJvdycsIFsnYWx0S2V5J10pOworICAgICAgICBhd2FpdCBVSUhlbHBlci5lbnN1cmVQcmVzZW50
YXRpb25VcGRhdGUoKTsKKyAgICAgICAgTWFya3VwLmR1bXAoZWRpdG9yLCBgQWZ0ZXIgbW92aW5n
IHRvIHRoZSBsZWZ0IGJ5IHdvcmQgKCR7aSArIDF9KWApOworICAgIH0KKworICAgIGdldFNlbGVj
dGlvbigpLnNldFBvc2l0aW9uKGVkaXRvciwgMCk7CisgICAgTWFya3VwLmR1bXAoZWRpdG9yLCAn
QmVmb3JlIGV4dGVuZGluZyBmb3J3YXJkcycpOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBt
b3ZlQ291bnQ7IGkrKykgeworICAgICAgICBhd2FpdCBVSUhlbHBlci5rZXlEb3duKCdyaWdodEFy
cm93JywgWydzaGlmdEtleScsICdhbHRLZXknXSk7CisgICAgICAgIGF3YWl0IFVJSGVscGVyLmVu
c3VyZVByZXNlbnRhdGlvblVwZGF0ZSgpOworICAgICAgICBNYXJrdXAuZHVtcChlZGl0b3IsIGBB
ZnRlciBleHRlbmRpbmcgdG8gdGhlIHJpZ2h0IGJ5IHdvcmQgKCR7aSArIDF9KWApOworICAgIH0K
KworICAgIGdldFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKGVkaXRvciwgZWRpdG9yLmNoaWxkTm9k
ZXMubGVuZ3RoKTsKKyAgICBNYXJrdXAuZHVtcChlZGl0b3IsICdCZWZvcmUgZXh0ZW5kaW5nIGJh
Y2t3YXJkcycpOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtb3ZlQ291bnQ7IGkrKykgewor
ICAgICAgICBhd2FpdCBVSUhlbHBlci5rZXlEb3duKCdsZWZ0QXJyb3cnLCBbJ3NoaWZ0S2V5Jywg
J2FsdEtleSddKTsKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIuZW5zdXJlUHJlc2VudGF0aW9uVXBk
YXRlKCk7CisgICAgICAgIE1hcmt1cC5kdW1wKGVkaXRvciwgYEFmdGVyIGV4dGVuZGluZyB0byB0
aGUgbGVmdCBieSB3b3JkICgke2kgKyAxfSlgKTsKKyAgICB9CisKKyAgICBNYXJrdXAubm90aWZ5
RG9uZSgpOworfQorCitvbmxvYWQgPSBydW5UZXN0OworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxkaXYgaWQ9ImVkaXRvciIgY29udGVudGVkaXRhYmxlPgorICAgIDxkaXY+aGVsbG8gd29y
bGQ8L2Rpdj4KKyAgICA8YnI+CisgICAgPGRpdj5yZWQsIGdyZWVuLCAmIGJsdWUuPC9kaXY+Cis8
L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0
aW9uL2lvcy9zZWxlY3Qtbm9uLWVkaXRhYmxlLXRleHQtdXNpbmcta2V5Ym9hcmQtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9zZWxl
Y3Qtbm9uLWVkaXRhYmxlLXRleHQtdXNpbmcta2V5Ym9hcmQtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAyNDk2MDcpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3Mvc2VsZWN0LW5v
bi1lZGl0YWJsZS10ZXh0LXVzaW5nLWtleWJvYXJkLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMTEsNyArMTEsNyBAQCBQcmVzcyBTaGlmdCArIGxlZnQgYXJyb3cgdG8gc2VsZWN0IHRo
ZSBwCiBQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJIZXIiCiAKIFBy
ZXNzIFNoaWZ0ICsgT3B0aW9uICsgcmlnaHQgYXJyb3cgdG8gc2VsZWN0IHRvIHRoZSBlbmQgb2Yg
dGhlIHdvcmQ6Ci1QQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJIZXJl
J3MgIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiSGVyZSdzIgog
CiBQcmVzcyBTaGlmdCArIE9wdGlvbiArIGxlZnQgYXJyb3cgdG8gc2VsZWN0IHRvIHRoZSBiZWdp
bm5pbmcgb2YgdGhlIHdvcmQ6CiBQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygp
IGlzICJUaGUiCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3Mvc2VsZWN0
LW5vbi1lZGl0YWJsZS10ZXh0LXVzaW5nLWtleWJvYXJkLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL3NlbGVjdC1ub24tZWRpdGFibGUtdGV4dC11
c2luZy1rZXlib2FyZC5odG1sCShyZXZpc2lvbiAyNDk2MDcpCisrKyBMYXlvdXRUZXN0cy9lZGl0
aW5nL3NlbGVjdGlvbi9pb3Mvc2VsZWN0LW5vbi1lZGl0YWJsZS10ZXh0LXVzaW5nLWtleWJvYXJk
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgYXN5bmMgZnVuY3Rpb24gdGVz
dEV4dGVuZFNlbGVjdGlvblRvRW5kTwogCiAgICAgZGVidWcoIjxicj5QcmVzcyBTaGlmdCArIE9w
dGlvbiArIHJpZ2h0IGFycm93IHRvIHNlbGVjdCB0byB0aGUgZW5kIG9mIHRoZSB3b3JkOiIpOwog
ICAgIGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiB3aW5k
b3cudGVzdFJ1bm5lciAmJiBVSUhlbHBlci5rZXlEb3duKCJyaWdodEFycm93IiwgWyJzaGlmdEtl
eSIsICJhbHRLZXkiXSkgLCBkb2N1bWVudCwgInNlbGVjdGlvbmNoYW5nZSIpOwotICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiSGVy
ZSdzICIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigp
LnRvU3RyaW5nKCkiLCAiSGVyZSdzIik7CiB9CiAKIGFzeW5jIGZ1bmN0aW9uIHRlc3RFeHRlbmRT
ZWxlY3Rpb25Ub0JlZ2lubmluZ09mV29yZCgpCkBAIC03OSw2ICs3OSwxMyBAQCBhc3luYyBmdW5j
dGlvbiB0ZXN0RXh0ZW5kU2VsZWN0aW9uVG9CZWdpCiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJUaGUgbWlzZml0cy4iKTsKIH0K
IAorYXN5bmMgZnVuY3Rpb24gd2FpdEZvclNlY29uZGFyeVByZXNlbnRhdGlvblVwZGF0ZUlmTmVl
ZGVkKCkKK3sKKyAgICAvLyBUaGVyZSBtaWdodCBiZSBhIHNlY29uZGFyeSBzZWxlY3Rpb25jaGFu
Z2UgZXZlbnQgYWZ0ZXIgbW92aW5nIGJ5IHBhcmFncmFwaCBib3VuZGFyeS4gU2VlIHdlYmtpdC5v
cmcvYi8xOTk4NTEKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIGF3YWl0IFVJ
SGVscGVyLmVuc3VyZVByZXNlbnRhdGlvblVwZGF0ZSgpOworfQorCiBhc3luYyBmdW5jdGlvbiB0
ZXN0RXh0ZW5kU2VsZWN0aW9uVXAoKQogewogICAgIGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlv
bkFuZFdhaXRGb3JFdmVudCgoKSA9PiBzZWxlY3Rpb24uc2V0QmFzZUFuZEV4dGVudChwYXJhZ3Jh
cGhzWzFdLmZpcnN0Q2hpbGQsIDEsIHBhcmFncmFwaHNbMV0uZmlyc3RDaGlsZCwgMCksIGRvY3Vt
ZW50LCAic2VsZWN0aW9uY2hhbmdlIik7CkBAIC04Niw2ICs5Myw3IEBAIGFzeW5jIGZ1bmN0aW9u
IHRlc3RFeHRlbmRTZWxlY3Rpb25VcCgpCiAgICAgZGVidWcoIjxicj5QcmVzcyBTaGlmdCArIHVw
IGFycm93IHRvIHNlbGVjdCB1cDoiKTsKICAgICBhd2FpdCBVSUhlbHBlci5jYWxsRnVuY3Rpb25B
bmRXYWl0Rm9yRXZlbnQoKCkgPT4gd2luZG93LnRlc3RSdW5uZXIgJiYgVUlIZWxwZXIua2V5RG93
bigidXBBcnJvdyIsIFsic2hpZnRLZXkiXSkgLCBkb2N1bWVudCwgInNlbGVjdGlvbmNoYW5nZSIp
OwogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3Ry
aW5nKCkiLCAiSGVyZSdzIHRvIHRoZSBjcmF6eSBvbmVzLlxuXG5UIik7CisgICAgYXdhaXQgd2Fp
dEZvclNlY29uZGFyeVByZXNlbnRhdGlvblVwZGF0ZUlmTmVlZGVkKCk7CiB9CiAKIGFzeW5jIGZ1
bmN0aW9uIHRlc3RFeHRlbmRTZWxlY3Rpb25Eb3duKCkKQEAgLTk1LDYgKzEwMyw3IEBAIGFzeW5j
IGZ1bmN0aW9uIHRlc3RFeHRlbmRTZWxlY3Rpb25Eb3duKCkKICAgICBkZWJ1ZygiPGJyPlByZXNz
IFNoaWZ0ICsgZG93biBhcnJvdyB0byBzZWxlY3QgZG93bjoiKTsKICAgICBhd2FpdCBVSUhlbHBl
ci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gd2luZG93LnRlc3RSdW5uZXIgJiYg
VUlIZWxwZXIua2V5RG93bigiZG93bkFycm93IiwgWyJzaGlmdEtleSJdKSAsIGRvY3VtZW50LCAi
c2VsZWN0aW9uY2hhbmdlIik7CiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJUaGUgbWlzZml0cy5cblxuVCIpOworICAgIGF3YWl0
IHdhaXRGb3JTZWNvbmRhcnlQcmVzZW50YXRpb25VcGRhdGVJZk5lZWRlZCgpOwogfQogCiBhc3lu
YyBmdW5jdGlvbiB0ZXN0RXh0ZW5kU2VsZWN0aW9uVG9FbmRPZlBhcmFncmFwaCgpCkBAIC0xMDcs
NiArMTE2LDggQEAgYXN5bmMgZnVuY3Rpb24gdGVzdEV4dGVuZFNlbGVjdGlvblRvRW5kTwogICAg
IGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiB3aW5kb3cu
dGVzdFJ1bm5lciAmJiBVSUhlbHBlci5rZXlEb3duKCJkb3duQXJyb3ciLCBbInNoaWZ0S2V5Iiwg
ImFsdEtleSJdKSAsIGRvY3VtZW50LCAic2VsZWN0aW9uY2hhbmdlIik7CiAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJIZXJlJ3Mg
dG8gdGhlIGNyYXp5IG9uZXMuIik7CiAKKyAgICBhd2FpdCB3YWl0Rm9yU2Vjb25kYXJ5UHJlc2Vu
dGF0aW9uVXBkYXRlSWZOZWVkZWQoKTsKKwogICAgIHRvZ2dsZU9ubHlTaG93VGVzdENvbnRhaW5l
cigpOwogfQogCkBAIC0xMTgsOCArMTI5LDExIEBAIGFzeW5jIGZ1bmN0aW9uIHRlc3RFeHRlbmRT
ZWxlY3Rpb25Ub0JlZ2kKIAogICAgIGRlYnVnKCI8YnI+UHJlc3MgU2hpZnQgKyBPcHRpb24gKyB1
cCBhcnJvdyB0byBzZWxlY3QgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgcGFyYWdyYXBoOiIpOwog
ICAgIGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiB3aW5k
b3cudGVzdFJ1bm5lciAmJiBVSUhlbHBlci5rZXlEb3duKCJ1cEFycm93IiwgWyJzaGlmdEtleSIs
ICJhbHRLZXkiXSkgLCBkb2N1bWVudCwgInNlbGVjdGlvbmNoYW5nZSIpOworCiAgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJUaGUg
cmViZWxzLiIpOwogCisgICAgYXdhaXQgd2FpdEZvclNlY29uZGFyeVByZXNlbnRhdGlvblVwZGF0
ZUlmTmVlZGVkKCk7CisKICAgICB0b2dnbGVPbmx5U2hvd1Rlc3RDb250YWluZXIoKTsKIH0KIApA
QCAtMTMzLDYgKzE0Nyw4IEBAIGFzeW5jIGZ1bmN0aW9uIHRlc3RFeHRlbmRTZWxlY3Rpb25Ub0Vu
ZE8KICAgICBhd2FpdCBVSUhlbHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4g
d2luZG93LnRlc3RSdW5uZXIgJiYgVUlIZWxwZXIua2V5RG93bigiZG93bkFycm93IiwgWyJzaGlm
dEtleSIsICJjdHJsS2V5Il0pICwgZG9jdW1lbnQsICJzZWxlY3Rpb25jaGFuZ2UiKTsKICAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwg
IkhlcmUncyB0byB0aGUgY3Jhenkgb25lcy5cblxuVGhlIG1pc2ZpdHMuXG5cblRoZSByZWJlbHMu
Iik7CiAKKyAgICBhd2FpdCB3YWl0Rm9yU2Vjb25kYXJ5UHJlc2VudGF0aW9uVXBkYXRlSWZOZWVk
ZWQoKTsKKwogICAgIHRvZ2dsZU9ubHlTaG93VGVzdENvbnRhaW5lcigpOwogfQogCkBAIC0xNDYs
NiArMTYyLDggQEAgYXN5bmMgZnVuY3Rpb24gdGVzdEV4dGVuZFNlbGVjdGlvblRvQmVnaQogICAg
IGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiB3aW5kb3cu
dGVzdFJ1bm5lciAmJiBVSUhlbHBlci5rZXlEb3duKCJ1cEFycm93IiwgWyJzaGlmdEtleSIsICJj
dHJsS2V5Il0pICwgZG9jdW1lbnQsICJzZWxlY3Rpb25jaGFuZ2UiKTsKICAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIkhlcmUncyB0
byB0aGUgY3Jhenkgb25lcy5cblxuVGhlIG1pc2ZpdHMuIik7CiAKKyAgICBhd2FpdCB3YWl0Rm9y
U2Vjb25kYXJ5UHJlc2VudGF0aW9uVXBkYXRlSWZOZWVkZWQoKTsKKwogICAgIHRvZ2dsZU9ubHlT
aG93VGVzdENvbnRhaW5lcigpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378284</attachid>
            <date>2019-09-06 23:28:58 -0700</date>
            <delta_ts>2019-09-09 13:01:03 -0700</delta_ts>
            <desc>Yet another GTK build fix attempt</desc>
            <filename>bug-201575-20190906232857.patch</filename>
            <type>text/plain</type>
            <size>48583</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0OTYwNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE5LTA5LTA2ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIE9wdGlvbiArIGFycm93IG1vdmVz
IGNhcmV0IHBhc3Qgd2hpdGVzcGFjZSBvbiBpT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTU3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoZSBidWcgd2FzIGNhdXNlZCBieSBmaW5kTmV4dFdvcmRG
cm9tSW5kZXggb24gaU9TIGJlaGF2aW5nIGRpZmZlcmVudGx5IGZyb20gbWFjT1MgYW5kIFVJS2l0
CisgICAgICAgIGJ5IHNraXBwaW5nIHRyYWlsaW5nIHdoaXRlc3BhY2UgYWZ0ZXIgYSB3b3JkIHdo
ZW4gbW92aW5nIGZvcndhcmQgYW5kIG5vdCBza2lwcGluZyBsZWFkaW5nCisgICAgICAgIHdoaXRl
c3BhY2Ugd2hlbiBtb3ZpbmcgYmFja3dhcmQuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1
Y2VzIGEgbmV3IG1vZGUgKFN0b3BBZnRlcldvcmQpIG9mIGZpbmROZXh0V29yZEZyb21JbmRleCBp
biBpT1MgdGhhdAorICAgICAgICBiZXR0ZXIgbWF0Y2hlcyB0aGUgYmVoYXZpb3Igb2YgZmluZE5l
eHRXb3JkRnJvbUluZGV4IG9uIG1hY09TIGFuZCBVSUtpdCwgYW5kIHVzZSBpdCBpbgorICAgICAg
ICB2YXJpb3VzIG1vZGlmeSogZnVuY3Rpb25zIG9mIEZyYW1lU2VsZWN0aW9uIHdoZW4gdGhlIHNl
bGVjdGlvbiB1cGRhdGUgaXMgdHJpZ2dlcmVkIGJ5IHVzZXIuCisKKyAgICAgICAgQWxsIG90aGVy
IGNhbGwgc2l0ZXMgYXMgd2VsbCBhcyB3aGVuIG1vZGlmeSogZnVuY3Rpb25zIGFyZSBpbnZvbGVk
IGZyb20gc2NyaXB0cywKKyAgICAgICAgd2UgdXNlIHRoZSBsZWdhY3kgbW9kZSAoTGVnYWN5U3Rv
cEJlZm9yZVdvcmQpIHRvIG1pbmltaXplIHRoZSBjb21wYXRpYmlsaXR5IHJpc2sgZm9yIG5vdy4K
KworICAgICAgICBUZXN0OiBlZGl0aW5nL3NlbGVjdGlvbi9pb3MvbW92ZS1ieS13b3JkLXdpdGgt
a2V5Ym9hcmQuaHRtbAorCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjp1cGRhdGVNYXJrZXJzRm9yV29yZHNBZmZlY3RlZEJ5RWRpdGluZyk6
CisgICAgICAgICogZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpuZXh0V29yZFdoaXRlc3BhY2VNb2RlSW5JT1MpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVT
ZWxlY3Rpb246Om5leHRXb3JkUG9zaXRpb25Gb3JQbGF0Zm9ybSk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5RXh0ZW5kaW5nUmlnaHQpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4dGVuZGluZ0ZvcndhcmQpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVTZWxlY3Rpb246Om1vZGlmeU1vdmluZ1JpZ2h0KToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lU2VsZWN0aW9uOjptb2RpZnlNb3ZpbmdGb3J3YXJkKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeHRlbmRpbmdMZWZ0KToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeHRlbmRpbmdCYWNrd2FyZCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW92aW5nTGVmdCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW92aW5nQmFja3dhcmQpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVTZWxlY3Rpb246Om1vZGlmeSk6CisgICAgICAgICogZWRpdGluZy9GcmFtZVNl
bGVjdGlvbi5oOgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNlYXJjaEJ1ZmZlcjo6aXNXb3JkU3RhcnRNYXRjaCBjb25zdCk6CisgICAgICAg
ICogZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJldmlvdXNX
b3JkUG9zaXRpb25Cb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjpwcmV2aW91c1dvcmRQb3Np
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpuZXh0V29yZFBvc2l0aW9uQm91bmRhcnkpOgorICAg
ICAgICAoV2ViQ29yZTo6bmV4dFdvcmRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpuZXh0
V29yZEJvdW5kYXJ5SW5EaXJlY3Rpb24pOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVVuaXRz
Lmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Qm91bmRhcmllcy5oOgorICAgICAgICAq
IHBsYXRmb3JtL3RleHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tOgorICAgICAgICAoV2ViQ29yZTo6
ZmluZE5leHRXb3JkRnJvbUluZGV4KTogQWRkZWQgYSBuZXcgbW9kZS4KKwogMjAxOS0wOS0wNiAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBJbmNvcnJl
Y3Qgc2VsZWN0aW9uIHJlY3QgcmV2ZWFsZWQgYWZ0ZXIgcGFzdGluZyBpbWFnZXMgaW4gYSBjb250
ZW50ZWRpdGFibGUgZWxlbWVudApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9h
dGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0
LmNwcAkocmV2aXNpb24gMjQ5NjA3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9h
dGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
MTUsMTcgKzUxNSwxNyBAQCBzdGF0aWMgY2hhciogd2Via2l0QWNjZXNzaWJsZVRleHRHZXRDaGFy
CiAKIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gbmV4dFdvcmRTdGFydFBvc2l0aW9uKGNvbnN0IFZp
c2libGVQb3NpdGlvbiAmcG9zaXRpb24pCiB7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9u
QWZ0ZXJDdXJyZW50V29yZCA9IG5leHRXb3JkUG9zaXRpb24ocG9zaXRpb24pOworICAgIFZpc2li
bGVQb3NpdGlvbiBwb3NpdGlvbkFmdGVyQ3VycmVudFdvcmQgPSBuZXh0V29yZFBvc2l0aW9uKHBv
c2l0aW9uLCBOZXh0V29yZE1vZGVJbklPUzo6TGVnYWN5U3RvcEJlZm9yZVdvcmQpOwogCiAgICAg
Ly8gSW4gb3JkZXIgdG8gc2tpcCBzcGFjZXMgd2hlbiBtb3ZpbmcgcmlnaHQsIHdlIGFkdmFuY2Ug
b25lIHdvcmQgZnVydGhlcgogICAgIC8vIGFuZCB0aGVuIG1vdmUgb25lIHdvcmQgYmFjay4gVGhp
cyB3aWxsIHB1dCB1cyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZQogICAgIC8vIHdvcmQgZm9sbG93
aW5nLgotICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkFmdGVyU3BhY2luZ0FuZEZvbGxvd2lu
Z1dvcmQgPSBuZXh0V29yZFBvc2l0aW9uKHBvc2l0aW9uQWZ0ZXJDdXJyZW50V29yZCk7CisgICAg
VmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uQWZ0ZXJTcGFjaW5nQW5kRm9sbG93aW5nV29yZCA9IG5l
eHRXb3JkUG9zaXRpb24ocG9zaXRpb25BZnRlckN1cnJlbnRXb3JkLCBOZXh0V29yZE1vZGVJbklP
Uzo6TGVnYWN5U3RvcEJlZm9yZVdvcmQpOwogCiAgICAgaWYgKHBvc2l0aW9uQWZ0ZXJTcGFjaW5n
QW5kRm9sbG93aW5nV29yZCAhPSBwb3NpdGlvbkFmdGVyQ3VycmVudFdvcmQpCi0gICAgICAgIHBv
c2l0aW9uQWZ0ZXJDdXJyZW50V29yZCA9IHByZXZpb3VzV29yZFBvc2l0aW9uKHBvc2l0aW9uQWZ0
ZXJTcGFjaW5nQW5kRm9sbG93aW5nV29yZCk7CisgICAgICAgIHBvc2l0aW9uQWZ0ZXJDdXJyZW50
V29yZCA9IHByZXZpb3VzV29yZFBvc2l0aW9uKHBvc2l0aW9uQWZ0ZXJTcGFjaW5nQW5kRm9sbG93
aW5nV29yZCwgTmV4dFdvcmRNb2RlSW5JT1M6OkxlZ2FjeVN0b3BCZWZvcmVXb3JkKTsKIAotICAg
IGJvb2wgbW92aW5nQmFja3dhcmRzTW92ZWRQb3NpdGlvblRvU3RhcnRPZkN1cnJlbnRXb3JkID0g
cG9zaXRpb25BZnRlckN1cnJlbnRXb3JkID09IHByZXZpb3VzV29yZFBvc2l0aW9uKG5leHRXb3Jk
UG9zaXRpb24ocG9zaXRpb24pKTsKKyAgICBib29sIG1vdmluZ0JhY2t3YXJkc01vdmVkUG9zaXRp
b25Ub1N0YXJ0T2ZDdXJyZW50V29yZCA9IHBvc2l0aW9uQWZ0ZXJDdXJyZW50V29yZCA9PSBwcmV2
aW91c1dvcmRQb3NpdGlvbihuZXh0V29yZFBvc2l0aW9uKHBvc2l0aW9uLCBOZXh0V29yZE1vZGVJ
bklPUzo6TGVnYWN5U3RvcEJlZm9yZVdvcmQpLCBOZXh0V29yZE1vZGVJbklPUzo6TGVnYWN5U3Rv
cEJlZm9yZVdvcmQpOwogICAgIGlmIChtb3ZpbmdCYWNrd2FyZHNNb3ZlZFBvc2l0aW9uVG9TdGFy
dE9mQ3VycmVudFdvcmQpCiAgICAgICAgIHBvc2l0aW9uQWZ0ZXJDdXJyZW50V29yZCA9IHBvc2l0
aW9uQWZ0ZXJTcGFjaW5nQW5kRm9sbG93aW5nV29yZDsKIApAQCAtNTM3LDIyICs1MzcsMjMgQEAg
c3RhdGljIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1dvcmRFbmRQbwogICAgIC8vIFdlIG1vdmUg
Zm9yd2FyZCBhbmQgdGhlbiBiYWNrd2FyZCB0byBwb3NpdGlvbiBvdXJzZWx2ZXMgYXQgdGhlIGJl
Z2lubmluZwogICAgIC8vIG9mIHRoZSBjdXJyZW50IHdvcmQgZm9yIHRoaXMgYm91bmRhcnksIG1h
a2luZyB0aGUgbW9zdCBvZiB0aGUgc2VtYW50aWNzCiAgICAgLy8gb2YgcHJldmlvdXNXb3JkUG9z
aXRpb24oKSBhbmQgbmV4dFdvcmRQb3NpdGlvbigpLgotICAgIFZpc2libGVQb3NpdGlvbiBwb3Np
dGlvbkF0U3RhcnRPZkN1cnJlbnRXb3JkID0gcHJldmlvdXNXb3JkUG9zaXRpb24obmV4dFdvcmRQ
b3NpdGlvbihwb3NpdGlvbikpOwotICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkF0UHJldmlv
dXNXb3JkID0gcHJldmlvdXNXb3JkUG9zaXRpb24ocG9zaXRpb24pOworICAgIFZpc2libGVQb3Np
dGlvbiBwb3NpdGlvbkF0U3RhcnRPZkN1cnJlbnRXb3JkID0gcHJldmlvdXNXb3JkUG9zaXRpb24o
bmV4dFdvcmRQb3NpdGlvbihwb3NpdGlvbiwgTmV4dFdvcmRNb2RlSW5JT1M6OkxlZ2FjeVN0b3BC
ZWZvcmVXb3JkKSwgTmV4dFdvcmRNb2RlSW5JT1M6OkxlZ2FjeVN0b3BCZWZvcmVXb3JkKTsKKyAg
ICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25BdFByZXZpb3VzV29yZCA9IHByZXZpb3VzV29yZFBv
c2l0aW9uKHBvc2l0aW9uLCBOZXh0V29yZE1vZGVJbklPUzo6TGVnYWN5U3RvcEJlZm9yZVdvcmQp
OwogCiAgICAgLy8gTmVlZCB0byBjb25zaWRlciBzcGVjaWFsIGNhc2VzIChwdW5jdHVhdGlvbikg
d2hlbiB3ZSBhcmUgaW4gdGhlIGxhc3Qgd29yZCBvZiBhIHNlbnRlbmNlLgogICAgIGlmIChpc1N0
YXJ0T2ZXb3JkKHBvc2l0aW9uKSAmJiBwb3NpdGlvbkF0UHJldmlvdXNXb3JkICE9IHBvc2l0aW9u
ICYmIHBvc2l0aW9uQXRQcmV2aW91c1dvcmQgPT0gcG9zaXRpb25BdFN0YXJ0T2ZDdXJyZW50V29y
ZCkKLSAgICAgICAgcmV0dXJuIG5leHRXb3JkUG9zaXRpb24ocG9zaXRpb25BdFN0YXJ0T2ZDdXJy
ZW50V29yZCk7CisgICAgICAgIHJldHVybiBuZXh0V29yZFBvc2l0aW9uKHBvc2l0aW9uQXRTdGFy
dE9mQ3VycmVudFdvcmQsIE5leHRXb3JkTW9kZUluSU9TOjpMZWdhY3lTdG9wQmVmb3JlV29yZCk7
CiAKICAgICAvLyBJbiBvcmRlciB0byBza2lwIHNwYWNlcyB3aGVuIG1vdmluZyBsZWZ0LCB3ZSBh
ZHZhbmNlIG9uZSB3b3JkIGJhY2t3YXJkcwogICAgIC8vIGFuZCB0aGVuIG1vdmUgb25lIHdvcmQg
Zm9yd2FyZC4gVGhpcyB3aWxsIHB1dCB1cyBhdCB0aGUgYmVnaW5uaW5nIG9mCiAgICAgLy8gdGhl
IHdvcmQgZm9sbG93aW5nLgotICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZVNwYWNp
bmdBbmRQcmVjZWVkaW5nV29yZCA9IHByZXZpb3VzV29yZFBvc2l0aW9uKHBvc2l0aW9uQXRTdGFy
dE9mQ3VycmVudFdvcmQpOworICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZVNwYWNp
bmdBbmRQcmVjZWVkaW5nV29yZCA9IHByZXZpb3VzV29yZFBvc2l0aW9uKHBvc2l0aW9uQXRTdGFy
dE9mQ3VycmVudFdvcmQsIE5leHRXb3JkTW9kZUluSU9TOjpMZWdhY3lTdG9wQmVmb3JlV29yZCk7
CiAKICAgICBpZiAocG9zaXRpb25CZWZvcmVTcGFjaW5nQW5kUHJlY2VlZGluZ1dvcmQgIT0gcG9z
aXRpb25BdFN0YXJ0T2ZDdXJyZW50V29yZCkKLSAgICAgICAgcG9zaXRpb25BdFN0YXJ0T2ZDdXJy
ZW50V29yZCA9IG5leHRXb3JkUG9zaXRpb24ocG9zaXRpb25CZWZvcmVTcGFjaW5nQW5kUHJlY2Vl
ZGluZ1dvcmQpOworICAgICAgICBwb3NpdGlvbkF0U3RhcnRPZkN1cnJlbnRXb3JkID0gbmV4dFdv
cmRQb3NpdGlvbihwb3NpdGlvbkJlZm9yZVNwYWNpbmdBbmRQcmVjZWVkaW5nV29yZCwgTmV4dFdv
cmRNb2RlSW5JT1M6OkxlZ2FjeVN0b3BCZWZvcmVXb3JkKTsKIAotICAgIGJvb2wgbW92aW5nRm9y
d2FyZE1vdmVkUG9zaXRpb25Ub0VuZE9mQ3VycmVudFdvcmQgPSBuZXh0V29yZFBvc2l0aW9uKHBv
c2l0aW9uQXRTdGFydE9mQ3VycmVudFdvcmQpID09IHByZXZpb3VzV29yZFBvc2l0aW9uKG5leHRX
b3JkUG9zaXRpb24ocG9zaXRpb24pKTsKKyAgICBib29sIG1vdmluZ0ZvcndhcmRNb3ZlZFBvc2l0
aW9uVG9FbmRPZkN1cnJlbnRXb3JkID0gbmV4dFdvcmRQb3NpdGlvbihwb3NpdGlvbkF0U3RhcnRP
ZkN1cnJlbnRXb3JkLCBOZXh0V29yZE1vZGVJbklPUzo6TGVnYWN5U3RvcEJlZm9yZVdvcmQpCisg
ICAgICAgID09IHByZXZpb3VzV29yZFBvc2l0aW9uKG5leHRXb3JkUG9zaXRpb24ocG9zaXRpb24s
IE5leHRXb3JkTW9kZUluSU9TOjpMZWdhY3lTdG9wQmVmb3JlV29yZCksIE5leHRXb3JkTW9kZUlu
SU9TOjpMZWdhY3lTdG9wQmVmb3JlV29yZCk7CiAgICAgaWYgKG1vdmluZ0ZvcndhcmRNb3ZlZFBv
c2l0aW9uVG9FbmRPZkN1cnJlbnRXb3JkKQogICAgICAgICBwb3NpdGlvbkF0U3RhcnRPZkN1cnJl
bnRXb3JkID0gcG9zaXRpb25CZWZvcmVTcGFjaW5nQW5kUHJlY2VlZGluZ1dvcmQ7CiAKQEAgLTU3
Myw3ICs1NzQsNyBAQCBzdGF0aWMgVmlzaWJsZVNlbGVjdGlvbiB3b3JkQXRQb3NpdGlvbkZvCiAg
ICAgICAgIGlmIChpc1N0YXJ0T2ZXb3JkKHBvc2l0aW9uKSAmJiBkZXByZWNhdGVkSXNFZGl0aW5n
V2hpdGVzcGFjZShwb3NpdGlvbi5jaGFyYWN0ZXJCZWZvcmUoKSkpCiAgICAgICAgICAgICBzdGFy
dFBvc2l0aW9uID0gcG9zaXRpb247CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHN0YXJ0UG9z
aXRpb24gPSBwcmV2aW91c1dvcmRQb3NpdGlvbihwb3NpdGlvbik7CisgICAgICAgICAgICBzdGFy
dFBvc2l0aW9uID0gcHJldmlvdXNXb3JkUG9zaXRpb24ocG9zaXRpb24sIE5leHRXb3JkTW9kZUlu
SU9TOjpMZWdhY3lTdG9wQmVmb3JlV29yZCk7CiAgICAgICAgIGVuZFBvc2l0aW9uID0gbmV4dFdv
cmRTdGFydFBvc2l0aW9uKHN0YXJ0UG9zaXRpb24pOwogCiAgICAgICAgIC8vIFdlIG5lZWQgdG8g
bWFrZSBzdXJlIHRoYXQgd2UgbG9vayBmb3IgdGhlIHdvcmQgaW4gdGhlIGN1cnJlbnQgbGluZSB3
aGVuCkBAIC01ODcsNyArNTg4LDcgQEAgc3RhdGljIFZpc2libGVTZWxlY3Rpb24gd29yZEF0UG9z
aXRpb25GbwogCiAgICAgY2FzZSBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX0VORDoKICAgICAgICAg
c3RhcnRQb3NpdGlvbiA9IHByZXZpb3VzV29yZEVuZFBvc2l0aW9uKHBvc2l0aW9uKTsKLSAgICAg
ICAgZW5kUG9zaXRpb24gPSBuZXh0V29yZFBvc2l0aW9uKHN0YXJ0UG9zaXRpb24pOworICAgICAg
ICBlbmRQb3NpdGlvbiA9IG5leHRXb3JkUG9zaXRpb24oc3RhcnRQb3NpdGlvbiwgTmV4dFdvcmRN
b2RlSW5JT1M6OkxlZ2FjeVN0b3BCZWZvcmVXb3JkKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBk
ZWZhdWx0OgpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkocmV2aXNpb24gMjQ5NjA3
KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMDI2LDcgKzMwMjYsNyBAQCB2b2lkIEVkaXRvcjo6dXBkYXRlTWFya2Vyc0ZvcldvcmRzQWZm
ZWN0CiAgICAgLy8gSWYgZG9Ob3RSZW1vdmVJZlNlbGVjdGlvbkF0V29yZEJvdW5kYXJ5IGlzIHRy
dWUsIGFuZCBmaXJzdCB3b3JkIGVuZHMgYXQgdGhlIHN0YXJ0IG9mIHNlbGVjdGlvbiwKICAgICAv
LyB3ZSBjaG9vc2UgbmV4dCB3b3JkIGFzIHRoZSBmaXJzdCB3b3JkLgogICAgIGlmIChkb05vdFJl
bW92ZUlmU2VsZWN0aW9uQXRXb3JkQm91bmRhcnkgJiYgZW5kT2ZGaXJzdFdvcmQgPT0gc3RhcnRP
ZlNlbGVjdGlvbikgewotICAgICAgICBzdGFydE9mRmlyc3RXb3JkID0gbmV4dFdvcmRQb3NpdGlv
bihzdGFydE9mRmlyc3RXb3JkKTsKKyAgICAgICAgc3RhcnRPZkZpcnN0V29yZCA9IG5leHRXb3Jk
UG9zaXRpb24oc3RhcnRPZkZpcnN0V29yZCwgTmV4dFdvcmRNb2RlSW5JT1M6OkxlZ2FjeVN0b3BC
ZWZvcmVXb3JkKTsKICAgICAgICAgZW5kT2ZGaXJzdFdvcmQgPSBlbmRPZldvcmQoc3RhcnRPZkZp
cnN0V29yZCwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KTsKICAgICAgICAgaWYgKHN0YXJ0T2ZGaXJz
dFdvcmQgPT0gZW5kT2ZTZWxlY3Rpb24pCiAgICAgICAgICAgICByZXR1cm47CkBAIC0zMDM1LDcg
KzMwMzUsNyBAQCB2b2lkIEVkaXRvcjo6dXBkYXRlTWFya2Vyc0ZvcldvcmRzQWZmZWN0CiAgICAg
Ly8gSWYgZG9Ob3RSZW1vdmVJZlNlbGVjdGlvbkF0V29yZEJvdW5kYXJ5IGlzIHRydWUsIGFuZCBs
YXN0IHdvcmQgYmVnaW5zIGF0IHRoZSBlbmQgb2Ygc2VsZWN0aW9uLAogICAgIC8vIHdlIGNob29z
ZSBwcmV2aW91cyB3b3JkIGFzIHRoZSBsYXN0IHdvcmQuCiAgICAgaWYgKGRvTm90UmVtb3ZlSWZT
ZWxlY3Rpb25BdFdvcmRCb3VuZGFyeSAmJiBzdGFydE9mTGFzdFdvcmQgPT0gZW5kT2ZTZWxlY3Rp
b24pIHsKLSAgICAgICAgc3RhcnRPZkxhc3RXb3JkID0gcHJldmlvdXNXb3JkUG9zaXRpb24oc3Rh
cnRPZkxhc3RXb3JkKTsKKyAgICAgICAgc3RhcnRPZkxhc3RXb3JkID0gcHJldmlvdXNXb3JkUG9z
aXRpb24oc3RhcnRPZkxhc3RXb3JkLCBOZXh0V29yZE1vZGVJbklPUzo6TGVnYWN5U3RvcEJlZm9y
ZVdvcmQpOwogICAgICAgICBlbmRPZkxhc3RXb3JkID0gZW5kT2ZXb3JkKHN0YXJ0T2ZMYXN0V29y
ZCwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KTsKICAgICAgICAgaWYgKGVuZE9mTGFzdFdvcmQgPT0g
c3RhcnRPZlNlbGVjdGlvbikKICAgICAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCShyZXZpc2lvbiAyNDk2MDcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzExLDIwICs3MTEsMjYgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjplbmRGb3JQ
bAogICAgIHJldHVybiBwb3NpdGlvbkZvclBsYXRmb3JtKGZhbHNlKTsKIH0KIAotVmlzaWJsZVBv
c2l0aW9uIEZyYW1lU2VsZWN0aW9uOjpuZXh0V29yZFBvc2l0aW9uRm9yUGxhdGZvcm0oY29uc3Qg
VmlzaWJsZVBvc2l0aW9uICZvcmlnaW5hbFBvc2l0aW9uKQorc3RhdGljIE5leHRXb3JkTW9kZUlu
SU9TIG5leHRXb3JkV2hpdGVzcGFjZU1vZGVJbklPUyhFVXNlclRyaWdnZXJlZCB1c2VyVHJpZ2dl
cmVkKQogewotICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkFmdGVyQ3VycmVudFdvcmQgPSBu
ZXh0V29yZFBvc2l0aW9uKG9yaWdpbmFsUG9zaXRpb24pOworICAgIHJldHVybiB1c2VyVHJpZ2dl
cmVkID09IFVzZXJUcmlnZ2VyZWQgPyBOZXh0V29yZE1vZGVJbklPUzo6U3RvcEFmdGVyV29yZCA6
IE5leHRXb3JkTW9kZUluSU9TOjpMZWdhY3lTdG9wQmVmb3JlV29yZDsKK30KKworVmlzaWJsZVBv
c2l0aW9uIEZyYW1lU2VsZWN0aW9uOjpuZXh0V29yZFBvc2l0aW9uRm9yUGxhdGZvcm0oY29uc3Qg
VmlzaWJsZVBvc2l0aW9uICZvcmlnaW5hbFBvc2l0aW9uLCBFVXNlclRyaWdnZXJlZCB1c2VyVHJp
Z2dlcmVkKQoreworICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkFmdGVyQ3VycmVudFdvcmQg
PSBuZXh0V29yZFBvc2l0aW9uKG9yaWdpbmFsUG9zaXRpb24sIG5leHRXb3JkV2hpdGVzcGFjZU1v
ZGVJbklPUyh1c2VyVHJpZ2dlcmVkKSk7CiAKICAgICBpZiAobV9mcmFtZSAmJiBtX2ZyYW1lLT5l
ZGl0b3IoKS5iZWhhdmlvcigpLnNob3VsZFNraXBTcGFjZVdoZW5Nb3ZpbmdSaWdodCgpKSB7CiAg
ICAgICAgIC8vIEluIG9yZGVyIHRvIHNraXAgc3BhY2VzIHdoZW4gbW92aW5nIHJpZ2h0LCB3ZSBh
ZHZhbmNlIG9uZQogICAgICAgICAvLyB3b3JkIGZ1cnRoZXIgYW5kIHRoZW4gbW92ZSBvbmUgd29y
ZCBiYWNrLiBHaXZlbiB0aGUKICAgICAgICAgLy8gc2VtYW50aWNzIG9mIHByZXZpb3VzV29yZFBv
c2l0aW9uKCkgdGhpcyB3aWxsIHB1dCB1cyBhdCB0aGUKICAgICAgICAgLy8gYmVnaW5uaW5nIG9m
IHRoZSB3b3JkIGZvbGxvd2luZy4KLSAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uQWZ0
ZXJTcGFjaW5nQW5kRm9sbG93aW5nV29yZCA9IG5leHRXb3JkUG9zaXRpb24ocG9zaXRpb25BZnRl
ckN1cnJlbnRXb3JkKTsKKyAgICAgICAgYXV0byB3aGl0ZXNwYWNlTW9kZSA9IG5leHRXb3JkV2hp
dGVzcGFjZU1vZGVJbklPUyh1c2VyVHJpZ2dlcmVkKTsKKyAgICAgICAgVmlzaWJsZVBvc2l0aW9u
IHBvc2l0aW9uQWZ0ZXJTcGFjaW5nQW5kRm9sbG93aW5nV29yZCA9IG5leHRXb3JkUG9zaXRpb24o
cG9zaXRpb25BZnRlckN1cnJlbnRXb3JkLCB3aGl0ZXNwYWNlTW9kZSk7CiAgICAgICAgIGlmIChw
b3NpdGlvbkFmdGVyU3BhY2luZ0FuZEZvbGxvd2luZ1dvcmQgIT0gcG9zaXRpb25BZnRlckN1cnJl
bnRXb3JkKQotICAgICAgICAgICAgcG9zaXRpb25BZnRlckN1cnJlbnRXb3JkID0gcHJldmlvdXNX
b3JkUG9zaXRpb24ocG9zaXRpb25BZnRlclNwYWNpbmdBbmRGb2xsb3dpbmdXb3JkKTsKKyAgICAg
ICAgICAgIHBvc2l0aW9uQWZ0ZXJDdXJyZW50V29yZCA9IHByZXZpb3VzV29yZFBvc2l0aW9uKHBv
c2l0aW9uQWZ0ZXJTcGFjaW5nQW5kRm9sbG93aW5nV29yZCwgd2hpdGVzcGFjZU1vZGUpOwogCi0g
ICAgICAgIGJvb2wgbW92aW5nQmFja3dhcmRzTW92ZWRQb3NpdGlvblRvU3RhcnRPZkN1cnJlbnRX
b3JkID0gcG9zaXRpb25BZnRlckN1cnJlbnRXb3JkID09IHByZXZpb3VzV29yZFBvc2l0aW9uKG5l
eHRXb3JkUG9zaXRpb24ob3JpZ2luYWxQb3NpdGlvbikpOworICAgICAgICBib29sIG1vdmluZ0Jh
Y2t3YXJkc01vdmVkUG9zaXRpb25Ub1N0YXJ0T2ZDdXJyZW50V29yZCA9IHBvc2l0aW9uQWZ0ZXJD
dXJyZW50V29yZCA9PSBwcmV2aW91c1dvcmRQb3NpdGlvbihuZXh0V29yZFBvc2l0aW9uKG9yaWdp
bmFsUG9zaXRpb24sIHdoaXRlc3BhY2VNb2RlKSwgd2hpdGVzcGFjZU1vZGUpOwogICAgICAgICBp
ZiAobW92aW5nQmFja3dhcmRzTW92ZWRQb3NpdGlvblRvU3RhcnRPZkN1cnJlbnRXb3JkKQogICAg
ICAgICAgICAgcG9zaXRpb25BZnRlckN1cnJlbnRXb3JkID0gcG9zaXRpb25BZnRlclNwYWNpbmdB
bmRGb2xsb3dpbmdXb3JkOwogICAgIH0KQEAgLTczOSw3ICs3NDUsNyBAQCBzdGF0aWMgdm9pZCBh
ZGp1c3RQb3NpdGlvbkZvclVzZXJTZWxlY3RBCiB9CiAjZW5kaWYKIAotVmlzaWJsZVBvc2l0aW9u
IEZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeHRlbmRpbmdSaWdodChUZXh0R3JhbnVsYXJpdHkgZ3Jh
bnVsYXJpdHkpCitWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4dGVuZGlu
Z1JpZ2h0KFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgRVVzZXJUcmlnZ2VyZWQgdXNlclRy
aWdnZXJlZCkKIHsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zKG1fc2VsZWN0aW9uLmV4dGVudCgp
LCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKTsKIApAQCAtNzU3LDE1ICs3NjMsMTUgQEAgVmlzaWJs
ZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeAogICAgICAgICBicmVhazsKICAgICBj
YXNlIFdvcmRHcmFudWxhcml0eToKICAgICAgICAgaWYgKGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxv
Y2soKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpCi0gICAgICAgICAgICBwb3MgPSBuZXh0V29yZFBv
c2l0aW9uRm9yUGxhdGZvcm0ocG9zKTsKKyAgICAgICAgICAgIHBvcyA9IG5leHRXb3JkUG9zaXRp
b25Gb3JQbGF0Zm9ybShwb3MsIHVzZXJUcmlnZ2VyZWQpOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBwb3MgPSBwcmV2aW91c1dvcmRQb3NpdGlvbihwb3MpOworICAgICAgICAgICAgcG9zID0g
cHJldmlvdXNXb3JkUG9zaXRpb24ocG9zLCBuZXh0V29yZFdoaXRlc3BhY2VNb2RlSW5JT1ModXNl
clRyaWdnZXJlZCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIExpbmVCb3VuZGFyeToKICAg
ICAgICAgaWYgKGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBUZXh0RGlyZWN0aW9uOjpM
VFIpCi0gICAgICAgICAgICBwb3MgPSBtb2RpZnlFeHRlbmRpbmdGb3J3YXJkKGdyYW51bGFyaXR5
KTsKKyAgICAgICAgICAgIHBvcyA9IG1vZGlmeUV4dGVuZGluZ0ZvcndhcmQoZ3JhbnVsYXJpdHks
IHVzZXJUcmlnZ2VyZWQpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBwb3MgPSBtb2RpZnlF
eHRlbmRpbmdCYWNrd2FyZChncmFudWxhcml0eSk7CisgICAgICAgICAgICBwb3MgPSBtb2RpZnlF
eHRlbmRpbmdCYWNrd2FyZChncmFudWxhcml0eSwgdXNlclRyaWdnZXJlZCk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0eToKICAgICBjYXNlIExpbmVHcmFudWxh
cml0eToKQEAgLTc3NCw3ICs3ODAsNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246
Om1vZGlmeUV4CiAgICAgY2FzZSBQYXJhZ3JhcGhCb3VuZGFyeToKICAgICBjYXNlIERvY3VtZW50
Qm91bmRhcnk6CiAgICAgICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgYWxsIG9mIHRoZSBhYm92ZT8K
LSAgICAgICAgcG9zID0gbW9kaWZ5RXh0ZW5kaW5nRm9yd2FyZChncmFudWxhcml0eSk7CisgICAg
ICAgIHBvcyA9IG1vZGlmeUV4dGVuZGluZ0ZvcndhcmQoZ3JhbnVsYXJpdHksIHVzZXJUcmlnZ2Vy
ZWQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIERvY3VtZW50R3JhbnVsYXJpdHk6CiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNzg2LDcgKzc5Miw3IEBAIFZpc2libGVQb3Np
dGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5RXgKICAgICByZXR1cm4gcG9zOwogfQogCi1WaXNp
YmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4dGVuZGluZ0ZvcndhcmQoVGV4dEdy
YW51bGFyaXR5IGdyYW51bGFyaXR5KQorVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjpt
b2RpZnlFeHRlbmRpbmdGb3J3YXJkKFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgRVVzZXJU
cmlnZ2VyZWQgdXNlclRyaWdnZXJlZCkKIHsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zKG1fc2Vs
ZWN0aW9uLmV4dGVudCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKTsKICAgICBzd2l0Y2ggKGdy
YW51bGFyaXR5KSB7CkBAIC03OTQsNyArODAwLDcgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2Vs
ZWN0aW9uOjptb2RpZnlFeAogICAgICAgICBwb3MgPSBwb3MubmV4dChDYW5ub3RDcm9zc0VkaXRp
bmdCb3VuZGFyeSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV29yZEdyYW51bGFyaXR5Ogot
ICAgICAgICBwb3MgPSBuZXh0V29yZFBvc2l0aW9uRm9yUGxhdGZvcm0ocG9zKTsKKyAgICAgICAg
cG9zID0gbmV4dFdvcmRQb3NpdGlvbkZvclBsYXRmb3JtKHBvcywgdXNlclRyaWdnZXJlZCk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0eToKICAgICAgICAgcG9z
ID0gbmV4dFNlbnRlbmNlUG9zaXRpb24ocG9zKTsKQEAgLTgzMSw3ICs4MzcsNyBAQCBWaXNpYmxl
UG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4CiAgICAgcmV0dXJuIHBvczsKIH0KIAot
VmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNb3ZpbmdSaWdodChUZXh0R3Jh
bnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wqIHJlYWNoZWRCb3VuZGFyeSkKK1Zpc2libGVQb3Np
dGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW92aW5nUmlnaHQoVGV4dEdyYW51bGFyaXR5IGdy
YW51bGFyaXR5LCBFVXNlclRyaWdnZXJlZCB1c2VyVHJpZ2dlcmVkLCBib29sKiByZWFjaGVkQm91
bmRhcnkpCiB7CiAgICAgaWYgKHJlYWNoZWRCb3VuZGFyeSkKICAgICAgICAgKnJlYWNoZWRCb3Vu
ZGFyeSA9IGZhbHNlOwpAQCAtODYxLDcgKzg2Nyw3IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNl
bGVjdGlvbjo6bW9kaWZ5TW8KICAgICBjYXNlIFBhcmFncmFwaEJvdW5kYXJ5OgogICAgIGNhc2Ug
RG9jdW1lbnRCb3VuZGFyeToKICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBhbGwgb2YgdGhl
IGFib3ZlLgotICAgICAgICBwb3MgPSBtb2RpZnlNb3ZpbmdGb3J3YXJkKGdyYW51bGFyaXR5LCBy
ZWFjaGVkQm91bmRhcnkpOworICAgICAgICBwb3MgPSBtb2RpZnlNb3ZpbmdGb3J3YXJkKGdyYW51
bGFyaXR5LCB1c2VyVHJpZ2dlcmVkLCByZWFjaGVkQm91bmRhcnkpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIExpbmVCb3VuZGFyeToKICAgICAgICAgcG9zID0gcmlnaHRCb3VuZGFyeU9mTGlu
ZShzdGFydEZvclBsYXRmb3JtKCksIGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSwgcmVhY2hl
ZEJvdW5kYXJ5KTsKQEAgLTg3Myw3ICs4NzksNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxl
Y3Rpb246Om1vZGlmeU1vCiAgICAgcmV0dXJuIHBvczsKIH0KIAotVmlzaWJsZVBvc2l0aW9uIEZy
YW1lU2VsZWN0aW9uOjptb2RpZnlNb3ZpbmdGb3J3YXJkKFRleHRHcmFudWxhcml0eSBncmFudWxh
cml0eSwgYm9vbCogcmVhY2hlZEJvdW5kYXJ5KQorVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0
aW9uOjptb2RpZnlNb3ZpbmdGb3J3YXJkKFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgRVVz
ZXJUcmlnZ2VyZWQgdXNlclRyaWdnZXJlZCwgYm9vbCogcmVhY2hlZEJvdW5kYXJ5KQogewogICAg
IGlmIChyZWFjaGVkQm91bmRhcnkpCiAgICAgICAgICpyZWFjaGVkQm91bmRhcnkgPSBmYWxzZTsK
QEAgLTkwMyw3ICs5MDksNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlm
eU1vCiAgICAgICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uZXh0ZW50
KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpLm5leHQoQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRh
cnksIHJlYWNoZWRCb3VuZGFyeSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV29yZEdyYW51
bGFyaXR5OgotICAgICAgICBwb3MgPSBuZXh0V29yZFBvc2l0aW9uRm9yUGxhdGZvcm0oY3VycmVu
dFBvc2l0aW9uKTsKKyAgICAgICAgcG9zID0gbmV4dFdvcmRQb3NpdGlvbkZvclBsYXRmb3JtKGN1
cnJlbnRQb3NpdGlvbiwgdXNlclRyaWdnZXJlZCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
U2VudGVuY2VHcmFudWxhcml0eToKICAgICAgICAgcG9zID0gbmV4dFNlbnRlbmNlUG9zaXRpb24o
Y3VycmVudFBvc2l0aW9uKTsKQEAgLTk1Niw3ICs5NjIsNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJh
bWVTZWxlY3Rpb246Om1vZGlmeU1vCiAgICAgcmV0dXJuIHBvczsKIH0KIAotVmlzaWJsZVBvc2l0
aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeHRlbmRpbmdMZWZ0KFRleHRHcmFudWxhcml0eSBn
cmFudWxhcml0eSkKK1Zpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5RXh0ZW5k
aW5nTGVmdChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIEVVc2VyVHJpZ2dlcmVkIHVzZXJU
cmlnZ2VyZWQpCiB7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvcyhtX3NlbGVjdGlvbi5leHRlbnQo
KSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSk7CiAKQEAgLTk3NCwxNSArOTgwLDE1IEBAIFZpc2li
bGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5RXgKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBXb3JkR3JhbnVsYXJpdHk6CiAgICAgICAgIGlmIChkaXJlY3Rpb25PZkVuY2xvc2luZ0Js
b2NrKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKQotICAgICAgICAgICAgcG9zID0gcHJldmlvdXNX
b3JkUG9zaXRpb24ocG9zKTsKKyAgICAgICAgICAgIHBvcyA9IHByZXZpb3VzV29yZFBvc2l0aW9u
KHBvcywgbmV4dFdvcmRXaGl0ZXNwYWNlTW9kZUluSU9TKHVzZXJUcmlnZ2VyZWQpKTsKICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgcG9zID0gbmV4dFdvcmRQb3NpdGlvbkZvclBsYXRmb3JtKHBv
cyk7CisgICAgICAgICAgICBwb3MgPSBuZXh0V29yZFBvc2l0aW9uRm9yUGxhdGZvcm0ocG9zLCB1
c2VyVHJpZ2dlcmVkKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBMaW5lQm91bmRhcnk6CiAg
ICAgICAgIGlmIChkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gVGV4dERpcmVjdGlvbjo6
TFRSKQotICAgICAgICAgICAgcG9zID0gbW9kaWZ5RXh0ZW5kaW5nQmFja3dhcmQoZ3JhbnVsYXJp
dHkpOworICAgICAgICAgICAgcG9zID0gbW9kaWZ5RXh0ZW5kaW5nQmFja3dhcmQoZ3JhbnVsYXJp
dHksIHVzZXJUcmlnZ2VyZWQpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBwb3MgPSBtb2Rp
ZnlFeHRlbmRpbmdGb3J3YXJkKGdyYW51bGFyaXR5KTsKKyAgICAgICAgICAgIHBvcyA9IG1vZGlm
eUV4dGVuZGluZ0ZvcndhcmQoZ3JhbnVsYXJpdHksIHVzZXJUcmlnZ2VyZWQpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6CiAgICAgY2FzZSBMaW5lR3JhbnVs
YXJpdHk6CkBAIC05OTAsNyArOTk2LDcgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9u
Ojptb2RpZnlFeAogICAgIGNhc2UgU2VudGVuY2VCb3VuZGFyeToKICAgICBjYXNlIFBhcmFncmFw
aEJvdW5kYXJ5OgogICAgIGNhc2UgRG9jdW1lbnRCb3VuZGFyeToKLSAgICAgICAgcG9zID0gbW9k
aWZ5RXh0ZW5kaW5nQmFja3dhcmQoZ3JhbnVsYXJpdHkpOworICAgICAgICBwb3MgPSBtb2RpZnlF
eHRlbmRpbmdCYWNrd2FyZChncmFudWxhcml0eSwgdXNlclRyaWdnZXJlZCk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgRG9jdW1lbnRHcmFudWxhcml0eToKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CkBAIC0xMDAyLDcgKzEwMDgsNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxl
Y3Rpb246Om1vZGlmeUV4CiAgICAgcmV0dXJuIHBvczsKIH0KICAgICAgICAKLVZpc2libGVQb3Np
dGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5RXh0ZW5kaW5nQmFja3dhcmQoVGV4dEdyYW51bGFy
aXR5IGdyYW51bGFyaXR5KQorVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlF
eHRlbmRpbmdCYWNrd2FyZChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIEVVc2VyVHJpZ2dl
cmVkIHVzZXJUcmlnZ2VyZWQpCiB7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvcyhtX3NlbGVjdGlv
bi5leHRlbnQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSk7CiAKQEAgLTEwMTUsNyArMTAyMSw3
IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5RXgKICAgICAgICAgcG9z
ID0gcG9zLnByZXZpb3VzKENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6Ci0gICAgICAgIHBvcyA9IHByZXZpb3VzV29y
ZFBvc2l0aW9uKHBvcyk7CisgICAgICAgIHBvcyA9IHByZXZpb3VzV29yZFBvc2l0aW9uKHBvcywg
bmV4dFdvcmRXaGl0ZXNwYWNlTW9kZUluSU9TKHVzZXJUcmlnZ2VyZWQpKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5OgogICAgICAgICBwb3MgPSBwcmV2aW91
c1NlbnRlbmNlUG9zaXRpb24ocG9zKTsKQEAgLTEwNTIsNyArMTA1OCw3IEBAIFZpc2libGVQb3Np
dGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5RXgKICAgICByZXR1cm4gcG9zOwogfQogCi1WaXNp
YmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeU1vdmluZ0xlZnQoVGV4dEdyYW51bGFy
aXR5IGdyYW51bGFyaXR5LCBib29sKiByZWFjaGVkQm91bmRhcnkpCitWaXNpYmxlUG9zaXRpb24g
RnJhbWVTZWxlY3Rpb246Om1vZGlmeU1vdmluZ0xlZnQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFy
aXR5LCBFVXNlclRyaWdnZXJlZCB1c2VyVHJpZ2dlcmVkLCBib29sKiByZWFjaGVkQm91bmRhcnkp
CiB7CiAgICAgaWYgKHJlYWNoZWRCb3VuZGFyeSkKICAgICAgICAgKnJlYWNoZWRCb3VuZGFyeSA9
IGZhbHNlOwpAQCAtMTA4Miw3ICsxMDg4LDcgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0
aW9uOjptb2RpZnlNbwogICAgIGNhc2UgUGFyYWdyYXBoQm91bmRhcnk6CiAgICAgY2FzZSBEb2N1
bWVudEJvdW5kYXJ5OgogICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGFsbCBvZiB0aGUgYWJv
dmUuCi0gICAgICAgIHBvcyA9IG1vZGlmeU1vdmluZ0JhY2t3YXJkKGdyYW51bGFyaXR5LCByZWFj
aGVkQm91bmRhcnkpOworICAgICAgICBwb3MgPSBtb2RpZnlNb3ZpbmdCYWNrd2FyZChncmFudWxh
cml0eSwgdXNlclRyaWdnZXJlZCwgcmVhY2hlZEJvdW5kYXJ5KTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBMaW5lQm91bmRhcnk6CiAgICAgICAgIHBvcyA9IGxlZnRCb3VuZGFyeU9mTGluZShz
dGFydEZvclBsYXRmb3JtKCksIGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSwgcmVhY2hlZEJv
dW5kYXJ5KTsKQEAgLTEwOTQsNyArMTEwMCw3IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVj
dGlvbjo6bW9kaWZ5TW8KICAgICByZXR1cm4gcG9zOwogfQogCi1WaXNpYmxlUG9zaXRpb24gRnJh
bWVTZWxlY3Rpb246Om1vZGlmeU1vdmluZ0JhY2t3YXJkKFRleHRHcmFudWxhcml0eSBncmFudWxh
cml0eSwgYm9vbCogcmVhY2hlZEJvdW5kYXJ5KQorVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0
aW9uOjptb2RpZnlNb3ZpbmdCYWNrd2FyZChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIEVV
c2VyVHJpZ2dlcmVkIHVzZXJUcmlnZ2VyZWQsIGJvb2wqIHJlYWNoZWRCb3VuZGFyeSkKIHsKICAg
ICBpZiAocmVhY2hlZEJvdW5kYXJ5KQogICAgICAgICAqcmVhY2hlZEJvdW5kYXJ5ID0gZmFsc2U7
CkBAIC0xMTIzLDcgKzExMjksNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1v
ZGlmeU1vCiAgICAgICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uZXh0
ZW50KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpLnByZXZpb3VzKENhbm5vdENyb3NzRWRpdGlu
Z0JvdW5kYXJ5LCByZWFjaGVkQm91bmRhcnkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdv
cmRHcmFudWxhcml0eToKLSAgICAgICAgcG9zID0gcHJldmlvdXNXb3JkUG9zaXRpb24oY3VycmVu
dFBvc2l0aW9uKTsKKyAgICAgICAgcG9zID0gcHJldmlvdXNXb3JkUG9zaXRpb24oY3VycmVudFBv
c2l0aW9uLCBuZXh0V29yZFdoaXRlc3BhY2VNb2RlSW5JT1ModXNlclRyaWdnZXJlZCkpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6CiAgICAgICAgIHBvcyA9
IHByZXZpb3VzU2VudGVuY2VQb3NpdGlvbihjdXJyZW50UG9zaXRpb24pOwpAQCAtMTMzMCwyNyAr
MTMzNiwyNyBAQCBib29sIEZyYW1lU2VsZWN0aW9uOjptb2RpZnkoRUFsdGVyYXRpb24gCiAgICAg
c3dpdGNoIChkaXJlY3Rpb24pIHsKICAgICBjYXNlIERpcmVjdGlvblJpZ2h0OgogICAgICAgICBp
ZiAoYWx0ZXIgPT0gQWx0ZXJhdGlvbk1vdmUpCi0gICAgICAgICAgICBwb3NpdGlvbiA9IG1vZGlm
eU1vdmluZ1JpZ2h0KGdyYW51bGFyaXR5LCAmcmVhY2hlZEJvdW5kYXJ5KTsKKyAgICAgICAgICAg
IHBvc2l0aW9uID0gbW9kaWZ5TW92aW5nUmlnaHQoZ3JhbnVsYXJpdHksIHVzZXJUcmlnZ2VyZWQs
ICZyZWFjaGVkQm91bmRhcnkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBwb3NpdGlvbiA9
IG1vZGlmeUV4dGVuZGluZ1JpZ2h0KGdyYW51bGFyaXR5KTsKKyAgICAgICAgICAgIHBvc2l0aW9u
ID0gbW9kaWZ5RXh0ZW5kaW5nUmlnaHQoZ3JhbnVsYXJpdHksIHVzZXJUcmlnZ2VyZWQpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIERpcmVjdGlvbkZvcndhcmQ6CiAgICAgICAgIGlmIChhbHRl
ciA9PSBBbHRlcmF0aW9uRXh0ZW5kKQotICAgICAgICAgICAgcG9zaXRpb24gPSBtb2RpZnlFeHRl
bmRpbmdGb3J3YXJkKGdyYW51bGFyaXR5KTsKKyAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5
RXh0ZW5kaW5nRm9yd2FyZChncmFudWxhcml0eSwgdXNlclRyaWdnZXJlZCk7CiAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5TW92aW5nRm9yd2FyZChncmFudWxhcml0
eSwgJnJlYWNoZWRCb3VuZGFyeSk7CisgICAgICAgICAgICBwb3NpdGlvbiA9IG1vZGlmeU1vdmlu
Z0ZvcndhcmQoZ3JhbnVsYXJpdHksIHVzZXJUcmlnZ2VyZWQsICZyZWFjaGVkQm91bmRhcnkpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIERpcmVjdGlvbkxlZnQ6CiAgICAgICAgIGlmIChhbHRl
ciA9PSBBbHRlcmF0aW9uTW92ZSkKLSAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5TW92aW5n
TGVmdChncmFudWxhcml0eSwgJnJlYWNoZWRCb3VuZGFyeSk7CisgICAgICAgICAgICBwb3NpdGlv
biA9IG1vZGlmeU1vdmluZ0xlZnQoZ3JhbnVsYXJpdHksIHVzZXJUcmlnZ2VyZWQsICZyZWFjaGVk
Qm91bmRhcnkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBwb3NpdGlvbiA9IG1vZGlmeUV4
dGVuZGluZ0xlZnQoZ3JhbnVsYXJpdHkpOworICAgICAgICAgICAgcG9zaXRpb24gPSBtb2RpZnlF
eHRlbmRpbmdMZWZ0KGdyYW51bGFyaXR5LCB1c2VyVHJpZ2dlcmVkKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBEaXJlY3Rpb25CYWNrd2FyZDoKICAgICAgICAgaWYgKGFsdGVyID09IEFsdGVy
YXRpb25FeHRlbmQpCi0gICAgICAgICAgICBwb3NpdGlvbiA9IG1vZGlmeUV4dGVuZGluZ0JhY2t3
YXJkKGdyYW51bGFyaXR5KTsKKyAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5RXh0ZW5kaW5n
QmFja3dhcmQoZ3JhbnVsYXJpdHksIHVzZXJUcmlnZ2VyZWQpOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBwb3NpdGlvbiA9IG1vZGlmeU1vdmluZ0JhY2t3YXJkKGdyYW51bGFyaXR5LCAmcmVh
Y2hlZEJvdW5kYXJ5KTsKKyAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5TW92aW5nQmFja3dh
cmQoZ3JhbnVsYXJpdHksIHVzZXJUcmlnZ2VyZWQsICZyZWFjaGVkQm91bmRhcnkpOwogICAgICAg
ICBicmVhazsKICAgICB9CiAKQEAgLTIxNDUsNyArMjE1MSw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rp
b246OnVwZGF0ZUFwcGVhcmFuY2UoKQogICAgIC8vIENvbnN0cnVjdCBhIG5ldyBWaXNpYmxlU29s
dXRpb24sIHNpbmNlIG1fc2VsZWN0aW9uIGlzIG5vdCBuZWNlc3NhcmlseSB2YWxpZCwgYW5kIHRo
ZSBmb2xsb3dpbmcgc3RlcHMKICAgICAvLyBhc3N1bWUgYSB2YWxpZCBzZWxlY3Rpb24uIFNlZSA8
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5NTYzPiBhbmQgPHJkYXI6
Ly9wcm9ibGVtLzEwMjMyODY2Pi4KICNpZiBFTkFCTEUoVEVYVF9DQVJFVCkKLSAgICBWaXNpYmxl
UG9zaXRpb24gZW5kVmlzaWJsZVBvc2l0aW9uID0gcGFpbnRCbG9ja0N1cnNvciA/IG1vZGlmeUV4
dGVuZGluZ0ZvcndhcmQoQ2hhcmFjdGVyR3JhbnVsYXJpdHkpIDogb2xkU2VsZWN0aW9uLnZpc2li
bGVFbmQoKTsKKyAgICBWaXNpYmxlUG9zaXRpb24gZW5kVmlzaWJsZVBvc2l0aW9uID0gcGFpbnRC
bG9ja0N1cnNvciA/IG1vZGlmeUV4dGVuZGluZ0ZvcndhcmQoQ2hhcmFjdGVyR3JhbnVsYXJpdHks
IE5vdFVzZXJUcmlnZ2VyZWQpIDogb2xkU2VsZWN0aW9uLnZpc2libGVFbmQoKTsKICAgICBWaXNp
YmxlU2VsZWN0aW9uIHNlbGVjdGlvbihvbGRTZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCksIGVuZFZp
c2libGVQb3NpdGlvbik7CiAjZWxzZQogICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uKG9s
ZFNlbGVjdGlvbi52aXNpYmxlU3RhcnQoKSwgb2xkU2VsZWN0aW9uLnZpc2libGVFbmQoKSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCShyZXZpc2lvbiAyNDk2
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI5OSwxNiArMjk5LDE2IEBAIHByaXZhdGU6CiAgICAgVmlzaWJsZVBvc2l0aW9u
IHBvc2l0aW9uRm9yUGxhdGZvcm0oYm9vbCBpc0dldFN0YXJ0KSBjb25zdDsKICAgICBWaXNpYmxl
UG9zaXRpb24gc3RhcnRGb3JQbGF0Zm9ybSgpIGNvbnN0OwogICAgIFZpc2libGVQb3NpdGlvbiBl
bmRGb3JQbGF0Zm9ybSgpIGNvbnN0OwotICAgIFZpc2libGVQb3NpdGlvbiBuZXh0V29yZFBvc2l0
aW9uRm9yUGxhdGZvcm0oY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7CisgICAgVmlzaWJsZVBvc2l0
aW9uIG5leHRXb3JkUG9zaXRpb25Gb3JQbGF0Zm9ybShjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBF
VXNlclRyaWdnZXJlZCk7CiAKLSAgICBWaXNpYmxlUG9zaXRpb24gbW9kaWZ5RXh0ZW5kaW5nUmln
aHQoVGV4dEdyYW51bGFyaXR5KTsKLSAgICBWaXNpYmxlUG9zaXRpb24gbW9kaWZ5RXh0ZW5kaW5n
Rm9yd2FyZChUZXh0R3JhbnVsYXJpdHkpOwotICAgIFZpc2libGVQb3NpdGlvbiBtb2RpZnlNb3Zp
bmdSaWdodChUZXh0R3JhbnVsYXJpdHksIGJvb2wqIHJlYWNoZWRCb3VuZGFyeSA9IG51bGxwdHIp
OwotICAgIFZpc2libGVQb3NpdGlvbiBtb2RpZnlNb3ZpbmdGb3J3YXJkKFRleHRHcmFudWxhcml0
eSwgYm9vbCogcmVhY2hlZEJvdW5kYXJ5ID0gbnVsbHB0cik7Ci0gICAgVmlzaWJsZVBvc2l0aW9u
IG1vZGlmeUV4dGVuZGluZ0xlZnQoVGV4dEdyYW51bGFyaXR5KTsKLSAgICBWaXNpYmxlUG9zaXRp
b24gbW9kaWZ5RXh0ZW5kaW5nQmFja3dhcmQoVGV4dEdyYW51bGFyaXR5KTsKLSAgICBWaXNpYmxl
UG9zaXRpb24gbW9kaWZ5TW92aW5nTGVmdChUZXh0R3JhbnVsYXJpdHksIGJvb2wqIHJlYWNoZWRC
b3VuZGFyeSA9IG51bGxwdHIpOwotICAgIFZpc2libGVQb3NpdGlvbiBtb2RpZnlNb3ZpbmdCYWNr
d2FyZChUZXh0R3JhbnVsYXJpdHksIGJvb2wqIHJlYWNoZWRCb3VuZGFyeSA9IG51bGxwdHIpOwor
ICAgIFZpc2libGVQb3NpdGlvbiBtb2RpZnlFeHRlbmRpbmdSaWdodChUZXh0R3JhbnVsYXJpdHks
IEVVc2VyVHJpZ2dlcmVkKTsKKyAgICBWaXNpYmxlUG9zaXRpb24gbW9kaWZ5RXh0ZW5kaW5nRm9y
d2FyZChUZXh0R3JhbnVsYXJpdHksIEVVc2VyVHJpZ2dlcmVkKTsKKyAgICBWaXNpYmxlUG9zaXRp
b24gbW9kaWZ5TW92aW5nUmlnaHQoVGV4dEdyYW51bGFyaXR5LCBFVXNlclRyaWdnZXJlZCwgYm9v
bCogcmVhY2hlZEJvdW5kYXJ5ID0gbnVsbHB0cik7CisgICAgVmlzaWJsZVBvc2l0aW9uIG1vZGlm
eU1vdmluZ0ZvcndhcmQoVGV4dEdyYW51bGFyaXR5LCBFVXNlclRyaWdnZXJlZCwgYm9vbCogcmVh
Y2hlZEJvdW5kYXJ5ID0gbnVsbHB0cik7CisgICAgVmlzaWJsZVBvc2l0aW9uIG1vZGlmeUV4dGVu
ZGluZ0xlZnQoVGV4dEdyYW51bGFyaXR5LCBFVXNlclRyaWdnZXJlZCk7CisgICAgVmlzaWJsZVBv
c2l0aW9uIG1vZGlmeUV4dGVuZGluZ0JhY2t3YXJkKFRleHRHcmFudWxhcml0eSwgRVVzZXJUcmln
Z2VyZWQpOworICAgIFZpc2libGVQb3NpdGlvbiBtb2RpZnlNb3ZpbmdMZWZ0KFRleHRHcmFudWxh
cml0eSwgRVVzZXJUcmlnZ2VyZWQsIGJvb2wqIHJlYWNoZWRCb3VuZGFyeSA9IG51bGxwdHIpOwor
ICAgIFZpc2libGVQb3NpdGlvbiBtb2RpZnlNb3ZpbmdCYWNrd2FyZChUZXh0R3JhbnVsYXJpdHks
IEVVc2VyVHJpZ2dlcmVkLCBib29sKiByZWFjaGVkQm91bmRhcnkgPSBudWxscHRyKTsKIAogICAg
IExheW91dFVuaXQgbGluZURpcmVjdGlvblBvaW50Rm9yQmxvY2tEaXJlY3Rpb25OYXZpZ2F0aW9u
KEVQb3NpdGlvblR5cGUpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVy
YXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0
b3IuY3BwCShyZXZpc2lvbiAyNDk2MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJ
dGVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMzUsNyArMjMzNSw3IEBAIGlubGluZSBi
b29sIFNlYXJjaEJ1ZmZlcjo6aXNXb3JkU3RhcnRNYXQKIAogICAgIHNpemVfdCB3b3JkQnJlYWtT
ZWFyY2hTdGFydCA9IHN0YXJ0ICsgbGVuZ3RoOwogICAgIHdoaWxlICh3b3JkQnJlYWtTZWFyY2hT
dGFydCA+IHN0YXJ0KQotICAgICAgICB3b3JkQnJlYWtTZWFyY2hTdGFydCA9IGZpbmROZXh0V29y
ZEZyb21JbmRleChTdHJpbmdWaWV3KG1fYnVmZmVyLmRhdGEoKSwgbV9idWZmZXIuc2l6ZSgpKSwg
d29yZEJyZWFrU2VhcmNoU3RhcnQsIGZhbHNlIC8qIGJhY2t3YXJkcyAqLyk7CisgICAgICAgIHdv
cmRCcmVha1NlYXJjaFN0YXJ0ID0gZmluZE5leHRXb3JkRnJvbUluZGV4KFN0cmluZ1ZpZXcobV9i
dWZmZXIuZGF0YSgpLCBtX2J1ZmZlci5zaXplKCkpLCB3b3JkQnJlYWtTZWFyY2hTdGFydCwgTmV4
dFdvcmREaXJlY3Rpb246OkJhY2t3YXJkKTsKICAgICByZXR1cm4gd29yZEJyZWFrU2VhcmNoU3Rh
cnQgPT0gc3RhcnQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVu
aXRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0
cy5jcHAJKHJldmlzaW9uIDI0OTYwNykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJs
ZVVuaXRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYxLDYgKzc2MSw3IEBAIFZpc2libGVQb3Np
dGlvbiBlbmRPZldvcmQoY29uc3QgVmlzaWJsZVAKICAgICByZXR1cm4gbmV4dEJvdW5kYXJ5KHAs
IGVuZFdvcmRCb3VuZGFyeSk7CiB9CiAKK3RlbXBsYXRlIDxOZXh0V29yZE1vZGVJbklPUyBpb3NN
b2RlPgogc3RhdGljIHVuc2lnbmVkIHByZXZpb3VzV29yZFBvc2l0aW9uQm91bmRhcnkoU3RyaW5n
VmlldyB0ZXh0LCB1bnNpZ25lZCBvZmZzZXQsIEJvdW5kYXJ5U2VhcmNoQ29udGV4dEF2YWlsYWJp
bGl0eSBtYXlIYXZlTW9yZUNvbnRleHQsIGJvb2wmIG5lZWRNb3JlQ29udGV4dCkKIHsKICAgICBp
ZiAobWF5SGF2ZU1vcmVDb250ZXh0ICYmICFzdGFydE9mTGFzdFdvcmRCb3VuZGFyeUNvbnRleHQo
dGV4dC5zdWJzdHJpbmcoMCwgb2Zmc2V0KSkpIHsKQEAgLTc2OCwxNCArNzY5LDE3IEBAIHN0YXRp
YyB1bnNpZ25lZCBwcmV2aW91c1dvcmRQb3NpdGlvbkJvdW4KICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgfQogICAgIG5lZWRNb3JlQ29udGV4dCA9IGZhbHNlOwotICAgIHJldHVybiBmaW5kTmV4dFdv
cmRGcm9tSW5kZXgodGV4dCwgb2Zmc2V0LCBmYWxzZSk7CisgICAgcmV0dXJuIGZpbmROZXh0V29y
ZEZyb21JbmRleCh0ZXh0LCBvZmZzZXQsIE5leHRXb3JkRGlyZWN0aW9uOjpCYWNrd2FyZCwgaW9z
TW9kZSk7CiB9CiAKLVZpc2libGVQb3NpdGlvbiBwcmV2aW91c1dvcmRQb3NpdGlvbihjb25zdCBW
aXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uKQorVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzV29yZFBv
c2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24sIE5leHRXb3JkTW9kZUluSU9T
IGlvc01vZGUpCiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uLmhvbm9yRWRpdGluZ0JvdW5kYXJ5QXRP
ckJlZm9yZShwcmV2aW91c0JvdW5kYXJ5KHBvc2l0aW9uLCBwcmV2aW91c1dvcmRQb3NpdGlvbkJv
dW5kYXJ5KSk7CisgICAgaWYgKGlvc01vZGUgPT0gTmV4dFdvcmRNb2RlSW5JT1M6OkxlZ2FjeVN0
b3BCZWZvcmVXb3JkKSAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgY29kZSBwYXRoLgorICAgICAgICBy
ZXR1cm4gcG9zaXRpb24uaG9ub3JFZGl0aW5nQm91bmRhcnlBdE9yQmVmb3JlKHByZXZpb3VzQm91
bmRhcnkocG9zaXRpb24sIHByZXZpb3VzV29yZFBvc2l0aW9uQm91bmRhcnk8TmV4dFdvcmRNb2Rl
SW5JT1M6OkxlZ2FjeVN0b3BCZWZvcmVXb3JkPikpOworICAgIHJldHVybiBwb3NpdGlvbi5ob25v
ckVkaXRpbmdCb3VuZGFyeUF0T3JCZWZvcmUocHJldmlvdXNCb3VuZGFyeShwb3NpdGlvbiwgcHJl
dmlvdXNXb3JkUG9zaXRpb25Cb3VuZGFyeTxOZXh0V29yZE1vZGVJbklPUzo6U3RvcEFmdGVyV29y
ZD4pKTsKIH0KIAordGVtcGxhdGUgPE5leHRXb3JkTW9kZUluSU9TIGlvc01vZGU+CiBzdGF0aWMg
dW5zaWduZWQgbmV4dFdvcmRQb3NpdGlvbkJvdW5kYXJ5KFN0cmluZ1ZpZXcgdGV4dCwgdW5zaWdu
ZWQgb2Zmc2V0LCBCb3VuZGFyeVNlYXJjaENvbnRleHRBdmFpbGFiaWxpdHkgbWF5SGF2ZU1vcmVD
b250ZXh0LCBib29sJiBuZWVkTW9yZUNvbnRleHQpCiB7CiAgICAgaWYgKG1heUhhdmVNb3JlQ29u
dGV4dCAmJiBlbmRPZkZpcnN0V29yZEJvdW5kYXJ5Q29udGV4dCh0ZXh0LnN1YnN0cmluZyhvZmZz
ZXQpKSA9PSB0ZXh0Lmxlbmd0aCgpIC0gb2Zmc2V0KSB7CkBAIC03ODMsMTIgKzc4NywxNCBAQCBz
dGF0aWMgdW5zaWduZWQgbmV4dFdvcmRQb3NpdGlvbkJvdW5kYXJ5CiAgICAgICAgIHJldHVybiB0
ZXh0Lmxlbmd0aCgpOwogICAgIH0KICAgICBuZWVkTW9yZUNvbnRleHQgPSBmYWxzZTsKLSAgICBy
ZXR1cm4gZmluZE5leHRXb3JkRnJvbUluZGV4KHRleHQsIG9mZnNldCwgdHJ1ZSk7CisgICAgcmV0
dXJuIGZpbmROZXh0V29yZEZyb21JbmRleCh0ZXh0LCBvZmZzZXQsIE5leHRXb3JkRGlyZWN0aW9u
OjpGb3J3YXJkLCBpb3NNb2RlKTsKIH0KIAotVmlzaWJsZVBvc2l0aW9uIG5leHRXb3JkUG9zaXRp
b24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbikKK1Zpc2libGVQb3NpdGlvbiBuZXh0
V29yZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24sIE5leHRXb3JkTW9k
ZUluSU9TIGlvc01vZGUpCiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uLmhvbm9yRWRpdGluZ0JvdW5k
YXJ5QXRPckFmdGVyKG5leHRCb3VuZGFyeShwb3NpdGlvbiwgbmV4dFdvcmRQb3NpdGlvbkJvdW5k
YXJ5KSk7CisgICAgaWYgKGlvc01vZGUgPT0gTmV4dFdvcmRNb2RlSW5JT1M6OkxlZ2FjeVN0b3BC
ZWZvcmVXb3JkKSAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgY29kZSBwYXRoLgorICAgICAgICByZXR1
cm4gcG9zaXRpb24uaG9ub3JFZGl0aW5nQm91bmRhcnlBdE9yQWZ0ZXIobmV4dEJvdW5kYXJ5KHBv
c2l0aW9uLCBuZXh0V29yZFBvc2l0aW9uQm91bmRhcnk8TmV4dFdvcmRNb2RlSW5JT1M6OkxlZ2Fj
eVN0b3BCZWZvcmVXb3JkPikpOworICAgIHJldHVybiBwb3NpdGlvbi5ob25vckVkaXRpbmdCb3Vu
ZGFyeUF0T3JBZnRlcihuZXh0Qm91bmRhcnkocG9zaXRpb24sIG5leHRXb3JkUG9zaXRpb25Cb3Vu
ZGFyeTxOZXh0V29yZE1vZGVJbklPUzo6U3RvcEFmdGVyV29yZD4pKTsKIH0KIAogYm9vbCBpc1N0
YXJ0T2ZXb3JkKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcCkKQEAgLTE3MDAsNyArMTcwNiw3IEBA
IHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gbmV4dFdvcmRCb3VuZGFyeUkKICAgICAgICAgICAgICAg
ICAvLyBEbyBzYW1lIHRoaW5nIGFzIGJhY2t3YXJkcyB0cmF2ZWxpbmcgYmVsb3cuCiAgICAgICAg
ICAgICAgICAgc3RhcnQgPSB2cDsKICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgewotICAg
ICAgICAgICAgICAgICAgICByZXN1bHQgPSBzdGFydE9mV29yZChuZXh0V29yZFBvc2l0aW9uKHN0
YXJ0KSwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0
ID0gc3RhcnRPZldvcmQobmV4dFdvcmRQb3NpdGlvbihzdGFydCwgTmV4dFdvcmRNb2RlSW5JT1M6
OkxlZ2FjeVN0b3BCZWZvcmVXb3JkKSwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KTsKIAogICAgICAg
ICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IHN0YXJ0KQogICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CkBAIC0xNzM0LDcgKzE3NDAsNyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIG5l
eHRXb3JkQm91bmRhcnlJCiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBlbmQg
PSB2cDsKICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICAgICAgICAgICAg
ICByZXN1bHQgPSBlbmRPZldvcmQocHJldmlvdXNXb3JkUG9zaXRpb24oZW5kKSwgUmlnaHRXb3Jk
SWZPbkJvdW5kYXJ5KTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gZW5kT2ZXb3JkKHBy
ZXZpb3VzV29yZFBvc2l0aW9uKGVuZCwgTmV4dFdvcmRNb2RlSW5JT1M6OkxlZ2FjeVN0b3BCZWZv
cmVXb3JkKSwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KTsKIAogICAgICAgICAgICAgICAgICAgICBp
ZiAocmVzdWx0ID09IGVuZCkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpJbmRleDog
U291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5oCShyZXZpc2lvbiAyNDk2MDcpCisrKyBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkVkaXRpbmdCb3VuZGFyeS5o
IgorI2luY2x1ZGUgIlRleHRCb3VuZGFyaWVzLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVNlbGVjdGlv
bi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MCw4ICs0MSw4IEBAIGVudW0gRVdvcmRT
aWRlIHsgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5ID0KIC8vIHdvcmRzCiBXRUJDT1JFX0VYUE9SVCBW
aXNpYmxlUG9zaXRpb24gc3RhcnRPZldvcmQoY29uc3QgVmlzaWJsZVBvc2l0aW9uICYsIEVXb3Jk
U2lkZSA9IFJpZ2h0V29yZElmT25Cb3VuZGFyeSk7CiBXRUJDT1JFX0VYUE9SVCBWaXNpYmxlUG9z
aXRpb24gZW5kT2ZXb3JkKGNvbnN0IFZpc2libGVQb3NpdGlvbiAmLCBFV29yZFNpZGUgPSBSaWdo
dFdvcmRJZk9uQm91bmRhcnkpOwotV0VCQ09SRV9FWFBPUlQgVmlzaWJsZVBvc2l0aW9uIHByZXZp
b3VzV29yZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiAmKTsKLVdFQkNPUkVfRVhQT1JU
IFZpc2libGVQb3NpdGlvbiBuZXh0V29yZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiAm
KTsKK1dFQkNPUkVfRVhQT1JUIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1dvcmRQb3NpdGlvbihj
b25zdCBWaXNpYmxlUG9zaXRpb24gJiwgTmV4dFdvcmRNb2RlSW5JT1MpOworV0VCQ09SRV9FWFBP
UlQgVmlzaWJsZVBvc2l0aW9uIG5leHRXb3JkUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9u
ICYsIE5leHRXb3JkTW9kZUluSU9TKTsKIFZpc2libGVQb3NpdGlvbiByaWdodFdvcmRQb3NpdGlv
bihjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBib29sIHNraXBzU3BhY2VXaGVuTW92aW5nUmlnaHQp
OwogVmlzaWJsZVBvc2l0aW9uIGxlZnRXb3JkUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiwgYm9vbCBza2lwc1NwYWNlV2hlbk1vdmluZ1JpZ2h0KTsKIGJvb2wgaXNTdGFydE9mV29yZChj
b25zdCBWaXNpYmxlUG9zaXRpb24mKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvVGV4dEJvdW5kYXJpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1RleHRCb3VuZGFyaWVzLmgJKHJldmlzaW9uIDI0OTYwNykKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvVGV4dEJvdW5kYXJpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDcs
NyArNDcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgdm9pZCBmaW5kV29yZEJvdW5k
YXJ5KFN0cmluZ1ZpZXcsIGludCBwb3NpdGlvbiwgaW50KiBzdGFydCwgaW50KiBlbmQpOwogICAg
IHZvaWQgZmluZEVuZFdvcmRCb3VuZGFyeShTdHJpbmdWaWV3LCBpbnQgcG9zaXRpb24sIGludCog
ZW5kKTsKLSAgICBpbnQgZmluZE5leHRXb3JkRnJvbUluZGV4KFN0cmluZ1ZpZXcsIGludCBwb3Np
dGlvbiwgYm9vbCBmb3J3YXJkKTsKKworICAgIGVudW0gY2xhc3MgTmV4dFdvcmREaXJlY3Rpb24g
eyBGb3J3YXJkLCBCYWNrd2FyZCB9OworICAgIGVudW0gY2xhc3MgTmV4dFdvcmRNb2RlSW5JT1Mg
eyBMZWdhY3lTdG9wQmVmb3JlV29yZCwgU3RvcEFmdGVyV29yZCB9OworICAgIGludCBmaW5kTmV4
dFdvcmRGcm9tSW5kZXgoU3RyaW5nVmlldywgaW50IHBvc2l0aW9uLCBOZXh0V29yZERpcmVjdGlv
biwgTmV4dFdvcmRNb2RlSW5JT1MgPSBOZXh0V29yZE1vZGVJbklPUzo6TGVnYWN5U3RvcEJlZm9y
ZVdvcmQpOwogCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1Rl
eHRCb3VuZGFyaWVzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tCShyZXZpc2lvbiAyNDk2MDcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Qm91bmRhcmllcy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMjI5LDExICsyMjksMTIgQEAgdm9pZCBmaW5kRW5kV29yZEJvdW5kYXJ5KFN0cmluZ1ZpZXcg
dGV4dAogICAgIGZpbmRXb3JkQm91bmRhcnkodGV4dCwgcG9zaXRpb24sICZzdGFydCwgZW5kKTsK
IH0KIAotaW50IGZpbmROZXh0V29yZEZyb21JbmRleChTdHJpbmdWaWV3IHRleHQsIGludCBwb3Np
dGlvbiwgYm9vbCBmb3J3YXJkKQoraW50IGZpbmROZXh0V29yZEZyb21JbmRleChTdHJpbmdWaWV3
IHRleHQsIGludCBwb3NpdGlvbiwgTmV4dFdvcmREaXJlY3Rpb24gZGlyZWN0aW9uLCBOZXh0V29y
ZE1vZGVJbklPUyB3aGl0ZXNwYWNlTW9kZUluSU9TKQogeyAgIAogI2lmIFVTRShBUFBLSVQpCisg
ICAgVU5VU0VEX1BBUkFNKHdoaXRlc3BhY2VNb2RlSW5JT1MpOwogICAgIE5TQXR0cmlidXRlZFN0
cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0
V2l0aFN0cmluZzp0ZXh0LmNyZWF0ZU5TU3RyaW5nV2l0aG91dENvcHlpbmcoKS5nZXQoKV07Ci0g
ICAgaW50IHJlc3VsdCA9IFthdHRyaWJ1dGVkU3RyaW5nIG5leHRXb3JkRnJvbUluZGV4OnBvc2l0
aW9uIGZvcndhcmQ6Zm9yd2FyZF07CisgICAgaW50IHJlc3VsdCA9IFthdHRyaWJ1dGVkU3RyaW5n
IG5leHRXb3JkRnJvbUluZGV4OnBvc2l0aW9uIGZvcndhcmQ6ZGlyZWN0aW9uID09IE5leHRXb3Jk
RGlyZWN0aW9uOjpGb3J3YXJkXTsKICAgICBbYXR0cmlidXRlZFN0cmluZyByZWxlYXNlXTsKICAg
ICByZXR1cm4gcmVzdWx0OwogI2Vsc2UKQEAgLTI0MywxNCArMjQ0LDMxIEBAIGludCBmaW5kTmV4
dFdvcmRGcm9tSW5kZXgoU3RyaW5nVmlldyB0ZXgKICAgICBpbnQgcG9zID0gcG9zaXRpb247CiAg
ICAgVUJyZWFrSXRlcmF0b3IqIGJvdW5kYXJ5ID0gd29yZEJyZWFrSXRlcmF0b3IodGV4dCk7CiAg
ICAgaWYgKGJvdW5kYXJ5KSB7Ci0gICAgICAgIGlmIChmb3J3YXJkKSB7CisgICAgICAgIGlmIChk
aXJlY3Rpb24gPT0gTmV4dFdvcmREaXJlY3Rpb246OkZvcndhcmQpIHsKKyAgICAgICAgICAgIGlm
ICh3aGl0ZXNwYWNlTW9kZUluSU9TID09IE5leHRXb3JkTW9kZUluSU9TOjpTdG9wQWZ0ZXJXb3Jk
KSB7CisgICAgICAgICAgICAgICAgd2hpbGUgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihwb3MpIDwg
dGV4dC5sZW5ndGgoKSAmJiBpc1dvcmREZWxpbWl0aW5nQ2hhcmFjdGVyKHRleHRbcG9zXSkpIHsK
KyAgICAgICAgICAgICAgICAgICAgcG9zID0gdWJya19mb2xsb3dpbmcoYm91bmRhcnksIHBvcyk7
CisgICAgICAgICAgICAgICAgICAgIGlmIChwb3MgPT0gVUJSS19ET05FKQorICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRleHQubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQogICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgIHBvcyA9IHVicmtf
Zm9sbG93aW5nKGJvdW5kYXJ5LCBwb3MpOwogICAgICAgICAgICAgICAgIGlmIChwb3MgPT0gVUJS
S19ET05FKQotICAgICAgICAgICAgICAgICAgICBwb3MgPSB0ZXh0Lmxlbmd0aCgpOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdGV4dC5sZW5ndGgoKTsKICAgICAgICAgICAgIH0gd2hpbGUg
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihwb3MpIDwgdGV4dC5sZW5ndGgoKSAmJiAocG9zID09IDAg
fHwgIWlzU2tpcENoYXJhY3Rlcih0ZXh0W3BvcyAtIDFdKSkgJiYgaXNTa2lwQ2hhcmFjdGVyKHRl
eHRbcG9zXSkpOworCisgICAgICAgICAgICAvLyBJQ1Ugd291bGQgc2tpcCB0aGUgdHJhaWxpbmcg
d2hpdGVzcGFjZS4gR28gYmFjay4KKyAgICAgICAgICAgIGlmICh3aGl0ZXNwYWNlTW9kZUluSU9T
ID09IE5leHRXb3JkTW9kZUluSU9TOjpTdG9wQWZ0ZXJXb3JkICYmIGlzV29yZERlbGltaXRpbmdD
aGFyYWN0ZXIodGV4dFtwb3MgLSAxXSkpCisgICAgICAgICAgICAgICAgcG9zID0gdWJya19wcmVj
ZWRpbmcoYm91bmRhcnksIHBvcyk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICBpZiAod2hpdGVzcGFjZU1vZGVJbklPUyA9PSBOZXh0V29yZE1vZGVJbklPUzo6U3RvcEFm
dGVyV29yZCAmJiBwb3MgJiYgaXNXb3JkRGVsaW1pdGluZ0NoYXJhY3Rlcih0ZXh0W3BvcyAtIDFd
KSkgeworICAgICAgICAgICAgICAgIHBvcyA9IHVicmtfcHJlY2VkaW5nKGJvdW5kYXJ5LCBwb3Mp
OworICAgICAgICAgICAgICAgIGlmIChwb3MgPT0gVUJSS19ET05FKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgZG8gewogICAgICAg
ICAgICAgICAgIHBvcyA9IHVicmtfcHJlY2VkaW5nKGJvdW5kYXJ5LCBwb3MpOwogICAgICAgICAg
ICAgICAgIGlmIChwb3MgPT0gVUJSS19ET05FKQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ5NjA3KQor
KysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTktMDktMDYgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
T3B0aW9uICsgYXJyb3cgbW92ZXMgY2FyZXQgcGFzdCB3aGl0ZXNwYWNlIG9uIGlPUworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNTc1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSBuZXcgdGVz
dCBmb3IgbW92aW5nIGNhcmV0IGJ5IHdvcmQgZ3JhbnVsYXJpdHkgb24gaU9TLgorCisgICAgICAg
ICogZWRpdGluZy9zZWxlY3Rpb24vaW9zL21vdmUtYnktd29yZC13aXRoLWtleWJvYXJkLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vaW9zL21vdmUtYnkt
d29yZC13aXRoLWtleWJvYXJkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0
aW9uL2lvcy9zZWxlY3Qtbm9uLWVkaXRhYmxlLXRleHQtdXNpbmcta2V5Ym9hcmQtZXhwZWN0ZWQu
dHh0OiBSZWJhc2VsaW5lZC4KKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9pb3Mvc2VsZWN0
LW5vbi1lZGl0YWJsZS10ZXh0LXVzaW5nLWtleWJvYXJkLmh0bWw6IFVwZGF0ZWQgdGhlIGV4cGVj
dGVkCisgICAgICAgIHNlbGVjdGlvbiBzdHJpbmcgZHVlIHRvIHRoZSBiZWhhdmlvciBjaGFuZ2Uu
IEFsc28gZml4ZWQgYSBidWcgdGhhdCBzb21lIHRlc3QgY2FzZXMgd2VyZQorICAgICAgICBub3Qg
d2FpdGluZyBmb3IgYSBzZWNvbmRhcnkgc2VsZWN0aW9uY2hhbmdlIGV2ZW50IHRoYXQgaGFwcGVu
cyBhZnRlciBhbiBleHRyYSBzZWxlY3Rpb24KKyAgICAgICAgdXBkYXRlIHdpdGggY2hhcmFjdGVy
IGdyYW51bGFyaXR5IGludHJvZHVjZWQgaW4gcjI0NzUyNC4KKwogMjAxOS0wOS0wNiAgRGV2aW4g
Um91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogQ1NT
IEZvcm1hdHRlcjogdGhlIGNsb3NpbmcgfSBvZiBuZXN0ZWQgQG1lZGlhIGFyZW4ndCBpbmRlbnRl
ZApJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL21vdmUtYnktd29yZC13
aXRoLWtleWJvYXJkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0
aW5nL3NlbGVjdGlvbi9pb3MvbW92ZS1ieS13b3JkLXdpdGgta2V5Ym9hcmQtZXhwZWN0ZWQudHh0
CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9tb3Zl
LWJ5LXdvcmQtd2l0aC1rZXlib2FyZC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw0MjMgQEAKK1RoaXMgdGVzdHMgbW92aW5nIHRoZSBjYXJldCB3aXRoIHdvcmQgZ3JhbnVs
YXJpdHkgb24gaU9TLgorV2ViS2l0IHNob3VsZCBzdG9wIGF0IHRoZSBlbmQgb2YgZWFjaCB3b3Jk
IGJlZm9yZSB3aGl0ZXNwYWNlIHdoZW4gbW92aW5nIGZvcndhcmRzLCBhbmQgYWZ0ZXIgd2hpdGVz
cGFjZSB3aGVuIG1vdmluZyBiYWNrd2FyZHMsCitUaGUgZW1wdHkgbGluZSBzaG91bGQgYmUgc2tp
cHBlZCBpbiBlaXRoZXIgZGlyZWN0aW9uLgorCitCZWZvcmUgbW92aW5nIGZvcndhcmRzOgorfCAi
CisgICAgIgorfCA8ZGl2PgorfCAgICI8I3NlbGVjdGlvbi1jYXJldD5oZWxsbyB3b3JsZCIKK3wg
IgorICAgICIKK3wgPGJyPgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJyZWQsIGdyZWVuLCAm
IGJsdWUuIgorfCAiCisiCisKK0FmdGVyIG1vdmluZyB0byB0aGUgcmlnaHQgYnkgd29yZCAoMSk6
Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgImhlbGxvPCNzZWxlY3Rpb24tY2FyZXQ+IHdvcmxk
IgorfCAiCisgICAgIgorfCA8YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgInJlZCwgZ3Jl
ZW4sICYgYmx1ZS4iCit8ICIKKyIKKworQWZ0ZXIgbW92aW5nIHRvIHRoZSByaWdodCBieSB3b3Jk
ICgyKToKK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAiaGVsbG8gd29ybGQ8I3NlbGVjdGlvbi1j
YXJldD4iCit8ICIKKyAgICAiCit8IDxicj4KK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAicmVk
LCBncmVlbiwgJiBibHVlLiIKK3wgIgorIgorCitBZnRlciBtb3ZpbmcgdG8gdGhlIHJpZ2h0IGJ5
IHdvcmQgKDMpOgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJoZWxsbyB3b3JsZCIKK3wgIgor
ICAgICIKK3wgPGJyPgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJyZWQsPCNzZWxlY3Rpb24t
Y2FyZXQ+IGdyZWVuLCAmIGJsdWUuIgorfCAiCisiCisKK0FmdGVyIG1vdmluZyB0byB0aGUgcmln
aHQgYnkgd29yZCAoNCk6Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgImhlbGxvIHdvcmxkIgor
fCAiCisgICAgIgorfCA8YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgInJlZCwgZ3JlZW4s
PCNzZWxlY3Rpb24tY2FyZXQ+ICYgYmx1ZS4iCit8ICIKKyIKKworQWZ0ZXIgbW92aW5nIHRvIHRo
ZSByaWdodCBieSB3b3JkICg1KToKK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAiaGVsbG8gd29y
bGQiCit8ICIKKyAgICAiCit8IDxicj4KK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAicmVkLCBn
cmVlbiwgJjwjc2VsZWN0aW9uLWNhcmV0PiBibHVlLiIKK3wgIgorIgorCitBZnRlciBtb3Zpbmcg
dG8gdGhlIHJpZ2h0IGJ5IHdvcmQgKDYpOgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJoZWxs
byB3b3JsZCIKK3wgIgorICAgICIKK3wgPGJyPgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJy
ZWQsIGdyZWVuLCAmIGJsdWUuPCNzZWxlY3Rpb24tY2FyZXQ+IgorfCAiCisiCisKK0JlZm9yZSBt
b3ZpbmcgYmFja3dhcmRzOgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJoZWxsbyB3b3JsZCIK
K3wgIgorICAgICIKK3wgPGJyPgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJyZWQsIGdyZWVu
LCAmIGJsdWUuPCNzZWxlY3Rpb24tY2FyZXQ+IgorfCAiCisiCisKK0FmdGVyIG1vdmluZyB0byB0
aGUgbGVmdCBieSB3b3JkICgxKToKK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAiaGVsbG8gd29y
bGQiCit8ICIKKyAgICAiCit8IDxicj4KK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAicmVkLCBn
cmVlbiwgJiA8I3NlbGVjdGlvbi1jYXJldD5ibHVlLiIKK3wgIgorIgorCitBZnRlciBtb3Zpbmcg
dG8gdGhlIGxlZnQgYnkgd29yZCAoMik6Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgImhlbGxv
IHdvcmxkIgorfCAiCisgICAgIgorfCA8YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgInJl
ZCwgZ3JlZW4sIDwjc2VsZWN0aW9uLWNhcmV0PiYgYmx1ZS4iCit8ICIKKyIKKworQWZ0ZXIgbW92
aW5nIHRvIHRoZSBsZWZ0IGJ5IHdvcmQgKDMpOgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJo
ZWxsbyB3b3JsZCIKK3wgIgorICAgICIKK3wgPGJyPgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAg
ICJyZWQsIDwjc2VsZWN0aW9uLWNhcmV0PmdyZWVuLCAmIGJsdWUuIgorfCAiCisiCisKK0FmdGVy
IG1vdmluZyB0byB0aGUgbGVmdCBieSB3b3JkICg0KToKK3wgIgorICAgICIKK3wgPGRpdj4KK3wg
ICAiaGVsbG8gd29ybGQiCit8ICIKKyAgICAiCit8IDxicj4KK3wgIgorICAgICIKK3wgPGRpdj4K
K3wgICAiPCNzZWxlY3Rpb24tY2FyZXQ+cmVkLCBncmVlbiwgJiBibHVlLiIKK3wgIgorIgorCitB
ZnRlciBtb3ZpbmcgdG8gdGhlIGxlZnQgYnkgd29yZCAoNSk6Cit8ICIKKyAgICAiCit8IDxkaXY+
Cit8ICAgImhlbGxvIDwjc2VsZWN0aW9uLWNhcmV0PndvcmxkIgorfCAiCisgICAgIgorfCA8YnI+
Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgInJlZCwgZ3JlZW4sICYgYmx1ZS4iCit8ICIKKyIK
KworQWZ0ZXIgbW92aW5nIHRvIHRoZSBsZWZ0IGJ5IHdvcmQgKDYpOgorfCAiCisgICAgIgorfCA8
ZGl2PgorfCAgICI8I3NlbGVjdGlvbi1jYXJldD5oZWxsbyB3b3JsZCIKK3wgIgorICAgICIKK3wg
PGJyPgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJyZWQsIGdyZWVuLCAmIGJsdWUuIgorfCAi
CisiCisKK0JlZm9yZSBleHRlbmRpbmcgZm9yd2FyZHM6Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8
ICAgIjwjc2VsZWN0aW9uLWNhcmV0PmhlbGxvIHdvcmxkIgorfCAiCisgICAgIgorfCA8YnI+Cit8
ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgInJlZCwgZ3JlZW4sICYgYmx1ZS4iCit8ICIKKyIKKwor
QWZ0ZXIgZXh0ZW5kaW5nIHRvIHRoZSByaWdodCBieSB3b3JkICgxKToKK3wgIgorICAgICIKK3wg
PGRpdj4KK3wgICAiPCNzZWxlY3Rpb24tYW5jaG9yPmhlbGxvPCNzZWxlY3Rpb24tZm9jdXM+IHdv
cmxkIgorfCAiCisgICAgIgorfCA8YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgInJlZCwg
Z3JlZW4sICYgYmx1ZS4iCit8ICIKKyIKKworQWZ0ZXIgZXh0ZW5kaW5nIHRvIHRoZSByaWdodCBi
eSB3b3JkICgyKToKK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAiPCNzZWxlY3Rpb24tYW5jaG9y
PmhlbGxvIHdvcmxkPCNzZWxlY3Rpb24tZm9jdXM+IgorfCAiCisgICAgIgorfCA8YnI+Cit8ICIK
KyAgICAiCit8IDxkaXY+Cit8ICAgInJlZCwgZ3JlZW4sICYgYmx1ZS4iCit8ICIKKyIKKworQWZ0
ZXIgZXh0ZW5kaW5nIHRvIHRoZSByaWdodCBieSB3b3JkICgzKToKK3wgIgorICAgICIKK3wgPGRp
dj4KK3wgICAiPCNzZWxlY3Rpb24tYW5jaG9yPmhlbGxvIHdvcmxkIgorfCAiCisgICAgIgorfCA8
YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgInJlZCw8I3NlbGVjdGlvbi1mb2N1cz4gZ3Jl
ZW4sICYgYmx1ZS4iCit8ICIKKyIKKworQWZ0ZXIgZXh0ZW5kaW5nIHRvIHRoZSByaWdodCBieSB3
b3JkICg0KToKK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAiPCNzZWxlY3Rpb24tYW5jaG9yPmhl
bGxvIHdvcmxkIgorfCAiCisgICAgIgorfCA8YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAg
InJlZCwgZ3JlZW4sPCNzZWxlY3Rpb24tZm9jdXM+ICYgYmx1ZS4iCit8ICIKKyIKKworQWZ0ZXIg
ZXh0ZW5kaW5nIHRvIHRoZSByaWdodCBieSB3b3JkICg1KToKK3wgIgorICAgICIKK3wgPGRpdj4K
K3wgICAiPCNzZWxlY3Rpb24tYW5jaG9yPmhlbGxvIHdvcmxkIgorfCAiCisgICAgIgorfCA8YnI+
Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgInJlZCwgZ3JlZW4sICY8I3NlbGVjdGlvbi1mb2N1
cz4gYmx1ZS4iCit8ICIKKyIKKworQWZ0ZXIgZXh0ZW5kaW5nIHRvIHRoZSByaWdodCBieSB3b3Jk
ICg2KToKK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAiPCNzZWxlY3Rpb24tYW5jaG9yPmhlbGxv
IHdvcmxkIgorfCAiCisgICAgIgorfCA8YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgInJl
ZCwgZ3JlZW4sICYgYmx1ZS48I3NlbGVjdGlvbi1mb2N1cz4iCit8ICIKKyIKKworQmVmb3JlIGV4
dGVuZGluZyBiYWNrd2FyZHM6Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgImhlbGxvIHdvcmxk
IgorfCAiCisgICAgIgorfCA8YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgInJlZCwgZ3Jl
ZW4sICYgYmx1ZS48I3NlbGVjdGlvbi1jYXJldD4iCit8ICIKKyIKKworQWZ0ZXIgZXh0ZW5kaW5n
IHRvIHRoZSBsZWZ0IGJ5IHdvcmQgKDEpOgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJoZWxs
byB3b3JsZCIKK3wgIgorICAgICIKK3wgPGJyPgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJy
ZWQsIGdyZWVuLCAmIDwjc2VsZWN0aW9uLWZvY3VzPmJsdWUuPCNzZWxlY3Rpb24tYW5jaG9yPiIK
K3wgIgorIgorCitBZnRlciBleHRlbmRpbmcgdG8gdGhlIGxlZnQgYnkgd29yZCAoMik6Cit8ICIK
KyAgICAiCit8IDxkaXY+Cit8ICAgImhlbGxvIHdvcmxkIgorfCAiCisgICAgIgorfCA8YnI+Cit8
ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgInJlZCwgZ3JlZW4sIDwjc2VsZWN0aW9uLWZvY3VzPiYg
Ymx1ZS48I3NlbGVjdGlvbi1hbmNob3I+IgorfCAiCisiCisKK0FmdGVyIGV4dGVuZGluZyB0byB0
aGUgbGVmdCBieSB3b3JkICgzKToKK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAiaGVsbG8gd29y
bGQiCit8ICIKKyAgICAiCit8IDxicj4KK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAicmVkLCA8
I3NlbGVjdGlvbi1mb2N1cz5ncmVlbiwgJiBibHVlLjwjc2VsZWN0aW9uLWFuY2hvcj4iCit8ICIK
KyIKKworQWZ0ZXIgZXh0ZW5kaW5nIHRvIHRoZSBsZWZ0IGJ5IHdvcmQgKDQpOgorfCAiCisgICAg
IgorfCA8ZGl2PgorfCAgICJoZWxsbyB3b3JsZCIKK3wgIgorICAgICIKK3wgPGJyPgorfCAiCisg
ICAgIgorfCA8ZGl2PgorfCAgICI8I3NlbGVjdGlvbi1mb2N1cz5yZWQsIGdyZWVuLCAmIGJsdWUu
PCNzZWxlY3Rpb24tYW5jaG9yPiIKK3wgIgorIgorCitBZnRlciBleHRlbmRpbmcgdG8gdGhlIGxl
ZnQgYnkgd29yZCAoNSk6Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgImhlbGxvIDwjc2VsZWN0
aW9uLWZvY3VzPndvcmxkIgorfCAiCisgICAgIgorfCA8YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+
Cit8ICAgInJlZCwgZ3JlZW4sICYgYmx1ZS48I3NlbGVjdGlvbi1hbmNob3I+IgorfCAiCisiCisK
K0FmdGVyIGV4dGVuZGluZyB0byB0aGUgbGVmdCBieSB3b3JkICg2KToKK3wgIgorICAgICIKK3wg
PGRpdj4KK3wgICAiPCNzZWxlY3Rpb24tZm9jdXM+aGVsbG8gd29ybGQiCit8ICIKKyAgICAiCit8
IDxicj4KK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAicmVkLCBncmVlbiwgJiBibHVlLjwjc2Vs
ZWN0aW9uLWFuY2hvcj4iCit8ICIKKyIKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0
aW9uL2lvcy9tb3ZlLWJ5LXdvcmQtd2l0aC1rZXlib2FyZC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9tb3ZlLWJ5LXdvcmQtd2l0aC1rZXlib2Fy
ZC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lv
cy9tb3ZlLWJ5LXdvcmQtd2l0aC1rZXlib2FyZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNzkgQEAKKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZs
ZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIG5hbWU9InZp
ZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSwgbWF4
aW11bS1zY2FsZT0xLCBzaHJpbmstdG8tZml0PW5vIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvZHVtcC1hcy1tYXJrdXAuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworTWFya3Vw
LmRlc2NyaXB0aW9uKGBUaGlzIHRlc3RzIG1vdmluZyB0aGUgY2FyZXQgd2l0aCB3b3JkIGdyYW51
bGFyaXR5IG9uIGlPUy4KK1dlYktpdCBzaG91bGQgc3RvcCBhdCB0aGUgZW5kIG9mIGVhY2ggd29y
ZCBiZWZvcmUgd2hpdGVzcGFjZSB3aGVuIG1vdmluZyBmb3J3YXJkcywgYW5kIGFmdGVyIHdoaXRl
c3BhY2Ugd2hlbiBtb3ZpbmcgYmFja3dhcmRzLAorVGhlIGVtcHR5IGxpbmUgc2hvdWxkIGJlIHNr
aXBwZWQgaW4gZWl0aGVyIGRpcmVjdGlvbi5gKTsKK01hcmt1cC5ub0F1dG9EdW1wKCk7CitNYXJr
dXAud2FpdFVudGlsRG9uZSgpOworCithc3luYyBmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBj
b25zdCBlZGl0b3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yJyk7CisKKyAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIGF3YWl0IFVJSGVscGVyLmFjdGl2YXRlRWxl
bWVudEFuZFdhaXRGb3JJbnB1dFNlc3Npb24oZWRpdG9yKTsKKworICAgIGlmICghd2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICAgICAgTWFya3VwLmR1bXAoZWRpdG9yLCAnTWFya3VwJyk7CisgICAg
ICAgIE1hcmt1cC5ub3RpZnlEb25lKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBn
ZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbihlZGl0b3IsIDApOworICAgIE1hcmt1cC5kdW1wKGVk
aXRvciwgJ0JlZm9yZSBtb3ZpbmcgZm9yd2FyZHMnKTsKKworICAgIGNvbnN0IG1vdmVDb3VudCA9
IDY7CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1vdmVDb3VudDsgaSsrKSB7CisgICAgICAg
IGF3YWl0IFVJSGVscGVyLmtleURvd24oJ3JpZ2h0QXJyb3cnLCBbJ2FsdEtleSddKTsKKyAgICAg
ICAgYXdhaXQgVUlIZWxwZXIuZW5zdXJlUHJlc2VudGF0aW9uVXBkYXRlKCk7CisgICAgICAgIE1h
cmt1cC5kdW1wKGVkaXRvciwgYEFmdGVyIG1vdmluZyB0byB0aGUgcmlnaHQgYnkgd29yZCAoJHtp
ICsgMX0pYCk7CisgICAgfQorCisgICAgZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24oZWRpdG9y
LCBlZGl0b3IuY2hpbGROb2Rlcy5sZW5ndGgpOworICAgIE1hcmt1cC5kdW1wKGVkaXRvciwgJ0Jl
Zm9yZSBtb3ZpbmcgYmFja3dhcmRzJyk7CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1vdmVD
b3VudDsgaSsrKSB7CisgICAgICAgIGF3YWl0IFVJSGVscGVyLmtleURvd24oJ2xlZnRBcnJvdycs
IFsnYWx0S2V5J10pOworICAgICAgICBhd2FpdCBVSUhlbHBlci5lbnN1cmVQcmVzZW50YXRpb25V
cGRhdGUoKTsKKyAgICAgICAgTWFya3VwLmR1bXAoZWRpdG9yLCBgQWZ0ZXIgbW92aW5nIHRvIHRo
ZSBsZWZ0IGJ5IHdvcmQgKCR7aSArIDF9KWApOworICAgIH0KKworICAgIGdldFNlbGVjdGlvbigp
LnNldFBvc2l0aW9uKGVkaXRvciwgMCk7CisgICAgTWFya3VwLmR1bXAoZWRpdG9yLCAnQmVmb3Jl
IGV4dGVuZGluZyBmb3J3YXJkcycpOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtb3ZlQ291
bnQ7IGkrKykgeworICAgICAgICBhd2FpdCBVSUhlbHBlci5rZXlEb3duKCdyaWdodEFycm93Jywg
WydzaGlmdEtleScsICdhbHRLZXknXSk7CisgICAgICAgIGF3YWl0IFVJSGVscGVyLmVuc3VyZVBy
ZXNlbnRhdGlvblVwZGF0ZSgpOworICAgICAgICBNYXJrdXAuZHVtcChlZGl0b3IsIGBBZnRlciBl
eHRlbmRpbmcgdG8gdGhlIHJpZ2h0IGJ5IHdvcmQgKCR7aSArIDF9KWApOworICAgIH0KKworICAg
IGdldFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKGVkaXRvciwgZWRpdG9yLmNoaWxkTm9kZXMubGVu
Z3RoKTsKKyAgICBNYXJrdXAuZHVtcChlZGl0b3IsICdCZWZvcmUgZXh0ZW5kaW5nIGJhY2t3YXJk
cycpOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtb3ZlQ291bnQ7IGkrKykgeworICAgICAg
ICBhd2FpdCBVSUhlbHBlci5rZXlEb3duKCdsZWZ0QXJyb3cnLCBbJ3NoaWZ0S2V5JywgJ2FsdEtl
eSddKTsKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIuZW5zdXJlUHJlc2VudGF0aW9uVXBkYXRlKCk7
CisgICAgICAgIE1hcmt1cC5kdW1wKGVkaXRvciwgYEFmdGVyIGV4dGVuZGluZyB0byB0aGUgbGVm
dCBieSB3b3JkICgke2kgKyAxfSlgKTsKKyAgICB9CisKKyAgICBNYXJrdXAubm90aWZ5RG9uZSgp
OworfQorCitvbmxvYWQgPSBydW5UZXN0OworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxk
aXYgaWQ9ImVkaXRvciIgY29udGVudGVkaXRhYmxlPgorICAgIDxkaXY+aGVsbG8gd29ybGQ8L2Rp
dj4KKyAgICA8YnI+CisgICAgPGRpdj5yZWQsIGdyZWVuLCAmIGJsdWUuPC9kaXY+Cis8L2Rpdj4K
KzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lv
cy9zZWxlY3Qtbm9uLWVkaXRhYmxlLXRleHQtdXNpbmcta2V5Ym9hcmQtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9zZWxlY3Qtbm9u
LWVkaXRhYmxlLXRleHQtdXNpbmcta2V5Ym9hcmQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNDk2
MDcpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3Mvc2VsZWN0LW5vbi1lZGl0
YWJsZS10ZXh0LXVzaW5nLWtleWJvYXJkLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MTEsNyArMTEsNyBAQCBQcmVzcyBTaGlmdCArIGxlZnQgYXJyb3cgdG8gc2VsZWN0IHRoZSBwCiBQ
QVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJIZXIiCiAKIFByZXNzIFNo
aWZ0ICsgT3B0aW9uICsgcmlnaHQgYXJyb3cgdG8gc2VsZWN0IHRvIHRoZSBlbmQgb2YgdGhlIHdv
cmQ6Ci1QQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJIZXJlJ3MgIgor
UEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiSGVyZSdzIgogCiBQcmVz
cyBTaGlmdCArIE9wdGlvbiArIGxlZnQgYXJyb3cgdG8gc2VsZWN0IHRvIHRoZSBiZWdpbm5pbmcg
b2YgdGhlIHdvcmQ6CiBQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJU
aGUiCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3Mvc2VsZWN0LW5vbi1l
ZGl0YWJsZS10ZXh0LXVzaW5nLWtleWJvYXJkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL3NlbGVjdC1ub24tZWRpdGFibGUtdGV4dC11c2luZy1r
ZXlib2FyZC5odG1sCShyZXZpc2lvbiAyNDk2MDcpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3Nl
bGVjdGlvbi9pb3Mvc2VsZWN0LW5vbi1lZGl0YWJsZS10ZXh0LXVzaW5nLWtleWJvYXJkLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgYXN5bmMgZnVuY3Rpb24gdGVzdEV4dGVu
ZFNlbGVjdGlvblRvRW5kTwogCiAgICAgZGVidWcoIjxicj5QcmVzcyBTaGlmdCArIE9wdGlvbiAr
IHJpZ2h0IGFycm93IHRvIHNlbGVjdCB0byB0aGUgZW5kIG9mIHRoZSB3b3JkOiIpOwogICAgIGF3
YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiB3aW5kb3cudGVz
dFJ1bm5lciAmJiBVSUhlbHBlci5rZXlEb3duKCJyaWdodEFycm93IiwgWyJzaGlmdEtleSIsICJh
bHRLZXkiXSkgLCBkb2N1bWVudCwgInNlbGVjdGlvbmNoYW5nZSIpOwotICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiSGVyZSdzICIp
OworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3Ry
aW5nKCkiLCAiSGVyZSdzIik7CiB9CiAKIGFzeW5jIGZ1bmN0aW9uIHRlc3RFeHRlbmRTZWxlY3Rp
b25Ub0JlZ2lubmluZ09mV29yZCgpCkBAIC03OSw2ICs3OSwxMyBAQCBhc3luYyBmdW5jdGlvbiB0
ZXN0RXh0ZW5kU2VsZWN0aW9uVG9CZWdpCiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJUaGUgbWlzZml0cy4iKTsKIH0KIAorYXN5
bmMgZnVuY3Rpb24gd2FpdEZvclNlY29uZGFyeVByZXNlbnRhdGlvblVwZGF0ZUlmTmVlZGVkKCkK
K3sKKyAgICAvLyBUaGVyZSBtaWdodCBiZSBhIHNlY29uZGFyeSBzZWxlY3Rpb25jaGFuZ2UgZXZl
bnQgYWZ0ZXIgbW92aW5nIGJ5IHBhcmFncmFwaCBib3VuZGFyeS4gU2VlIHdlYmtpdC5vcmcvYi8x
OTk4NTEKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIGF3YWl0IFVJSGVscGVy
LmVuc3VyZVByZXNlbnRhdGlvblVwZGF0ZSgpOworfQorCiBhc3luYyBmdW5jdGlvbiB0ZXN0RXh0
ZW5kU2VsZWN0aW9uVXAoKQogewogICAgIGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdh
aXRGb3JFdmVudCgoKSA9PiBzZWxlY3Rpb24uc2V0QmFzZUFuZEV4dGVudChwYXJhZ3JhcGhzWzFd
LmZpcnN0Q2hpbGQsIDEsIHBhcmFncmFwaHNbMV0uZmlyc3RDaGlsZCwgMCksIGRvY3VtZW50LCAi
c2VsZWN0aW9uY2hhbmdlIik7CkBAIC04Niw2ICs5Myw3IEBAIGFzeW5jIGZ1bmN0aW9uIHRlc3RF
eHRlbmRTZWxlY3Rpb25VcCgpCiAgICAgZGVidWcoIjxicj5QcmVzcyBTaGlmdCArIHVwIGFycm93
IHRvIHNlbGVjdCB1cDoiKTsKICAgICBhd2FpdCBVSUhlbHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0
Rm9yRXZlbnQoKCkgPT4gd2luZG93LnRlc3RSdW5uZXIgJiYgVUlIZWxwZXIua2V5RG93bigidXBB
cnJvdyIsIFsic2hpZnRLZXkiXSkgLCBkb2N1bWVudCwgInNlbGVjdGlvbmNoYW5nZSIpOwogICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCki
LCAiSGVyZSdzIHRvIHRoZSBjcmF6eSBvbmVzLlxuXG5UIik7CisgICAgYXdhaXQgd2FpdEZvclNl
Y29uZGFyeVByZXNlbnRhdGlvblVwZGF0ZUlmTmVlZGVkKCk7CiB9CiAKIGFzeW5jIGZ1bmN0aW9u
IHRlc3RFeHRlbmRTZWxlY3Rpb25Eb3duKCkKQEAgLTk1LDYgKzEwMyw3IEBAIGFzeW5jIGZ1bmN0
aW9uIHRlc3RFeHRlbmRTZWxlY3Rpb25Eb3duKCkKICAgICBkZWJ1ZygiPGJyPlByZXNzIFNoaWZ0
ICsgZG93biBhcnJvdyB0byBzZWxlY3QgZG93bjoiKTsKICAgICBhd2FpdCBVSUhlbHBlci5jYWxs
RnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gd2luZG93LnRlc3RSdW5uZXIgJiYgVUlIZWxw
ZXIua2V5RG93bigiZG93bkFycm93IiwgWyJzaGlmdEtleSJdKSAsIGRvY3VtZW50LCAic2VsZWN0
aW9uY2hhbmdlIik7CiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkudG9TdHJpbmcoKSIsICJUaGUgbWlzZml0cy5cblxuVCIpOworICAgIGF3YWl0IHdhaXRG
b3JTZWNvbmRhcnlQcmVzZW50YXRpb25VcGRhdGVJZk5lZWRlZCgpOwogfQogCiBhc3luYyBmdW5j
dGlvbiB0ZXN0RXh0ZW5kU2VsZWN0aW9uVG9FbmRPZlBhcmFncmFwaCgpCkBAIC0xMDcsNiArMTE2
LDggQEAgYXN5bmMgZnVuY3Rpb24gdGVzdEV4dGVuZFNlbGVjdGlvblRvRW5kTwogICAgIGF3YWl0
IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiB3aW5kb3cudGVzdFJ1
bm5lciAmJiBVSUhlbHBlci5rZXlEb3duKCJkb3duQXJyb3ciLCBbInNoaWZ0S2V5IiwgImFsdEtl
eSJdKSAsIGRvY3VtZW50LCAic2VsZWN0aW9uY2hhbmdlIik7CiAgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJIZXJlJ3MgdG8gdGhl
IGNyYXp5IG9uZXMuIik7CiAKKyAgICBhd2FpdCB3YWl0Rm9yU2Vjb25kYXJ5UHJlc2VudGF0aW9u
VXBkYXRlSWZOZWVkZWQoKTsKKwogICAgIHRvZ2dsZU9ubHlTaG93VGVzdENvbnRhaW5lcigpOwog
fQogCkBAIC0xMTgsOCArMTI5LDExIEBAIGFzeW5jIGZ1bmN0aW9uIHRlc3RFeHRlbmRTZWxlY3Rp
b25Ub0JlZ2kKIAogICAgIGRlYnVnKCI8YnI+UHJlc3MgU2hpZnQgKyBPcHRpb24gKyB1cCBhcnJv
dyB0byBzZWxlY3QgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgcGFyYWdyYXBoOiIpOwogICAgIGF3
YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiB3aW5kb3cudGVz
dFJ1bm5lciAmJiBVSUhlbHBlci5rZXlEb3duKCJ1cEFycm93IiwgWyJzaGlmdEtleSIsICJhbHRL
ZXkiXSkgLCBkb2N1bWVudCwgInNlbGVjdGlvbmNoYW5nZSIpOworCiAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJUaGUgcmViZWxz
LiIpOwogCisgICAgYXdhaXQgd2FpdEZvclNlY29uZGFyeVByZXNlbnRhdGlvblVwZGF0ZUlmTmVl
ZGVkKCk7CisKICAgICB0b2dnbGVPbmx5U2hvd1Rlc3RDb250YWluZXIoKTsKIH0KIApAQCAtMTMz
LDYgKzE0Nyw4IEBAIGFzeW5jIGZ1bmN0aW9uIHRlc3RFeHRlbmRTZWxlY3Rpb25Ub0VuZE8KICAg
ICBhd2FpdCBVSUhlbHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gd2luZG93
LnRlc3RSdW5uZXIgJiYgVUlIZWxwZXIua2V5RG93bigiZG93bkFycm93IiwgWyJzaGlmdEtleSIs
ICJjdHJsS2V5Il0pICwgZG9jdW1lbnQsICJzZWxlY3Rpb25jaGFuZ2UiKTsKICAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIkhlcmUn
cyB0byB0aGUgY3Jhenkgb25lcy5cblxuVGhlIG1pc2ZpdHMuXG5cblRoZSByZWJlbHMuIik7CiAK
KyAgICBhd2FpdCB3YWl0Rm9yU2Vjb25kYXJ5UHJlc2VudGF0aW9uVXBkYXRlSWZOZWVkZWQoKTsK
KwogICAgIHRvZ2dsZU9ubHlTaG93VGVzdENvbnRhaW5lcigpOwogfQogCkBAIC0xNDYsNiArMTYy
LDggQEAgYXN5bmMgZnVuY3Rpb24gdGVzdEV4dGVuZFNlbGVjdGlvblRvQmVnaQogICAgIGF3YWl0
IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiB3aW5kb3cudGVzdFJ1
bm5lciAmJiBVSUhlbHBlci5rZXlEb3duKCJ1cEFycm93IiwgWyJzaGlmdEtleSIsICJjdHJsS2V5
Il0pICwgZG9jdW1lbnQsICJzZWxlY3Rpb25jaGFuZ2UiKTsKICAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIkhlcmUncyB0byB0aGUg
Y3Jhenkgb25lcy5cblxuVGhlIG1pc2ZpdHMuIik7CiAKKyAgICBhd2FpdCB3YWl0Rm9yU2Vjb25k
YXJ5UHJlc2VudGF0aW9uVXBkYXRlSWZOZWVkZWQoKTsKKwogICAgIHRvZ2dsZU9ubHlTaG93VGVz
dENvbnRhaW5lcigpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378399</attachid>
            <date>2019-09-09 13:01:04 -0700</date>
            <delta_ts>2019-09-09 23:01:21 -0700</delta_ts>
            <desc>Fixed build more</desc>
            <filename>bug-201575-20190909130103.patch</filename>
            <type>text/plain</type>
            <size>41813</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0OTY1NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDE5LTA5LTA5ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIE9wdGlvbiArIGFycm93IG1vdmVz
IGNhcmV0IHBhc3Qgd2hpdGVzcGFjZSBvbiBpT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTU3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoZSBidWcgd2FzIGNhdXNlZCBieSBmaW5kTmV4dFdvcmRG
cm9tSW5kZXggb24gaU9TIGJlaGF2aW5nIGRpZmZlcmVudGx5IGZyb20gbWFjT1MgYW5kIFVJS2l0
IGJ5IHNraXBwaW5nCisgICAgICAgIHRyYWlsaW5nIHdoaXRlc3BhY2UgYWZ0ZXIgYSB3b3JkIHdo
ZW4gbW92aW5nIGZvcndhcmQgYW5kIG5vdCBza2lwcGluZyBsZWFkaW5nIHdoaXRlc3BhY2Ugd2hl
biBtb3ZpbmcgYmFja3dhcmQuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3
IG1vZGUgKFN0b3BBZnRlcldvcmQpIG9mIGZpbmROZXh0V29yZEZyb21JbmRleCBpbiBpT1MgdGhh
dCBiZXR0ZXIgbWF0Y2hlcworICAgICAgICB0aGUgYmVoYXZpb3Igb2YgZmluZE5leHRXb3JkRnJv
bUluZGV4IG9uIG1hY09TIGFuZCBVSUtpdCwgYW5kIHVzZSBpdCBpbiB2YXJpb3VzIG1vZGlmeSog
ZnVuY3Rpb25zIG9mCisgICAgICAgIEZyYW1lU2VsZWN0aW9uIHdoZW4gdGhlIHNlbGVjdGlvbiB1
cGRhdGUgaXMgdHJpZ2dlcmVkIGJ5IHVzZXIuCisKKyAgICAgICAgVGhlIGxlZ2FjeSBtb2RlIChM
ZWdhY3lTdG9wQmVmb3JlV29yZCkgaXMgdXNlZCBpbiBhbGwgb3RoZXIgY2FsbCBzaXRlcyBhcyB3
ZWxsIGFzIHdoZW4gbW9kaWZ5KiBmdW5jdGlvbnMKKyAgICAgICAgYXJlIGludm9sZWQgZnJvbSBh
dXRob3Igc2NyaXB0cy4KKworICAgICAgICBUZXN0OiBlZGl0aW5nL3NlbGVjdGlvbi9pb3MvbW92
ZS1ieS13b3JkLXdpdGgta2V5Ym9hcmQuaHRtbAorCisgICAgICAgICogZWRpdGluZy9GcmFtZVNl
bGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpuZXh0V29yZFdoaXRlc3BhY2VNb2RlSW5J
T1MpOiBBZGRlZC4gQSBoZWxwZXIgdG8gY29udmVydCBFVXNlclRyaWdnZXJlZCB0byBOZXh0V29y
ZE1vZGVJbklPUy4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpuZXh0V29yZFBv
c2l0aW9uRm9yUGxhdGZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246Om1v
ZGlmeUV4dGVuZGluZ1JpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpt
b2RpZnlFeHRlbmRpbmdGb3J3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9u
Ojptb2RpZnlNb3ZpbmdSaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6
bW9kaWZ5TW92aW5nRm9yd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6
bW9kaWZ5RXh0ZW5kaW5nTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6
bW9kaWZ5RXh0ZW5kaW5nQmFja3dhcmQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rp
b246Om1vZGlmeU1vdmluZ0xlZnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246
Om1vZGlmeU1vdmluZ0JhY2t3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9u
Ojptb2RpZnkpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnVwZGF0ZUFwcGVh
cmFuY2UpOgorICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaDoKKyAgICAgICAgKiBl
ZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hCdWZmZXI6
OmlzV29yZFN0YXJ0TWF0Y2ggY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVVuaXRz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByZXZpb3VzV29yZFBvc2l0aW9uQm91bmRhcnkpOgor
ICAgICAgICAoV2ViQ29yZTo6cHJldmlvdXNXb3JkUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6bmV4dFdvcmRQb3NpdGlvbkJvdW5kYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6Om5leHRXb3Jk
UG9zaXRpb24pOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVVuaXRzLmg6CisgICAgICAgICog
cGxhdGZvcm0vdGV4dC9UZXh0Qm91bmRhcmllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaW5k
TmV4dFdvcmRGcm9tSW5kZXgpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dEJvdW5kYXJp
ZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L21hYy9UZXh0Qm91bmRhcmllcy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OmZpbmROZXh0V29yZEZyb21JbmRleCk6IEFkZGVkIGEgbmV3IG1vZGUu
CisKIDIwMTktMDktMDkgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbTEZDXVtURkNdIEludHJvZHVjZSBjZWxsIHNwYWNpbmcuCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAkocmV2aXNpb24gMjQ5NjU3KQorKysgU291cmNl
L1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcx
MSwyMCArNzExLDI2IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6ZW5kRm9yUGwK
ICAgICByZXR1cm4gcG9zaXRpb25Gb3JQbGF0Zm9ybShmYWxzZSk7CiB9CiAKLVZpc2libGVQb3Np
dGlvbiBGcmFtZVNlbGVjdGlvbjo6bmV4dFdvcmRQb3NpdGlvbkZvclBsYXRmb3JtKGNvbnN0IFZp
c2libGVQb3NpdGlvbiAmb3JpZ2luYWxQb3NpdGlvbikKK3N0YXRpYyBOZXh0V29yZE1vZGVJbklP
UyBuZXh0V29yZFdoaXRlc3BhY2VNb2RlSW5JT1MoRVVzZXJUcmlnZ2VyZWQgdXNlclRyaWdnZXJl
ZCkKIHsKLSAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25BZnRlckN1cnJlbnRXb3JkID0gbmV4
dFdvcmRQb3NpdGlvbihvcmlnaW5hbFBvc2l0aW9uKTsKKyAgICByZXR1cm4gdXNlclRyaWdnZXJl
ZCA9PSBVc2VyVHJpZ2dlcmVkID8gTmV4dFdvcmRNb2RlSW5JT1M6OlN0b3BBZnRlcldvcmQgOiBO
ZXh0V29yZE1vZGVJbklPUzo6TGVnYWN5U3RvcEJlZm9yZVdvcmQ7Cit9CisKK1Zpc2libGVQb3Np
dGlvbiBGcmFtZVNlbGVjdGlvbjo6bmV4dFdvcmRQb3NpdGlvbkZvclBsYXRmb3JtKGNvbnN0IFZp
c2libGVQb3NpdGlvbiAmb3JpZ2luYWxQb3NpdGlvbiwgRVVzZXJUcmlnZ2VyZWQgdXNlclRyaWdn
ZXJlZCkKK3sKKyAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25BZnRlckN1cnJlbnRXb3JkID0g
bmV4dFdvcmRQb3NpdGlvbihvcmlnaW5hbFBvc2l0aW9uLCBuZXh0V29yZFdoaXRlc3BhY2VNb2Rl
SW5JT1ModXNlclRyaWdnZXJlZCkpOwogCiAgICAgaWYgKG1fZnJhbWUgJiYgbV9mcmFtZS0+ZWRp
dG9yKCkuYmVoYXZpb3IoKS5zaG91bGRTa2lwU3BhY2VXaGVuTW92aW5nUmlnaHQoKSkgewogICAg
ICAgICAvLyBJbiBvcmRlciB0byBza2lwIHNwYWNlcyB3aGVuIG1vdmluZyByaWdodCwgd2UgYWR2
YW5jZSBvbmUKICAgICAgICAgLy8gd29yZCBmdXJ0aGVyIGFuZCB0aGVuIG1vdmUgb25lIHdvcmQg
YmFjay4gR2l2ZW4gdGhlCiAgICAgICAgIC8vIHNlbWFudGljcyBvZiBwcmV2aW91c1dvcmRQb3Np
dGlvbigpIHRoaXMgd2lsbCBwdXQgdXMgYXQgdGhlCiAgICAgICAgIC8vIGJlZ2lubmluZyBvZiB0
aGUgd29yZCBmb2xsb3dpbmcuCi0gICAgICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkFmdGVy
U3BhY2luZ0FuZEZvbGxvd2luZ1dvcmQgPSBuZXh0V29yZFBvc2l0aW9uKHBvc2l0aW9uQWZ0ZXJD
dXJyZW50V29yZCk7CisgICAgICAgIGF1dG8gd2hpdGVzcGFjZU1vZGUgPSBuZXh0V29yZFdoaXRl
c3BhY2VNb2RlSW5JT1ModXNlclRyaWdnZXJlZCk7CisgICAgICAgIFZpc2libGVQb3NpdGlvbiBw
b3NpdGlvbkFmdGVyU3BhY2luZ0FuZEZvbGxvd2luZ1dvcmQgPSBuZXh0V29yZFBvc2l0aW9uKHBv
c2l0aW9uQWZ0ZXJDdXJyZW50V29yZCwgd2hpdGVzcGFjZU1vZGUpOwogICAgICAgICBpZiAocG9z
aXRpb25BZnRlclNwYWNpbmdBbmRGb2xsb3dpbmdXb3JkICE9IHBvc2l0aW9uQWZ0ZXJDdXJyZW50
V29yZCkKLSAgICAgICAgICAgIHBvc2l0aW9uQWZ0ZXJDdXJyZW50V29yZCA9IHByZXZpb3VzV29y
ZFBvc2l0aW9uKHBvc2l0aW9uQWZ0ZXJTcGFjaW5nQW5kRm9sbG93aW5nV29yZCk7CisgICAgICAg
ICAgICBwb3NpdGlvbkFmdGVyQ3VycmVudFdvcmQgPSBwcmV2aW91c1dvcmRQb3NpdGlvbihwb3Np
dGlvbkFmdGVyU3BhY2luZ0FuZEZvbGxvd2luZ1dvcmQsIHdoaXRlc3BhY2VNb2RlKTsKIAotICAg
ICAgICBib29sIG1vdmluZ0JhY2t3YXJkc01vdmVkUG9zaXRpb25Ub1N0YXJ0T2ZDdXJyZW50V29y
ZCA9IHBvc2l0aW9uQWZ0ZXJDdXJyZW50V29yZCA9PSBwcmV2aW91c1dvcmRQb3NpdGlvbihuZXh0
V29yZFBvc2l0aW9uKG9yaWdpbmFsUG9zaXRpb24pKTsKKyAgICAgICAgYm9vbCBtb3ZpbmdCYWNr
d2FyZHNNb3ZlZFBvc2l0aW9uVG9TdGFydE9mQ3VycmVudFdvcmQgPSBwb3NpdGlvbkFmdGVyQ3Vy
cmVudFdvcmQgPT0gcHJldmlvdXNXb3JkUG9zaXRpb24obmV4dFdvcmRQb3NpdGlvbihvcmlnaW5h
bFBvc2l0aW9uLCB3aGl0ZXNwYWNlTW9kZSksIHdoaXRlc3BhY2VNb2RlKTsKICAgICAgICAgaWYg
KG1vdmluZ0JhY2t3YXJkc01vdmVkUG9zaXRpb25Ub1N0YXJ0T2ZDdXJyZW50V29yZCkKICAgICAg
ICAgICAgIHBvc2l0aW9uQWZ0ZXJDdXJyZW50V29yZCA9IHBvc2l0aW9uQWZ0ZXJTcGFjaW5nQW5k
Rm9sbG93aW5nV29yZDsKICAgICB9CkBAIC03MzksNyArNzQ1LDcgQEAgc3RhdGljIHZvaWQgYWRq
dXN0UG9zaXRpb25Gb3JVc2VyU2VsZWN0QQogfQogI2VuZGlmCiAKLVZpc2libGVQb3NpdGlvbiBG
cmFtZVNlbGVjdGlvbjo6bW9kaWZ5RXh0ZW5kaW5nUmlnaHQoVGV4dEdyYW51bGFyaXR5IGdyYW51
bGFyaXR5KQorVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeHRlbmRpbmdS
aWdodChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIEVVc2VyVHJpZ2dlcmVkIHVzZXJUcmln
Z2VyZWQpCiB7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvcyhtX3NlbGVjdGlvbi5leHRlbnQoKSwg
bV9zZWxlY3Rpb24uYWZmaW5pdHkoKSk7CiAKQEAgLTc1NywxNSArNzYzLDE1IEBAIFZpc2libGVQ
b3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5RXgKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBXb3JkR3JhbnVsYXJpdHk6CiAgICAgICAgIGlmIChkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2Nr
KCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKQotICAgICAgICAgICAgcG9zID0gbmV4dFdvcmRQb3Np
dGlvbkZvclBsYXRmb3JtKHBvcyk7CisgICAgICAgICAgICBwb3MgPSBuZXh0V29yZFBvc2l0aW9u
Rm9yUGxhdGZvcm0ocG9zLCB1c2VyVHJpZ2dlcmVkKTsKICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgcG9zID0gcHJldmlvdXNXb3JkUG9zaXRpb24ocG9zKTsKKyAgICAgICAgICAgIHBvcyA9IHBy
ZXZpb3VzV29yZFBvc2l0aW9uKHBvcywgbmV4dFdvcmRXaGl0ZXNwYWNlTW9kZUluSU9TKHVzZXJU
cmlnZ2VyZWQpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBMaW5lQm91bmRhcnk6CiAgICAg
ICAgIGlmIChkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRS
KQotICAgICAgICAgICAgcG9zID0gbW9kaWZ5RXh0ZW5kaW5nRm9yd2FyZChncmFudWxhcml0eSk7
CisgICAgICAgICAgICBwb3MgPSBtb2RpZnlFeHRlbmRpbmdGb3J3YXJkKGdyYW51bGFyaXR5LCB1
c2VyVHJpZ2dlcmVkKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcG9zID0gbW9kaWZ5RXh0
ZW5kaW5nQmFja3dhcmQoZ3JhbnVsYXJpdHkpOworICAgICAgICAgICAgcG9zID0gbW9kaWZ5RXh0
ZW5kaW5nQmFja3dhcmQoZ3JhbnVsYXJpdHksIHVzZXJUcmlnZ2VyZWQpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6CiAgICAgY2FzZSBMaW5lR3JhbnVsYXJp
dHk6CkBAIC03NzQsNyArNzgwLDcgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjpt
b2RpZnlFeAogICAgIGNhc2UgUGFyYWdyYXBoQm91bmRhcnk6CiAgICAgY2FzZSBEb2N1bWVudEJv
dW5kYXJ5OgogICAgICAgICAvLyBGSVhNRTogaW1wbGVtZW50IGFsbCBvZiB0aGUgYWJvdmU/Ci0g
ICAgICAgIHBvcyA9IG1vZGlmeUV4dGVuZGluZ0ZvcndhcmQoZ3JhbnVsYXJpdHkpOworICAgICAg
ICBwb3MgPSBtb2RpZnlFeHRlbmRpbmdGb3J3YXJkKGdyYW51bGFyaXR5LCB1c2VyVHJpZ2dlcmVk
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEb2N1bWVudEdyYW51bGFyaXR5OgogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTc4Niw3ICs3OTIsNyBAQCBWaXNpYmxlUG9zaXRp
b24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4CiAgICAgcmV0dXJuIHBvczsKIH0KIAotVmlzaWJs
ZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeHRlbmRpbmdGb3J3YXJkKFRleHRHcmFu
dWxhcml0eSBncmFudWxhcml0eSkKK1Zpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9k
aWZ5RXh0ZW5kaW5nRm9yd2FyZChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIEVVc2VyVHJp
Z2dlcmVkIHVzZXJUcmlnZ2VyZWQpCiB7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvcyhtX3NlbGVj
dGlvbi5leHRlbnQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSk7CiAgICAgc3dpdGNoIChncmFu
dWxhcml0eSkgewpAQCAtNzk0LDcgKzgwMCw3IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVj
dGlvbjo6bW9kaWZ5RXgKICAgICAgICAgcG9zID0gcG9zLm5leHQoQ2Fubm90Q3Jvc3NFZGl0aW5n
Qm91bmRhcnkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdvcmRHcmFudWxhcml0eToKLSAg
ICAgICAgcG9zID0gbmV4dFdvcmRQb3NpdGlvbkZvclBsYXRmb3JtKHBvcyk7CisgICAgICAgIHBv
cyA9IG5leHRXb3JkUG9zaXRpb25Gb3JQbGF0Zm9ybShwb3MsIHVzZXJUcmlnZ2VyZWQpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6CiAgICAgICAgIHBvcyA9
IG5leHRTZW50ZW5jZVBvc2l0aW9uKHBvcyk7CkBAIC04MzEsNyArODM3LDcgQEAgVmlzaWJsZVBv
c2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeAogICAgIHJldHVybiBwb3M7CiB9CiAKLVZp
c2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW92aW5nUmlnaHQoVGV4dEdyYW51
bGFyaXR5IGdyYW51bGFyaXR5LCBib29sKiByZWFjaGVkQm91bmRhcnkpCitWaXNpYmxlUG9zaXRp
b24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeU1vdmluZ1JpZ2h0KFRleHRHcmFudWxhcml0eSBncmFu
dWxhcml0eSwgRVVzZXJUcmlnZ2VyZWQgdXNlclRyaWdnZXJlZCwgYm9vbCogcmVhY2hlZEJvdW5k
YXJ5KQogewogICAgIGlmIChyZWFjaGVkQm91bmRhcnkpCiAgICAgICAgICpyZWFjaGVkQm91bmRh
cnkgPSBmYWxzZTsKQEAgLTg2MSw3ICs4NjcsNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxl
Y3Rpb246Om1vZGlmeU1vCiAgICAgY2FzZSBQYXJhZ3JhcGhCb3VuZGFyeToKICAgICBjYXNlIERv
Y3VtZW50Qm91bmRhcnk6CiAgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgYWxsIG9mIHRoZSBh
Ym92ZS4KLSAgICAgICAgcG9zID0gbW9kaWZ5TW92aW5nRm9yd2FyZChncmFudWxhcml0eSwgcmVh
Y2hlZEJvdW5kYXJ5KTsKKyAgICAgICAgcG9zID0gbW9kaWZ5TW92aW5nRm9yd2FyZChncmFudWxh
cml0eSwgdXNlclRyaWdnZXJlZCwgcmVhY2hlZEJvdW5kYXJ5KTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBMaW5lQm91bmRhcnk6CiAgICAgICAgIHBvcyA9IHJpZ2h0Qm91bmRhcnlPZkxpbmUo
c3RhcnRGb3JQbGF0Zm9ybSgpLCBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCksIHJlYWNoZWRC
b3VuZGFyeSk7CkBAIC04NzMsNyArODc5LDcgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0
aW9uOjptb2RpZnlNbwogICAgIHJldHVybiBwb3M7CiB9CiAKLVZpc2libGVQb3NpdGlvbiBGcmFt
ZVNlbGVjdGlvbjo6bW9kaWZ5TW92aW5nRm9yd2FyZChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJp
dHksIGJvb2wqIHJlYWNoZWRCb3VuZGFyeSkKK1Zpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlv
bjo6bW9kaWZ5TW92aW5nRm9yd2FyZChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIEVVc2Vy
VHJpZ2dlcmVkIHVzZXJUcmlnZ2VyZWQsIGJvb2wqIHJlYWNoZWRCb3VuZGFyeSkKIHsKICAgICBp
ZiAocmVhY2hlZEJvdW5kYXJ5KQogICAgICAgICAqcmVhY2hlZEJvdW5kYXJ5ID0gZmFsc2U7CkBA
IC05MDMsNyArOTA5LDcgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlN
bwogICAgICAgICAgICAgcG9zID0gVmlzaWJsZVBvc2l0aW9uKG1fc2VsZWN0aW9uLmV4dGVudCgp
LCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKS5uZXh0KENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5
LCByZWFjaGVkQm91bmRhcnkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdvcmRHcmFudWxh
cml0eToKLSAgICAgICAgcG9zID0gbmV4dFdvcmRQb3NpdGlvbkZvclBsYXRmb3JtKGN1cnJlbnRQ
b3NpdGlvbik7CisgICAgICAgIHBvcyA9IG5leHRXb3JkUG9zaXRpb25Gb3JQbGF0Zm9ybShjdXJy
ZW50UG9zaXRpb24sIHVzZXJUcmlnZ2VyZWQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFNl
bnRlbmNlR3JhbnVsYXJpdHk6CiAgICAgICAgIHBvcyA9IG5leHRTZW50ZW5jZVBvc2l0aW9uKGN1
cnJlbnRQb3NpdGlvbik7CkBAIC05NTYsNyArOTYyLDcgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1l
U2VsZWN0aW9uOjptb2RpZnlNbwogICAgIHJldHVybiBwb3M7CiB9CiAKLVZpc2libGVQb3NpdGlv
biBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5RXh0ZW5kaW5nTGVmdChUZXh0R3JhbnVsYXJpdHkgZ3Jh
bnVsYXJpdHkpCitWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4dGVuZGlu
Z0xlZnQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBFVXNlclRyaWdnZXJlZCB1c2VyVHJp
Z2dlcmVkKQogewogICAgIFZpc2libGVQb3NpdGlvbiBwb3MobV9zZWxlY3Rpb24uZXh0ZW50KCks
IG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpOwogCkBAIC05NzQsMTUgKzk4MCwxNSBAQCBWaXNpYmxl
UG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgV29yZEdyYW51bGFyaXR5OgogICAgICAgICBpZiAoZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9j
aygpID09IFRleHREaXJlY3Rpb246OkxUUikKLSAgICAgICAgICAgIHBvcyA9IHByZXZpb3VzV29y
ZFBvc2l0aW9uKHBvcyk7CisgICAgICAgICAgICBwb3MgPSBwcmV2aW91c1dvcmRQb3NpdGlvbihw
b3MsIG5leHRXb3JkV2hpdGVzcGFjZU1vZGVJbklPUyh1c2VyVHJpZ2dlcmVkKSk7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIHBvcyA9IG5leHRXb3JkUG9zaXRpb25Gb3JQbGF0Zm9ybShwb3Mp
OworICAgICAgICAgICAgcG9zID0gbmV4dFdvcmRQb3NpdGlvbkZvclBsYXRmb3JtKHBvcywgdXNl
clRyaWdnZXJlZCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTGluZUJvdW5kYXJ5OgogICAg
ICAgICBpZiAoZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jaygpID09IFRleHREaXJlY3Rpb246OkxU
UikKLSAgICAgICAgICAgIHBvcyA9IG1vZGlmeUV4dGVuZGluZ0JhY2t3YXJkKGdyYW51bGFyaXR5
KTsKKyAgICAgICAgICAgIHBvcyA9IG1vZGlmeUV4dGVuZGluZ0JhY2t3YXJkKGdyYW51bGFyaXR5
LCB1c2VyVHJpZ2dlcmVkKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcG9zID0gbW9kaWZ5
RXh0ZW5kaW5nRm9yd2FyZChncmFudWxhcml0eSk7CisgICAgICAgICAgICBwb3MgPSBtb2RpZnlF
eHRlbmRpbmdGb3J3YXJkKGdyYW51bGFyaXR5LCB1c2VyVHJpZ2dlcmVkKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5OgogICAgIGNhc2UgTGluZUdyYW51bGFy
aXR5OgpAQCAtOTkwLDcgKzk5Niw3IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6
bW9kaWZ5RXgKICAgICBjYXNlIFNlbnRlbmNlQm91bmRhcnk6CiAgICAgY2FzZSBQYXJhZ3JhcGhC
b3VuZGFyeToKICAgICBjYXNlIERvY3VtZW50Qm91bmRhcnk6Ci0gICAgICAgIHBvcyA9IG1vZGlm
eUV4dGVuZGluZ0JhY2t3YXJkKGdyYW51bGFyaXR5KTsKKyAgICAgICAgcG9zID0gbW9kaWZ5RXh0
ZW5kaW5nQmFja3dhcmQoZ3JhbnVsYXJpdHksIHVzZXJUcmlnZ2VyZWQpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIERvY3VtZW50R3JhbnVsYXJpdHk6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwpAQCAtMTAwMiw3ICsxMDA4LDcgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0
aW9uOjptb2RpZnlFeAogICAgIHJldHVybiBwb3M7CiB9CiAgICAgICAgCi1WaXNpYmxlUG9zaXRp
b24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4dGVuZGluZ0JhY2t3YXJkKFRleHRHcmFudWxhcml0
eSBncmFudWxhcml0eSkKK1Zpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5RXh0
ZW5kaW5nQmFja3dhcmQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBFVXNlclRyaWdnZXJl
ZCB1c2VyVHJpZ2dlcmVkKQogewogICAgIFZpc2libGVQb3NpdGlvbiBwb3MobV9zZWxlY3Rpb24u
ZXh0ZW50KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpOwogCkBAIC0xMDE1LDcgKzEwMjEsNyBA
QCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4CiAgICAgICAgIHBvcyA9
IHBvcy5wcmV2aW91cyhDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgV29yZEdyYW51bGFyaXR5OgotICAgICAgICBwb3MgPSBwcmV2aW91c1dvcmRQ
b3NpdGlvbihwb3MpOworICAgICAgICBwb3MgPSBwcmV2aW91c1dvcmRQb3NpdGlvbihwb3MsIG5l
eHRXb3JkV2hpdGVzcGFjZU1vZGVJbklPUyh1c2VyVHJpZ2dlcmVkKSk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0eToKICAgICAgICAgcG9zID0gcHJldmlvdXNT
ZW50ZW5jZVBvc2l0aW9uKHBvcyk7CkBAIC0xMDUyLDcgKzEwNTgsNyBAQCBWaXNpYmxlUG9zaXRp
b24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4CiAgICAgcmV0dXJuIHBvczsKIH0KIAotVmlzaWJs
ZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNb3ZpbmdMZWZ0KFRleHRHcmFudWxhcml0
eSBncmFudWxhcml0eSwgYm9vbCogcmVhY2hlZEJvdW5kYXJ5KQorVmlzaWJsZVBvc2l0aW9uIEZy
YW1lU2VsZWN0aW9uOjptb2RpZnlNb3ZpbmdMZWZ0KFRleHRHcmFudWxhcml0eSBncmFudWxhcml0
eSwgRVVzZXJUcmlnZ2VyZWQgdXNlclRyaWdnZXJlZCwgYm9vbCogcmVhY2hlZEJvdW5kYXJ5KQog
ewogICAgIGlmIChyZWFjaGVkQm91bmRhcnkpCiAgICAgICAgICpyZWFjaGVkQm91bmRhcnkgPSBm
YWxzZTsKQEAgLTEwODIsNyArMTA4OCw3IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlv
bjo6bW9kaWZ5TW8KICAgICBjYXNlIFBhcmFncmFwaEJvdW5kYXJ5OgogICAgIGNhc2UgRG9jdW1l
bnRCb3VuZGFyeToKICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBhbGwgb2YgdGhlIGFib3Zl
LgotICAgICAgICBwb3MgPSBtb2RpZnlNb3ZpbmdCYWNrd2FyZChncmFudWxhcml0eSwgcmVhY2hl
ZEJvdW5kYXJ5KTsKKyAgICAgICAgcG9zID0gbW9kaWZ5TW92aW5nQmFja3dhcmQoZ3JhbnVsYXJp
dHksIHVzZXJUcmlnZ2VyZWQsIHJlYWNoZWRCb3VuZGFyeSk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgTGluZUJvdW5kYXJ5OgogICAgICAgICBwb3MgPSBsZWZ0Qm91bmRhcnlPZkxpbmUoc3Rh
cnRGb3JQbGF0Zm9ybSgpLCBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCksIHJlYWNoZWRCb3Vu
ZGFyeSk7CkBAIC0xMDk0LDcgKzExMDAsNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rp
b246Om1vZGlmeU1vCiAgICAgcmV0dXJuIHBvczsKIH0KIAotVmlzaWJsZVBvc2l0aW9uIEZyYW1l
U2VsZWN0aW9uOjptb2RpZnlNb3ZpbmdCYWNrd2FyZChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJp
dHksIGJvb2wqIHJlYWNoZWRCb3VuZGFyeSkKK1Zpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlv
bjo6bW9kaWZ5TW92aW5nQmFja3dhcmQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBFVXNl
clRyaWdnZXJlZCB1c2VyVHJpZ2dlcmVkLCBib29sKiByZWFjaGVkQm91bmRhcnkpCiB7CiAgICAg
aWYgKHJlYWNoZWRCb3VuZGFyeSkKICAgICAgICAgKnJlYWNoZWRCb3VuZGFyeSA9IGZhbHNlOwpA
QCAtMTEyMyw3ICsxMTI5LDcgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2Rp
ZnlNbwogICAgICAgICAgICAgcG9zID0gVmlzaWJsZVBvc2l0aW9uKG1fc2VsZWN0aW9uLmV4dGVu
dCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKS5wcmV2aW91cyhDYW5ub3RDcm9zc0VkaXRpbmdC
b3VuZGFyeSwgcmVhY2hlZEJvdW5kYXJ5KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXb3Jk
R3JhbnVsYXJpdHk6Ci0gICAgICAgIHBvcyA9IHByZXZpb3VzV29yZFBvc2l0aW9uKGN1cnJlbnRQ
b3NpdGlvbik7CisgICAgICAgIHBvcyA9IHByZXZpb3VzV29yZFBvc2l0aW9uKGN1cnJlbnRQb3Np
dGlvbiwgbmV4dFdvcmRXaGl0ZXNwYWNlTW9kZUluSU9TKHVzZXJUcmlnZ2VyZWQpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5OgogICAgICAgICBwb3MgPSBw
cmV2aW91c1NlbnRlbmNlUG9zaXRpb24oY3VycmVudFBvc2l0aW9uKTsKQEAgLTEzMzAsMjcgKzEz
MzYsMjcgQEAgYm9vbCBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5KEVBbHRlcmF0aW9uIAogICAgIHN3
aXRjaCAoZGlyZWN0aW9uKSB7CiAgICAgY2FzZSBEaXJlY3Rpb25SaWdodDoKICAgICAgICAgaWYg
KGFsdGVyID09IEFsdGVyYXRpb25Nb3ZlKQotICAgICAgICAgICAgcG9zaXRpb24gPSBtb2RpZnlN
b3ZpbmdSaWdodChncmFudWxhcml0eSwgJnJlYWNoZWRCb3VuZGFyeSk7CisgICAgICAgICAgICBw
b3NpdGlvbiA9IG1vZGlmeU1vdmluZ1JpZ2h0KGdyYW51bGFyaXR5LCB1c2VyVHJpZ2dlcmVkLCAm
cmVhY2hlZEJvdW5kYXJ5KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcG9zaXRpb24gPSBt
b2RpZnlFeHRlbmRpbmdSaWdodChncmFudWxhcml0eSk7CisgICAgICAgICAgICBwb3NpdGlvbiA9
IG1vZGlmeUV4dGVuZGluZ1JpZ2h0KGdyYW51bGFyaXR5LCB1c2VyVHJpZ2dlcmVkKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBEaXJlY3Rpb25Gb3J3YXJkOgogICAgICAgICBpZiAoYWx0ZXIg
PT0gQWx0ZXJhdGlvbkV4dGVuZCkKLSAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5RXh0ZW5k
aW5nRm9yd2FyZChncmFudWxhcml0eSk7CisgICAgICAgICAgICBwb3NpdGlvbiA9IG1vZGlmeUV4
dGVuZGluZ0ZvcndhcmQoZ3JhbnVsYXJpdHksIHVzZXJUcmlnZ2VyZWQpOwogICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBwb3NpdGlvbiA9IG1vZGlmeU1vdmluZ0ZvcndhcmQoZ3JhbnVsYXJpdHks
ICZyZWFjaGVkQm91bmRhcnkpOworICAgICAgICAgICAgcG9zaXRpb24gPSBtb2RpZnlNb3ZpbmdG
b3J3YXJkKGdyYW51bGFyaXR5LCB1c2VyVHJpZ2dlcmVkLCAmcmVhY2hlZEJvdW5kYXJ5KTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBEaXJlY3Rpb25MZWZ0OgogICAgICAgICBpZiAoYWx0ZXIg
PT0gQWx0ZXJhdGlvbk1vdmUpCi0gICAgICAgICAgICBwb3NpdGlvbiA9IG1vZGlmeU1vdmluZ0xl
ZnQoZ3JhbnVsYXJpdHksICZyZWFjaGVkQm91bmRhcnkpOworICAgICAgICAgICAgcG9zaXRpb24g
PSBtb2RpZnlNb3ZpbmdMZWZ0KGdyYW51bGFyaXR5LCB1c2VyVHJpZ2dlcmVkLCAmcmVhY2hlZEJv
dW5kYXJ5KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcG9zaXRpb24gPSBtb2RpZnlFeHRl
bmRpbmdMZWZ0KGdyYW51bGFyaXR5KTsKKyAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5RXh0
ZW5kaW5nTGVmdChncmFudWxhcml0eSwgdXNlclRyaWdnZXJlZCk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgRGlyZWN0aW9uQmFja3dhcmQ6CiAgICAgICAgIGlmIChhbHRlciA9PSBBbHRlcmF0
aW9uRXh0ZW5kKQotICAgICAgICAgICAgcG9zaXRpb24gPSBtb2RpZnlFeHRlbmRpbmdCYWNrd2Fy
ZChncmFudWxhcml0eSk7CisgICAgICAgICAgICBwb3NpdGlvbiA9IG1vZGlmeUV4dGVuZGluZ0Jh
Y2t3YXJkKGdyYW51bGFyaXR5LCB1c2VyVHJpZ2dlcmVkKTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgcG9zaXRpb24gPSBtb2RpZnlNb3ZpbmdCYWNrd2FyZChncmFudWxhcml0eSwgJnJlYWNo
ZWRCb3VuZGFyeSk7CisgICAgICAgICAgICBwb3NpdGlvbiA9IG1vZGlmeU1vdmluZ0JhY2t3YXJk
KGdyYW51bGFyaXR5LCB1c2VyVHJpZ2dlcmVkLCAmcmVhY2hlZEJvdW5kYXJ5KTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCkBAIC0yMTQ1LDcgKzIxNTEsNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9u
Ojp1cGRhdGVBcHBlYXJhbmNlKCkKICAgICAvLyBDb25zdHJ1Y3QgYSBuZXcgVmlzaWJsZVNvbHV0
aW9uLCBzaW5jZSBtX3NlbGVjdGlvbiBpcyBub3QgbmVjZXNzYXJpbHkgdmFsaWQsIGFuZCB0aGUg
Zm9sbG93aW5nIHN0ZXBzCiAgICAgLy8gYXNzdW1lIGEgdmFsaWQgc2VsZWN0aW9uLiBTZWUgPGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTU2Mz4gYW5kIDxyZGFyOi8v
cHJvYmxlbS8xMDIzMjg2Nj4uCiAjaWYgRU5BQkxFKFRFWFRfQ0FSRVQpCi0gICAgVmlzaWJsZVBv
c2l0aW9uIGVuZFZpc2libGVQb3NpdGlvbiA9IHBhaW50QmxvY2tDdXJzb3IgPyBtb2RpZnlFeHRl
bmRpbmdGb3J3YXJkKENoYXJhY3RlckdyYW51bGFyaXR5KSA6IG9sZFNlbGVjdGlvbi52aXNpYmxl
RW5kKCk7CisgICAgVmlzaWJsZVBvc2l0aW9uIGVuZFZpc2libGVQb3NpdGlvbiA9IHBhaW50Qmxv
Y2tDdXJzb3IgPyBtb2RpZnlFeHRlbmRpbmdGb3J3YXJkKENoYXJhY3RlckdyYW51bGFyaXR5LCBO
b3RVc2VyVHJpZ2dlcmVkKSA6IG9sZFNlbGVjdGlvbi52aXNpYmxlRW5kKCk7CiAgICAgVmlzaWJs
ZVNlbGVjdGlvbiBzZWxlY3Rpb24ob2xkU2VsZWN0aW9uLnZpc2libGVTdGFydCgpLCBlbmRWaXNp
YmxlUG9zaXRpb24pOwogI2Vsc2UKICAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbihvbGRT
ZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCksIG9sZFNlbGVjdGlvbi52aXNpYmxlRW5kKCkpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAkocmV2aXNpb24gMjQ5NjU3
KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yOTksMTYgKzI5OSwxNiBAQCBwcml2YXRlOgogICAgIFZpc2libGVQb3NpdGlvbiBw
b3NpdGlvbkZvclBsYXRmb3JtKGJvb2wgaXNHZXRTdGFydCkgY29uc3Q7CiAgICAgVmlzaWJsZVBv
c2l0aW9uIHN0YXJ0Rm9yUGxhdGZvcm0oKSBjb25zdDsKICAgICBWaXNpYmxlUG9zaXRpb24gZW5k
Rm9yUGxhdGZvcm0oKSBjb25zdDsKLSAgICBWaXNpYmxlUG9zaXRpb24gbmV4dFdvcmRQb3NpdGlv
bkZvclBsYXRmb3JtKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOworICAgIFZpc2libGVQb3NpdGlv
biBuZXh0V29yZFBvc2l0aW9uRm9yUGxhdGZvcm0oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgRVVz
ZXJUcmlnZ2VyZWQpOwogCi0gICAgVmlzaWJsZVBvc2l0aW9uIG1vZGlmeUV4dGVuZGluZ1JpZ2h0
KFRleHRHcmFudWxhcml0eSk7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIG1vZGlmeUV4dGVuZGluZ0Zv
cndhcmQoVGV4dEdyYW51bGFyaXR5KTsKLSAgICBWaXNpYmxlUG9zaXRpb24gbW9kaWZ5TW92aW5n
UmlnaHQoVGV4dEdyYW51bGFyaXR5LCBib29sKiByZWFjaGVkQm91bmRhcnkgPSBudWxscHRyKTsK
LSAgICBWaXNpYmxlUG9zaXRpb24gbW9kaWZ5TW92aW5nRm9yd2FyZChUZXh0R3JhbnVsYXJpdHks
IGJvb2wqIHJlYWNoZWRCb3VuZGFyeSA9IG51bGxwdHIpOwotICAgIFZpc2libGVQb3NpdGlvbiBt
b2RpZnlFeHRlbmRpbmdMZWZ0KFRleHRHcmFudWxhcml0eSk7Ci0gICAgVmlzaWJsZVBvc2l0aW9u
IG1vZGlmeUV4dGVuZGluZ0JhY2t3YXJkKFRleHRHcmFudWxhcml0eSk7Ci0gICAgVmlzaWJsZVBv
c2l0aW9uIG1vZGlmeU1vdmluZ0xlZnQoVGV4dEdyYW51bGFyaXR5LCBib29sKiByZWFjaGVkQm91
bmRhcnkgPSBudWxscHRyKTsKLSAgICBWaXNpYmxlUG9zaXRpb24gbW9kaWZ5TW92aW5nQmFja3dh
cmQoVGV4dEdyYW51bGFyaXR5LCBib29sKiByZWFjaGVkQm91bmRhcnkgPSBudWxscHRyKTsKKyAg
ICBWaXNpYmxlUG9zaXRpb24gbW9kaWZ5RXh0ZW5kaW5nUmlnaHQoVGV4dEdyYW51bGFyaXR5LCBF
VXNlclRyaWdnZXJlZCk7CisgICAgVmlzaWJsZVBvc2l0aW9uIG1vZGlmeUV4dGVuZGluZ0Zvcndh
cmQoVGV4dEdyYW51bGFyaXR5LCBFVXNlclRyaWdnZXJlZCk7CisgICAgVmlzaWJsZVBvc2l0aW9u
IG1vZGlmeU1vdmluZ1JpZ2h0KFRleHRHcmFudWxhcml0eSwgRVVzZXJUcmlnZ2VyZWQsIGJvb2wq
IHJlYWNoZWRCb3VuZGFyeSA9IG51bGxwdHIpOworICAgIFZpc2libGVQb3NpdGlvbiBtb2RpZnlN
b3ZpbmdGb3J3YXJkKFRleHRHcmFudWxhcml0eSwgRVVzZXJUcmlnZ2VyZWQsIGJvb2wqIHJlYWNo
ZWRCb3VuZGFyeSA9IG51bGxwdHIpOworICAgIFZpc2libGVQb3NpdGlvbiBtb2RpZnlFeHRlbmRp
bmdMZWZ0KFRleHRHcmFudWxhcml0eSwgRVVzZXJUcmlnZ2VyZWQpOworICAgIFZpc2libGVQb3Np
dGlvbiBtb2RpZnlFeHRlbmRpbmdCYWNrd2FyZChUZXh0R3JhbnVsYXJpdHksIEVVc2VyVHJpZ2dl
cmVkKTsKKyAgICBWaXNpYmxlUG9zaXRpb24gbW9kaWZ5TW92aW5nTGVmdChUZXh0R3JhbnVsYXJp
dHksIEVVc2VyVHJpZ2dlcmVkLCBib29sKiByZWFjaGVkQm91bmRhcnkgPSBudWxscHRyKTsKKyAg
ICBWaXNpYmxlUG9zaXRpb24gbW9kaWZ5TW92aW5nQmFja3dhcmQoVGV4dEdyYW51bGFyaXR5LCBF
VXNlclRyaWdnZXJlZCwgYm9vbCogcmVhY2hlZEJvdW5kYXJ5ID0gbnVsbHB0cik7CiAKICAgICBM
YXlvdXRVbml0IGxpbmVEaXJlY3Rpb25Qb2ludEZvckJsb2NrRGlyZWN0aW9uTmF2aWdhdGlvbihF
UG9zaXRpb25UeXBlKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9y
LmNwcAkocmV2aXNpb24gMjQ5NjU3KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRl
cmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzM1LDcgKzIzMzUsNyBAQCBpbmxpbmUgYm9v
bCBTZWFyY2hCdWZmZXI6OmlzV29yZFN0YXJ0TWF0CiAKICAgICBzaXplX3Qgd29yZEJyZWFrU2Vh
cmNoU3RhcnQgPSBzdGFydCArIGxlbmd0aDsKICAgICB3aGlsZSAod29yZEJyZWFrU2VhcmNoU3Rh
cnQgPiBzdGFydCkKLSAgICAgICAgd29yZEJyZWFrU2VhcmNoU3RhcnQgPSBmaW5kTmV4dFdvcmRG
cm9tSW5kZXgoU3RyaW5nVmlldyhtX2J1ZmZlci5kYXRhKCksIG1fYnVmZmVyLnNpemUoKSksIHdv
cmRCcmVha1NlYXJjaFN0YXJ0LCBmYWxzZSAvKiBiYWNrd2FyZHMgKi8pOworICAgICAgICB3b3Jk
QnJlYWtTZWFyY2hTdGFydCA9IGZpbmROZXh0V29yZEZyb21JbmRleChTdHJpbmdWaWV3KG1fYnVm
ZmVyLmRhdGEoKSwgbV9idWZmZXIuc2l6ZSgpKSwgd29yZEJyZWFrU2VhcmNoU3RhcnQsIE5leHRX
b3JkRGlyZWN0aW9uOjpCYWNrd2FyZCk7CiAgICAgcmV0dXJuIHdvcmRCcmVha1NlYXJjaFN0YXJ0
ID09IHN0YXJ0OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMu
Y3BwCShyZXZpc2lvbiAyNDk2NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVV
bml0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2MSw2ICs3NjEsNyBAQCBWaXNpYmxlUG9zaXRp
b24gZW5kT2ZXb3JkKGNvbnN0IFZpc2libGVQCiAgICAgcmV0dXJuIG5leHRCb3VuZGFyeShwLCBl
bmRXb3JkQm91bmRhcnkpOwogfQogCit0ZW1wbGF0ZSA8TmV4dFdvcmRNb2RlSW5JT1MgaW9zTW9k
ZT4KIHN0YXRpYyB1bnNpZ25lZCBwcmV2aW91c1dvcmRQb3NpdGlvbkJvdW5kYXJ5KFN0cmluZ1Zp
ZXcgdGV4dCwgdW5zaWduZWQgb2Zmc2V0LCBCb3VuZGFyeVNlYXJjaENvbnRleHRBdmFpbGFiaWxp
dHkgbWF5SGF2ZU1vcmVDb250ZXh0LCBib29sJiBuZWVkTW9yZUNvbnRleHQpCiB7CiAgICAgaWYg
KG1heUhhdmVNb3JlQ29udGV4dCAmJiAhc3RhcnRPZkxhc3RXb3JkQm91bmRhcnlDb250ZXh0KHRl
eHQuc3Vic3RyaW5nKDAsIG9mZnNldCkpKSB7CkBAIC03NjgsMTQgKzc2OSwxNyBAQCBzdGF0aWMg
dW5zaWduZWQgcHJldmlvdXNXb3JkUG9zaXRpb25Cb3VuCiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KICAgICBuZWVkTW9yZUNvbnRleHQgPSBmYWxzZTsKLSAgICByZXR1cm4gZmluZE5leHRXb3Jk
RnJvbUluZGV4KHRleHQsIG9mZnNldCwgZmFsc2UpOworICAgIHJldHVybiBmaW5kTmV4dFdvcmRG
cm9tSW5kZXgodGV4dCwgb2Zmc2V0LCBOZXh0V29yZERpcmVjdGlvbjo6QmFja3dhcmQsIGlvc01v
ZGUpOwogfQogCi1WaXNpYmxlUG9zaXRpb24gcHJldmlvdXNXb3JkUG9zaXRpb24oY29uc3QgVmlz
aWJsZVBvc2l0aW9uJiBwb3NpdGlvbikKK1Zpc2libGVQb3NpdGlvbiBwcmV2aW91c1dvcmRQb3Np
dGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uLCBOZXh0V29yZE1vZGVJbklPUyBp
b3NNb2RlKQogewotICAgIHJldHVybiBwb3NpdGlvbi5ob25vckVkaXRpbmdCb3VuZGFyeUF0T3JC
ZWZvcmUocHJldmlvdXNCb3VuZGFyeShwb3NpdGlvbiwgcHJldmlvdXNXb3JkUG9zaXRpb25Cb3Vu
ZGFyeSkpOworICAgIGlmIChpb3NNb2RlID09IE5leHRXb3JkTW9kZUluSU9TOjpMZWdhY3lTdG9w
QmVmb3JlV29yZCkgLy8gRklYTUU6IFJlbW92ZSB0aGlzIGNvZGUgcGF0aC4KKyAgICAgICAgcmV0
dXJuIHBvc2l0aW9uLmhvbm9yRWRpdGluZ0JvdW5kYXJ5QXRPckJlZm9yZShwcmV2aW91c0JvdW5k
YXJ5KHBvc2l0aW9uLCBwcmV2aW91c1dvcmRQb3NpdGlvbkJvdW5kYXJ5PE5leHRXb3JkTW9kZUlu
SU9TOjpMZWdhY3lTdG9wQmVmb3JlV29yZD4pKTsKKyAgICByZXR1cm4gcG9zaXRpb24uaG9ub3JF
ZGl0aW5nQm91bmRhcnlBdE9yQmVmb3JlKHByZXZpb3VzQm91bmRhcnkocG9zaXRpb24sIHByZXZp
b3VzV29yZFBvc2l0aW9uQm91bmRhcnk8TmV4dFdvcmRNb2RlSW5JT1M6OlN0b3BBZnRlcldvcmQ+
KSk7CiB9CiAKK3RlbXBsYXRlIDxOZXh0V29yZE1vZGVJbklPUyBpb3NNb2RlPgogc3RhdGljIHVu
c2lnbmVkIG5leHRXb3JkUG9zaXRpb25Cb3VuZGFyeShTdHJpbmdWaWV3IHRleHQsIHVuc2lnbmVk
IG9mZnNldCwgQm91bmRhcnlTZWFyY2hDb250ZXh0QXZhaWxhYmlsaXR5IG1heUhhdmVNb3JlQ29u
dGV4dCwgYm9vbCYgbmVlZE1vcmVDb250ZXh0KQogewogICAgIGlmIChtYXlIYXZlTW9yZUNvbnRl
eHQgJiYgZW5kT2ZGaXJzdFdvcmRCb3VuZGFyeUNvbnRleHQodGV4dC5zdWJzdHJpbmcob2Zmc2V0
KSkgPT0gdGV4dC5sZW5ndGgoKSAtIG9mZnNldCkgewpAQCAtNzgzLDEyICs3ODcsMTQgQEAgc3Rh
dGljIHVuc2lnbmVkIG5leHRXb3JkUG9zaXRpb25Cb3VuZGFyeQogICAgICAgICByZXR1cm4gdGV4
dC5sZW5ndGgoKTsKICAgICB9CiAgICAgbmVlZE1vcmVDb250ZXh0ID0gZmFsc2U7Ci0gICAgcmV0
dXJuIGZpbmROZXh0V29yZEZyb21JbmRleCh0ZXh0LCBvZmZzZXQsIHRydWUpOworICAgIHJldHVy
biBmaW5kTmV4dFdvcmRGcm9tSW5kZXgodGV4dCwgb2Zmc2V0LCBOZXh0V29yZERpcmVjdGlvbjo6
Rm9yd2FyZCwgaW9zTW9kZSk7CiB9CiAKLVZpc2libGVQb3NpdGlvbiBuZXh0V29yZFBvc2l0aW9u
KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24pCitWaXNpYmxlUG9zaXRpb24gbmV4dFdv
cmRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uLCBOZXh0V29yZE1vZGVJ
bklPUyBpb3NNb2RlKQogewotICAgIHJldHVybiBwb3NpdGlvbi5ob25vckVkaXRpbmdCb3VuZGFy
eUF0T3JBZnRlcihuZXh0Qm91bmRhcnkocG9zaXRpb24sIG5leHRXb3JkUG9zaXRpb25Cb3VuZGFy
eSkpOworICAgIGlmIChpb3NNb2RlID09IE5leHRXb3JkTW9kZUluSU9TOjpMZWdhY3lTdG9wQmVm
b3JlV29yZCkgLy8gRklYTUU6IFJlbW92ZSB0aGlzIGNvZGUgcGF0aC4KKyAgICAgICAgcmV0dXJu
IHBvc2l0aW9uLmhvbm9yRWRpdGluZ0JvdW5kYXJ5QXRPckFmdGVyKG5leHRCb3VuZGFyeShwb3Np
dGlvbiwgbmV4dFdvcmRQb3NpdGlvbkJvdW5kYXJ5PE5leHRXb3JkTW9kZUluSU9TOjpMZWdhY3lT
dG9wQmVmb3JlV29yZD4pKTsKKyAgICByZXR1cm4gcG9zaXRpb24uaG9ub3JFZGl0aW5nQm91bmRh
cnlBdE9yQWZ0ZXIobmV4dEJvdW5kYXJ5KHBvc2l0aW9uLCBuZXh0V29yZFBvc2l0aW9uQm91bmRh
cnk8TmV4dFdvcmRNb2RlSW5JT1M6OlN0b3BBZnRlcldvcmQ+KSk7CiB9CiAKIGJvb2wgaXNTdGFy
dE9mV29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24mIHApCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1Zpc2libGVVbml0cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVmlzaWJsZVVuaXRzLmgJKHJldmlzaW9uIDI0OTY1NykKKysrIFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVmlzaWJsZVVuaXRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRWRpdGluZ0JvdW5kYXJ5LmgiCisjaW5jbHVkZSAiVGV4
dEJvdW5kYXJpZXMuaCIKICNpbmNsdWRlICJWaXNpYmxlU2VsZWN0aW9uLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTQwLDggKzQxLDggQEAgZW51bSBFV29yZFNpZGUgeyBSaWdodFdvcmRJ
Zk9uQm91bmRhcnkgPQogLy8gd29yZHMKIFdFQkNPUkVfRVhQT1JUIFZpc2libGVQb3NpdGlvbiBz
dGFydE9mV29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24gJiwgRVdvcmRTaWRlID0gUmlnaHRXb3Jk
SWZPbkJvdW5kYXJ5KTsKIFdFQkNPUkVfRVhQT1JUIFZpc2libGVQb3NpdGlvbiBlbmRPZldvcmQo
Y29uc3QgVmlzaWJsZVBvc2l0aW9uICYsIEVXb3JkU2lkZSA9IFJpZ2h0V29yZElmT25Cb3VuZGFy
eSk7Ci1XRUJDT1JFX0VYUE9SVCBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNXb3JkUG9zaXRpb24o
Y29uc3QgVmlzaWJsZVBvc2l0aW9uICYpOwotV0VCQ09SRV9FWFBPUlQgVmlzaWJsZVBvc2l0aW9u
IG5leHRXb3JkUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uICYpOworV0VCQ09SRV9FWFBP
UlQgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzV29yZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3Np
dGlvbiAmLCBOZXh0V29yZE1vZGVJbklPUyA9IE5leHRXb3JkTW9kZUluSU9TOjpMZWdhY3lTdG9w
QmVmb3JlV29yZCk7CitXRUJDT1JFX0VYUE9SVCBWaXNpYmxlUG9zaXRpb24gbmV4dFdvcmRQb3Np
dGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24gJiwgTmV4dFdvcmRNb2RlSW5JT1MgPSBOZXh0V29y
ZE1vZGVJbklPUzo6TGVnYWN5U3RvcEJlZm9yZVdvcmQpOwogVmlzaWJsZVBvc2l0aW9uIHJpZ2h0
V29yZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGJvb2wgc2tpcHNTcGFjZVdoZW5N
b3ZpbmdSaWdodCk7CiBWaXNpYmxlUG9zaXRpb24gbGVmdFdvcmRQb3NpdGlvbihjb25zdCBWaXNp
YmxlUG9zaXRpb24mLCBib29sIHNraXBzU3BhY2VXaGVuTW92aW5nUmlnaHQpOwogYm9vbCBpc1N0
YXJ0T2ZXb3JkKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9UZXh0Qm91bmRhcmllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Qm91bmRhcmllcy5jcHAJKHJldmlzaW9uIDI0OTY1NykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJvdW5kYXJpZXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MSwxMSArNjEsMTEgQEAgdW5zaWduZWQgc3RhcnRPZkxhc3RXb3JkQm91
bmRhcnlDb250ZXh0KAogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogCi1pbnQgZmluZE5leHRXb3Jk
RnJvbUluZGV4KFN0cmluZ1ZpZXcgdGV4dCwgaW50IHBvc2l0aW9uLCBib29sIGZvcndhcmQpCitp
bnQgZmluZE5leHRXb3JkRnJvbUluZGV4KFN0cmluZ1ZpZXcgdGV4dCwgaW50IHBvc2l0aW9uLCBO
ZXh0V29yZERpcmVjdGlvbiBkaXJlY3Rpb24sIE5leHRXb3JkTW9kZUluSU9TKQogewogICAgIFVC
cmVha0l0ZXJhdG9yKiBpdCA9IHdvcmRCcmVha0l0ZXJhdG9yKHRleHQpOwogCi0gICAgaWYgKGZv
cndhcmQpIHsKKyAgICBpZiAoZGlyZWN0aW9uID09IE5leHRXb3JkRGlyZWN0aW9uOjpGb3J3YXJk
KSB7CiAgICAgICAgIHBvc2l0aW9uID0gdWJya19mb2xsb3dpbmcoaXQsIHBvc2l0aW9uKTsKICAg
ICAgICAgd2hpbGUgKHBvc2l0aW9uICE9IFVCUktfRE9ORSkgewogICAgICAgICAgICAgLy8gV2Ug
c3RvcCBzZWFyY2hpbmcgd2hlbiB0aGUgY2hhcmFjdGVyIHByZWNlZWRpbmcgdGhlIGJyZWFrIGlz
IGFscGhhbnVtZXJpYy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJv
dW5kYXJpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRCb3VuZGFyaWVzLmgJKHJldmlzaW9uIDI0OTY1NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvVGV4dEJvdW5kYXJpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsMTAg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgdm9pZCBmaW5kV29yZEJvdW5kYXJ5KFN0cmlu
Z1ZpZXcsIGludCBwb3NpdGlvbiwgaW50KiBzdGFydCwgaW50KiBlbmQpOwogICAgIHZvaWQgZmlu
ZEVuZFdvcmRCb3VuZGFyeShTdHJpbmdWaWV3LCBpbnQgcG9zaXRpb24sIGludCogZW5kKTsKLSAg
ICBpbnQgZmluZE5leHRXb3JkRnJvbUluZGV4KFN0cmluZ1ZpZXcsIGludCBwb3NpdGlvbiwgYm9v
bCBmb3J3YXJkKTsKKworICAgIGVudW0gY2xhc3MgTmV4dFdvcmREaXJlY3Rpb24geyBGb3J3YXJk
LCBCYWNrd2FyZCB9OworICAgIGVudW0gY2xhc3MgTmV4dFdvcmRNb2RlSW5JT1MgeyBMZWdhY3lT
dG9wQmVmb3JlV29yZCwgU3RvcEFmdGVyV29yZCB9OworICAgIGludCBmaW5kTmV4dFdvcmRGcm9t
SW5kZXgoU3RyaW5nVmlldywgaW50IHBvc2l0aW9uLCBOZXh0V29yZERpcmVjdGlvbiwgTmV4dFdv
cmRNb2RlSW5JT1MgPSBOZXh0V29yZE1vZGVJbklPUzo6TGVnYWN5U3RvcEJlZm9yZVdvcmQpOwog
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRCb3VuZGFy
aWVzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1Rl
eHRCb3VuZGFyaWVzLm1tCShyZXZpc2lvbiAyNDk2NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L21hYy9UZXh0Qm91bmRhcmllcy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjI5LDEx
ICsyMjksMTIgQEAgdm9pZCBmaW5kRW5kV29yZEJvdW5kYXJ5KFN0cmluZ1ZpZXcgdGV4dAogICAg
IGZpbmRXb3JkQm91bmRhcnkodGV4dCwgcG9zaXRpb24sICZzdGFydCwgZW5kKTsKIH0KIAotaW50
IGZpbmROZXh0V29yZEZyb21JbmRleChTdHJpbmdWaWV3IHRleHQsIGludCBwb3NpdGlvbiwgYm9v
bCBmb3J3YXJkKQoraW50IGZpbmROZXh0V29yZEZyb21JbmRleChTdHJpbmdWaWV3IHRleHQsIGlu
dCBwb3NpdGlvbiwgTmV4dFdvcmREaXJlY3Rpb24gZGlyZWN0aW9uLCBOZXh0V29yZE1vZGVJbklP
UyB3aGl0ZXNwYWNlTW9kZUluSU9TKQogeyAgIAogI2lmIFVTRShBUFBLSVQpCisgICAgVU5VU0VE
X1BBUkFNKHdoaXRlc3BhY2VNb2RlSW5JT1MpOwogICAgIE5TQXR0cmlidXRlZFN0cmluZyAqYXR0
cmlidXRlZFN0cmluZyA9IFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmlu
Zzp0ZXh0LmNyZWF0ZU5TU3RyaW5nV2l0aG91dENvcHlpbmcoKS5nZXQoKV07Ci0gICAgaW50IHJl
c3VsdCA9IFthdHRyaWJ1dGVkU3RyaW5nIG5leHRXb3JkRnJvbUluZGV4OnBvc2l0aW9uIGZvcndh
cmQ6Zm9yd2FyZF07CisgICAgaW50IHJlc3VsdCA9IFthdHRyaWJ1dGVkU3RyaW5nIG5leHRXb3Jk
RnJvbUluZGV4OnBvc2l0aW9uIGZvcndhcmQ6ZGlyZWN0aW9uID09IE5leHRXb3JkRGlyZWN0aW9u
OjpGb3J3YXJkXTsKICAgICBbYXR0cmlidXRlZFN0cmluZyByZWxlYXNlXTsKICAgICByZXR1cm4g
cmVzdWx0OwogI2Vsc2UKQEAgLTI0MywxNCArMjQ0LDMxIEBAIGludCBmaW5kTmV4dFdvcmRGcm9t
SW5kZXgoU3RyaW5nVmlldyB0ZXgKICAgICBpbnQgcG9zID0gcG9zaXRpb247CiAgICAgVUJyZWFr
SXRlcmF0b3IqIGJvdW5kYXJ5ID0gd29yZEJyZWFrSXRlcmF0b3IodGV4dCk7CiAgICAgaWYgKGJv
dW5kYXJ5KSB7Ci0gICAgICAgIGlmIChmb3J3YXJkKSB7CisgICAgICAgIGlmIChkaXJlY3Rpb24g
PT0gTmV4dFdvcmREaXJlY3Rpb246OkZvcndhcmQpIHsKKyAgICAgICAgICAgIGlmICh3aGl0ZXNw
YWNlTW9kZUluSU9TID09IE5leHRXb3JkTW9kZUluSU9TOjpTdG9wQWZ0ZXJXb3JkKSB7CisgICAg
ICAgICAgICAgICAgd2hpbGUgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihwb3MpIDwgdGV4dC5sZW5n
dGgoKSAmJiBpc1dvcmREZWxpbWl0aW5nQ2hhcmFjdGVyKHRleHRbcG9zXSkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgcG9zID0gdWJya19mb2xsb3dpbmcoYm91bmRhcnksIHBvcyk7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChwb3MgPT0gVUJSS19ET05FKQorICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRleHQubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQogICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgIHBvcyA9IHVicmtfZm9sbG93aW5n
KGJvdW5kYXJ5LCBwb3MpOwogICAgICAgICAgICAgICAgIGlmIChwb3MgPT0gVUJSS19ET05FKQot
ICAgICAgICAgICAgICAgICAgICBwb3MgPSB0ZXh0Lmxlbmd0aCgpOworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdGV4dC5sZW5ndGgoKTsKICAgICAgICAgICAgIH0gd2hpbGUgKHN0YXRpY19j
YXN0PHVuc2lnbmVkPihwb3MpIDwgdGV4dC5sZW5ndGgoKSAmJiAocG9zID09IDAgfHwgIWlzU2tp
cENoYXJhY3Rlcih0ZXh0W3BvcyAtIDFdKSkgJiYgaXNTa2lwQ2hhcmFjdGVyKHRleHRbcG9zXSkp
OworCisgICAgICAgICAgICAvLyBJQ1Ugd291bGQgc2tpcCB0aGUgdHJhaWxpbmcgd2hpdGVzcGFj
ZS4gR28gYmFjay4KKyAgICAgICAgICAgIGlmICh3aGl0ZXNwYWNlTW9kZUluSU9TID09IE5leHRX
b3JkTW9kZUluSU9TOjpTdG9wQWZ0ZXJXb3JkICYmIGlzV29yZERlbGltaXRpbmdDaGFyYWN0ZXIo
dGV4dFtwb3MgLSAxXSkpCisgICAgICAgICAgICAgICAgcG9zID0gdWJya19wcmVjZWRpbmcoYm91
bmRhcnksIHBvcyk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAo
d2hpdGVzcGFjZU1vZGVJbklPUyA9PSBOZXh0V29yZE1vZGVJbklPUzo6U3RvcEFmdGVyV29yZCAm
JiBwb3MgJiYgaXNXb3JkRGVsaW1pdGluZ0NoYXJhY3Rlcih0ZXh0W3BvcyAtIDFdKSkgeworICAg
ICAgICAgICAgICAgIHBvcyA9IHVicmtfcHJlY2VkaW5nKGJvdW5kYXJ5LCBwb3MpOworICAgICAg
ICAgICAgICAgIGlmIChwb3MgPT0gVUJSS19ET05FKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAg
IHBvcyA9IHVicmtfcHJlY2VkaW5nKGJvdW5kYXJ5LCBwb3MpOwogICAgICAgICAgICAgICAgIGlm
IChwb3MgPT0gVUJSS19ET05FKQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ5NjU3KQorKysgTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTktMDkt
MDkgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgT3B0aW9uICsg
YXJyb3cgbW92ZXMgY2FyZXQgcGFzdCB3aGl0ZXNwYWNlIG9uIGlPUworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNTc1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSBuZXcgdGVzdCBmb3IgbW92
aW5nIGNhcmV0IGJ5IHdvcmQgZ3JhbnVsYXJpdHkgb24gaU9TLgorCisgICAgICAgICogZWRpdGlu
Zy9zZWxlY3Rpb24vaW9zL21vdmUtYnktd29yZC13aXRoLWtleWJvYXJkLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vaW9zL21vdmUtYnktd29yZC13aXRo
LWtleWJvYXJkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2lvcy9z
ZWxlY3Qtbm9uLWVkaXRhYmxlLXRleHQtdXNpbmcta2V5Ym9hcmQtZXhwZWN0ZWQudHh0OiBSZWJh
c2VsaW5lZC4KKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9pb3Mvc2VsZWN0LW5vbi1lZGl0
YWJsZS10ZXh0LXVzaW5nLWtleWJvYXJkLmh0bWw6IFVwZGF0ZWQgdGhlIGV4cGVjdGVkCisgICAg
ICAgIHNlbGVjdGlvbiBzdHJpbmcgZHVlIHRvIHRoZSBiZWhhdmlvciBjaGFuZ2UuIEFsc28gZml4
ZWQgYSBidWcgdGhhdCBzb21lIHRlc3QgY2FzZXMgd2VyZQorICAgICAgICBub3Qgd2FpdGluZyBm
b3IgYSBzZWNvbmRhcnkgc2VsZWN0aW9uY2hhbmdlIGV2ZW50IHRoYXQgaGFwcGVucyBhZnRlciBh
biBleHRyYSBzZWxlY3Rpb24KKyAgICAgICAgdXBkYXRlIHdpdGggY2hhcmFjdGVyIGdyYW51bGFy
aXR5IGludHJvZHVjZWQgaW4gcjI0NzUyNC4KKwogMjAxOS0wOS0wOSAgSmlld2VuIFRhbiAgPGpp
ZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIExheW91dCBUZXN0IGh0dHAvd3B0L3dlYmF1
dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS11MmYtc2lsZW50Lmh0dHBz
Lmh0bWwgaXMgZmxha3kKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9t
b3ZlLWJ5LXdvcmQtd2l0aC1rZXlib2FyZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL21vdmUtYnktd29yZC13aXRoLWtleWJvYXJk
LWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVj
dGlvbi9pb3MvbW92ZS1ieS13b3JkLXdpdGgta2V5Ym9hcmQtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNDIzIEBACitUaGlzIHRlc3RzIG1vdmluZyB0aGUgY2FyZXQgd2l0
aCB3b3JkIGdyYW51bGFyaXR5IG9uIGlPUy4KK1dlYktpdCBzaG91bGQgc3RvcCBhdCB0aGUgZW5k
IG9mIGVhY2ggd29yZCBiZWZvcmUgd2hpdGVzcGFjZSB3aGVuIG1vdmluZyBmb3J3YXJkcywgYW5k
IGFmdGVyIHdoaXRlc3BhY2Ugd2hlbiBtb3ZpbmcgYmFja3dhcmRzLAorVGhlIGVtcHR5IGxpbmUg
c2hvdWxkIGJlIHNraXBwZWQgaW4gZWl0aGVyIGRpcmVjdGlvbi4KKworQmVmb3JlIG1vdmluZyBm
b3J3YXJkczoKK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAiPCNzZWxlY3Rpb24tY2FyZXQ+aGVs
bG8gd29ybGQiCit8ICIKKyAgICAiCit8IDxicj4KK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAi
cmVkLCBncmVlbiwgJiBibHVlLiIKK3wgIgorIgorCitBZnRlciBtb3ZpbmcgdG8gdGhlIHJpZ2h0
IGJ5IHdvcmQgKDEpOgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJoZWxsbzwjc2VsZWN0aW9u
LWNhcmV0PiB3b3JsZCIKK3wgIgorICAgICIKK3wgPGJyPgorfCAiCisgICAgIgorfCA8ZGl2Pgor
fCAgICJyZWQsIGdyZWVuLCAmIGJsdWUuIgorfCAiCisiCisKK0FmdGVyIG1vdmluZyB0byB0aGUg
cmlnaHQgYnkgd29yZCAoMik6Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgImhlbGxvIHdvcmxk
PCNzZWxlY3Rpb24tY2FyZXQ+IgorfCAiCisgICAgIgorfCA8YnI+Cit8ICIKKyAgICAiCit8IDxk
aXY+Cit8ICAgInJlZCwgZ3JlZW4sICYgYmx1ZS4iCit8ICIKKyIKKworQWZ0ZXIgbW92aW5nIHRv
IHRoZSByaWdodCBieSB3b3JkICgzKToKK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAiaGVsbG8g
d29ybGQiCit8ICIKKyAgICAiCit8IDxicj4KK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAicmVk
LDwjc2VsZWN0aW9uLWNhcmV0PiBncmVlbiwgJiBibHVlLiIKK3wgIgorIgorCitBZnRlciBtb3Zp
bmcgdG8gdGhlIHJpZ2h0IGJ5IHdvcmQgKDQpOgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJo
ZWxsbyB3b3JsZCIKK3wgIgorICAgICIKK3wgPGJyPgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAg
ICJyZWQsIGdyZWVuLDwjc2VsZWN0aW9uLWNhcmV0PiAmIGJsdWUuIgorfCAiCisiCisKK0FmdGVy
IG1vdmluZyB0byB0aGUgcmlnaHQgYnkgd29yZCAoNSk6Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8
ICAgImhlbGxvIHdvcmxkIgorfCAiCisgICAgIgorfCA8YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+
Cit8ICAgInJlZCwgZ3JlZW4sICY8I3NlbGVjdGlvbi1jYXJldD4gYmx1ZS4iCit8ICIKKyIKKwor
QWZ0ZXIgbW92aW5nIHRvIHRoZSByaWdodCBieSB3b3JkICg2KToKK3wgIgorICAgICIKK3wgPGRp
dj4KK3wgICAiaGVsbG8gd29ybGQiCit8ICIKKyAgICAiCit8IDxicj4KK3wgIgorICAgICIKK3wg
PGRpdj4KK3wgICAicmVkLCBncmVlbiwgJiBibHVlLjwjc2VsZWN0aW9uLWNhcmV0PiIKK3wgIgor
IgorCitCZWZvcmUgbW92aW5nIGJhY2t3YXJkczoKK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAi
aGVsbG8gd29ybGQiCit8ICIKKyAgICAiCit8IDxicj4KK3wgIgorICAgICIKK3wgPGRpdj4KK3wg
ICAicmVkLCBncmVlbiwgJiBibHVlLjwjc2VsZWN0aW9uLWNhcmV0PiIKK3wgIgorIgorCitBZnRl
ciBtb3ZpbmcgdG8gdGhlIGxlZnQgYnkgd29yZCAoMSk6Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8
ICAgImhlbGxvIHdvcmxkIgorfCAiCisgICAgIgorfCA8YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+
Cit8ICAgInJlZCwgZ3JlZW4sICYgPCNzZWxlY3Rpb24tY2FyZXQ+Ymx1ZS4iCit8ICIKKyIKKwor
QWZ0ZXIgbW92aW5nIHRvIHRoZSBsZWZ0IGJ5IHdvcmQgKDIpOgorfCAiCisgICAgIgorfCA8ZGl2
PgorfCAgICJoZWxsbyB3b3JsZCIKK3wgIgorICAgICIKK3wgPGJyPgorfCAiCisgICAgIgorfCA8
ZGl2PgorfCAgICJyZWQsIGdyZWVuLCA8I3NlbGVjdGlvbi1jYXJldD4mIGJsdWUuIgorfCAiCisi
CisKK0FmdGVyIG1vdmluZyB0byB0aGUgbGVmdCBieSB3b3JkICgzKToKK3wgIgorICAgICIKK3wg
PGRpdj4KK3wgICAiaGVsbG8gd29ybGQiCit8ICIKKyAgICAiCit8IDxicj4KK3wgIgorICAgICIK
K3wgPGRpdj4KK3wgICAicmVkLCA8I3NlbGVjdGlvbi1jYXJldD5ncmVlbiwgJiBibHVlLiIKK3wg
IgorIgorCitBZnRlciBtb3ZpbmcgdG8gdGhlIGxlZnQgYnkgd29yZCAoNCk6Cit8ICIKKyAgICAi
Cit8IDxkaXY+Cit8ICAgImhlbGxvIHdvcmxkIgorfCAiCisgICAgIgorfCA8YnI+Cit8ICIKKyAg
ICAiCit8IDxkaXY+Cit8ICAgIjwjc2VsZWN0aW9uLWNhcmV0PnJlZCwgZ3JlZW4sICYgYmx1ZS4i
Cit8ICIKKyIKKworQWZ0ZXIgbW92aW5nIHRvIHRoZSBsZWZ0IGJ5IHdvcmQgKDUpOgorfCAiCisg
ICAgIgorfCA8ZGl2PgorfCAgICJoZWxsbyA8I3NlbGVjdGlvbi1jYXJldD53b3JsZCIKK3wgIgor
ICAgICIKK3wgPGJyPgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJyZWQsIGdyZWVuLCAmIGJs
dWUuIgorfCAiCisiCisKK0FmdGVyIG1vdmluZyB0byB0aGUgbGVmdCBieSB3b3JkICg2KToKK3wg
IgorICAgICIKK3wgPGRpdj4KK3wgICAiPCNzZWxlY3Rpb24tY2FyZXQ+aGVsbG8gd29ybGQiCit8
ICIKKyAgICAiCit8IDxicj4KK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAicmVkLCBncmVlbiwg
JiBibHVlLiIKK3wgIgorIgorCitCZWZvcmUgZXh0ZW5kaW5nIGZvcndhcmRzOgorfCAiCisgICAg
IgorfCA8ZGl2PgorfCAgICI8I3NlbGVjdGlvbi1jYXJldD5oZWxsbyB3b3JsZCIKK3wgIgorICAg
ICIKK3wgPGJyPgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJyZWQsIGdyZWVuLCAmIGJsdWUu
IgorfCAiCisiCisKK0FmdGVyIGV4dGVuZGluZyB0byB0aGUgcmlnaHQgYnkgd29yZCAoMSk6Cit8
ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgIjwjc2VsZWN0aW9uLWFuY2hvcj5oZWxsbzwjc2VsZWN0
aW9uLWZvY3VzPiB3b3JsZCIKK3wgIgorICAgICIKK3wgPGJyPgorfCAiCisgICAgIgorfCA8ZGl2
PgorfCAgICJyZWQsIGdyZWVuLCAmIGJsdWUuIgorfCAiCisiCisKK0FmdGVyIGV4dGVuZGluZyB0
byB0aGUgcmlnaHQgYnkgd29yZCAoMik6Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgIjwjc2Vs
ZWN0aW9uLWFuY2hvcj5oZWxsbyB3b3JsZDwjc2VsZWN0aW9uLWZvY3VzPiIKK3wgIgorICAgICIK
K3wgPGJyPgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJyZWQsIGdyZWVuLCAmIGJsdWUuIgor
fCAiCisiCisKK0FmdGVyIGV4dGVuZGluZyB0byB0aGUgcmlnaHQgYnkgd29yZCAoMyk6Cit8ICIK
KyAgICAiCit8IDxkaXY+Cit8ICAgIjwjc2VsZWN0aW9uLWFuY2hvcj5oZWxsbyB3b3JsZCIKK3wg
IgorICAgICIKK3wgPGJyPgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJyZWQsPCNzZWxlY3Rp
b24tZm9jdXM+IGdyZWVuLCAmIGJsdWUuIgorfCAiCisiCisKK0FmdGVyIGV4dGVuZGluZyB0byB0
aGUgcmlnaHQgYnkgd29yZCAoNCk6Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgIjwjc2VsZWN0
aW9uLWFuY2hvcj5oZWxsbyB3b3JsZCIKK3wgIgorICAgICIKK3wgPGJyPgorfCAiCisgICAgIgor
fCA8ZGl2PgorfCAgICJyZWQsIGdyZWVuLDwjc2VsZWN0aW9uLWZvY3VzPiAmIGJsdWUuIgorfCAi
CisiCisKK0FmdGVyIGV4dGVuZGluZyB0byB0aGUgcmlnaHQgYnkgd29yZCAoNSk6Cit8ICIKKyAg
ICAiCit8IDxkaXY+Cit8ICAgIjwjc2VsZWN0aW9uLWFuY2hvcj5oZWxsbyB3b3JsZCIKK3wgIgor
ICAgICIKK3wgPGJyPgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJyZWQsIGdyZWVuLCAmPCNz
ZWxlY3Rpb24tZm9jdXM+IGJsdWUuIgorfCAiCisiCisKK0FmdGVyIGV4dGVuZGluZyB0byB0aGUg
cmlnaHQgYnkgd29yZCAoNik6Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgIjwjc2VsZWN0aW9u
LWFuY2hvcj5oZWxsbyB3b3JsZCIKK3wgIgorICAgICIKK3wgPGJyPgorfCAiCisgICAgIgorfCA8
ZGl2PgorfCAgICJyZWQsIGdyZWVuLCAmIGJsdWUuPCNzZWxlY3Rpb24tZm9jdXM+IgorfCAiCisi
CisKK0JlZm9yZSBleHRlbmRpbmcgYmFja3dhcmRzOgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAg
ICJoZWxsbyB3b3JsZCIKK3wgIgorICAgICIKK3wgPGJyPgorfCAiCisgICAgIgorfCA8ZGl2Pgor
fCAgICJyZWQsIGdyZWVuLCAmIGJsdWUuPCNzZWxlY3Rpb24tY2FyZXQ+IgorfCAiCisiCisKK0Fm
dGVyIGV4dGVuZGluZyB0byB0aGUgbGVmdCBieSB3b3JkICgxKToKK3wgIgorICAgICIKK3wgPGRp
dj4KK3wgICAiaGVsbG8gd29ybGQiCit8ICIKKyAgICAiCit8IDxicj4KK3wgIgorICAgICIKK3wg
PGRpdj4KK3wgICAicmVkLCBncmVlbiwgJiA8I3NlbGVjdGlvbi1mb2N1cz5ibHVlLjwjc2VsZWN0
aW9uLWFuY2hvcj4iCit8ICIKKyIKKworQWZ0ZXIgZXh0ZW5kaW5nIHRvIHRoZSBsZWZ0IGJ5IHdv
cmQgKDIpOgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJoZWxsbyB3b3JsZCIKK3wgIgorICAg
ICIKK3wgPGJyPgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJyZWQsIGdyZWVuLCA8I3NlbGVj
dGlvbi1mb2N1cz4mIGJsdWUuPCNzZWxlY3Rpb24tYW5jaG9yPiIKK3wgIgorIgorCitBZnRlciBl
eHRlbmRpbmcgdG8gdGhlIGxlZnQgYnkgd29yZCAoMyk6Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8
ICAgImhlbGxvIHdvcmxkIgorfCAiCisgICAgIgorfCA8YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+
Cit8ICAgInJlZCwgPCNzZWxlY3Rpb24tZm9jdXM+Z3JlZW4sICYgYmx1ZS48I3NlbGVjdGlvbi1h
bmNob3I+IgorfCAiCisiCisKK0FmdGVyIGV4dGVuZGluZyB0byB0aGUgbGVmdCBieSB3b3JkICg0
KToKK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAiaGVsbG8gd29ybGQiCit8ICIKKyAgICAiCit8
IDxicj4KK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAiPCNzZWxlY3Rpb24tZm9jdXM+cmVkLCBn
cmVlbiwgJiBibHVlLjwjc2VsZWN0aW9uLWFuY2hvcj4iCit8ICIKKyIKKworQWZ0ZXIgZXh0ZW5k
aW5nIHRvIHRoZSBsZWZ0IGJ5IHdvcmQgKDUpOgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJo
ZWxsbyA8I3NlbGVjdGlvbi1mb2N1cz53b3JsZCIKK3wgIgorICAgICIKK3wgPGJyPgorfCAiCisg
ICAgIgorfCA8ZGl2PgorfCAgICJyZWQsIGdyZWVuLCAmIGJsdWUuPCNzZWxlY3Rpb24tYW5jaG9y
PiIKK3wgIgorIgorCitBZnRlciBleHRlbmRpbmcgdG8gdGhlIGxlZnQgYnkgd29yZCAoNik6Cit8
ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgIjwjc2VsZWN0aW9uLWZvY3VzPmhlbGxvIHdvcmxkIgor
fCAiCisgICAgIgorfCA8YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgInJlZCwgZ3JlZW4s
ICYgYmx1ZS48I3NlbGVjdGlvbi1hbmNob3I+IgorfCAiCisiCkluZGV4OiBMYXlvdXRUZXN0cy9l
ZGl0aW5nL3NlbGVjdGlvbi9pb3MvbW92ZS1ieS13b3JkLXdpdGgta2V5Ym9hcmQuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3MvbW92ZS1ieS13b3Jk
LXdpdGgta2V5Ym9hcmQuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5n
L3NlbGVjdGlvbi9pb3MvbW92ZS1ieS13b3JkLXdpdGgta2V5Ym9hcmQuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDc5IEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1y
dW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFs
LXNjYWxlPTEsIG1heGltdW0tc2NhbGU9MSwgc2hyaW5rLXRvLWZpdD1ubyI+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vcmVzb3VyY2VzL2R1bXAtYXMtbWFya3VwLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQ+CisKK01hcmt1cC5kZXNjcmlwdGlvbihgVGhpcyB0ZXN0cyBtb3ZpbmcgdGhlIGNhcmV0IHdp
dGggd29yZCBncmFudWxhcml0eSBvbiBpT1MuCitXZWJLaXQgc2hvdWxkIHN0b3AgYXQgdGhlIGVu
ZCBvZiBlYWNoIHdvcmQgYmVmb3JlIHdoaXRlc3BhY2Ugd2hlbiBtb3ZpbmcgZm9yd2FyZHMsIGFu
ZCBhZnRlciB3aGl0ZXNwYWNlIHdoZW4gbW92aW5nIGJhY2t3YXJkcywKK1RoZSBlbXB0eSBsaW5l
IHNob3VsZCBiZSBza2lwcGVkIGluIGVpdGhlciBkaXJlY3Rpb24uYCk7CitNYXJrdXAubm9BdXRv
RHVtcCgpOworTWFya3VwLndhaXRVbnRpbERvbmUoKTsKKworYXN5bmMgZnVuY3Rpb24gcnVuVGVz
dCgpCit7CisgICAgY29uc3QgZWRpdG9yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRv
cicpOworCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICBhd2FpdCBVSUhlbHBl
ci5hY3RpdmF0ZUVsZW1lbnRBbmRXYWl0Rm9ySW5wdXRTZXNzaW9uKGVkaXRvcik7CisKKyAgICBp
ZiAoIXdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIE1hcmt1cC5kdW1wKGVkaXRvciwgJ01h
cmt1cCcpOworICAgICAgICBNYXJrdXAubm90aWZ5RG9uZSgpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24oZWRpdG9yLCAwKTsKKyAgICBN
YXJrdXAuZHVtcChlZGl0b3IsICdCZWZvcmUgbW92aW5nIGZvcndhcmRzJyk7CisKKyAgICBjb25z
dCBtb3ZlQ291bnQgPSA2OworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtb3ZlQ291bnQ7IGkr
KykgeworICAgICAgICBhd2FpdCBVSUhlbHBlci5rZXlEb3duKCdyaWdodEFycm93JywgWydhbHRL
ZXknXSk7CisgICAgICAgIGF3YWl0IFVJSGVscGVyLmVuc3VyZVByZXNlbnRhdGlvblVwZGF0ZSgp
OworICAgICAgICBNYXJrdXAuZHVtcChlZGl0b3IsIGBBZnRlciBtb3ZpbmcgdG8gdGhlIHJpZ2h0
IGJ5IHdvcmQgKCR7aSArIDF9KWApOworICAgIH0KKworICAgIGdldFNlbGVjdGlvbigpLnNldFBv
c2l0aW9uKGVkaXRvciwgZWRpdG9yLmNoaWxkTm9kZXMubGVuZ3RoKTsKKyAgICBNYXJrdXAuZHVt
cChlZGl0b3IsICdCZWZvcmUgbW92aW5nIGJhY2t3YXJkcycpOworCisgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCBtb3ZlQ291bnQ7IGkrKykgeworICAgICAgICBhd2FpdCBVSUhlbHBlci5rZXlEb3du
KCdsZWZ0QXJyb3cnLCBbJ2FsdEtleSddKTsKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIuZW5zdXJl
UHJlc2VudGF0aW9uVXBkYXRlKCk7CisgICAgICAgIE1hcmt1cC5kdW1wKGVkaXRvciwgYEFmdGVy
IG1vdmluZyB0byB0aGUgbGVmdCBieSB3b3JkICgke2kgKyAxfSlgKTsKKyAgICB9CisKKyAgICBn
ZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbihlZGl0b3IsIDApOworICAgIE1hcmt1cC5kdW1wKGVk
aXRvciwgJ0JlZm9yZSBleHRlbmRpbmcgZm9yd2FyZHMnKTsKKworICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgbW92ZUNvdW50OyBpKyspIHsKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIua2V5RG93bign
cmlnaHRBcnJvdycsIFsnc2hpZnRLZXknLCAnYWx0S2V5J10pOworICAgICAgICBhd2FpdCBVSUhl
bHBlci5lbnN1cmVQcmVzZW50YXRpb25VcGRhdGUoKTsKKyAgICAgICAgTWFya3VwLmR1bXAoZWRp
dG9yLCBgQWZ0ZXIgZXh0ZW5kaW5nIHRvIHRoZSByaWdodCBieSB3b3JkICgke2kgKyAxfSlgKTsK
KyAgICB9CisKKyAgICBnZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbihlZGl0b3IsIGVkaXRvci5j
aGlsZE5vZGVzLmxlbmd0aCk7CisgICAgTWFya3VwLmR1bXAoZWRpdG9yLCAnQmVmb3JlIGV4dGVu
ZGluZyBiYWNrd2FyZHMnKTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbW92ZUNvdW50OyBp
KyspIHsKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIua2V5RG93bignbGVmdEFycm93JywgWydzaGlm
dEtleScsICdhbHRLZXknXSk7CisgICAgICAgIGF3YWl0IFVJSGVscGVyLmVuc3VyZVByZXNlbnRh
dGlvblVwZGF0ZSgpOworICAgICAgICBNYXJrdXAuZHVtcChlZGl0b3IsIGBBZnRlciBleHRlbmRp
bmcgdG8gdGhlIGxlZnQgYnkgd29yZCAoJHtpICsgMX0pYCk7CisgICAgfQorCisgICAgTWFya3Vw
Lm5vdGlmeURvbmUoKTsKK30KKworb25sb2FkID0gcnVuVGVzdDsKKzwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJlZGl0b3IiIGNvbnRlbnRlZGl0YWJsZT4KKyAgICA8ZGl2Pmhl
bGxvIHdvcmxkPC9kaXY+CisgICAgPGJyPgorICAgIDxkaXY+cmVkLCBncmVlbiwgJiBibHVlLjwv
ZGl2PgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5n
L3NlbGVjdGlvbi9pb3Mvc2VsZWN0LW5vbi1lZGl0YWJsZS10ZXh0LXVzaW5nLWtleWJvYXJkLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9p
b3Mvc2VsZWN0LW5vbi1lZGl0YWJsZS10ZXh0LXVzaW5nLWtleWJvYXJkLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMjQ5NjU3KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL3Nl
bGVjdC1ub24tZWRpdGFibGUtdGV4dC11c2luZy1rZXlib2FyZC1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTExLDcgKzExLDcgQEAgUHJlc3MgU2hpZnQgKyBsZWZ0IGFycm93IHRvIHNl
bGVjdCB0aGUgcAogUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiSGVy
IgogCiBQcmVzcyBTaGlmdCArIE9wdGlvbiArIHJpZ2h0IGFycm93IHRvIHNlbGVjdCB0byB0aGUg
ZW5kIG9mIHRoZSB3b3JkOgotUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBp
cyAiSGVyZSdzICIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIkhl
cmUncyIKIAogUHJlc3MgU2hpZnQgKyBPcHRpb24gKyBsZWZ0IGFycm93IHRvIHNlbGVjdCB0byB0
aGUgYmVnaW5uaW5nIG9mIHRoZSB3b3JkOgogUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9T
dHJpbmcoKSBpcyAiVGhlIgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9z
L3NlbGVjdC1ub24tZWRpdGFibGUtdGV4dC11c2luZy1rZXlib2FyZC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9zZWxlY3Qtbm9uLWVkaXRhYmxl
LXRleHQtdXNpbmcta2V5Ym9hcmQuaHRtbAkocmV2aXNpb24gMjQ5NjU3KQorKysgTGF5b3V0VGVz
dHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL3NlbGVjdC1ub24tZWRpdGFibGUtdGV4dC11c2luZy1r
ZXlib2FyZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBAIGFzeW5jIGZ1bmN0
aW9uIHRlc3RFeHRlbmRTZWxlY3Rpb25Ub0VuZE8KIAogICAgIGRlYnVnKCI8YnI+UHJlc3MgU2hp
ZnQgKyBPcHRpb24gKyByaWdodCBhcnJvdyB0byBzZWxlY3QgdG8gdGhlIGVuZCBvZiB0aGUgd29y
ZDoiKTsKICAgICBhd2FpdCBVSUhlbHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkg
PT4gd2luZG93LnRlc3RSdW5uZXIgJiYgVUlIZWxwZXIua2V5RG93bigicmlnaHRBcnJvdyIsIFsi
c2hpZnRLZXkiLCAiYWx0S2V5Il0pICwgZG9jdW1lbnQsICJzZWxlY3Rpb25jaGFuZ2UiKTsKLSAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygp
IiwgIkhlcmUncyAiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxl
Y3Rpb24oKS50b1N0cmluZygpIiwgIkhlcmUncyIpOwogfQogCiBhc3luYyBmdW5jdGlvbiB0ZXN0
RXh0ZW5kU2VsZWN0aW9uVG9CZWdpbm5pbmdPZldvcmQoKQpAQCAtNzksNiArNzksMTMgQEAgYXN5
bmMgZnVuY3Rpb24gdGVzdEV4dGVuZFNlbGVjdGlvblRvQmVnaQogICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiVGhlIG1pc2ZpdHMu
Iik7CiB9CiAKK2FzeW5jIGZ1bmN0aW9uIHdhaXRGb3JTZWNvbmRhcnlQcmVzZW50YXRpb25VcGRh
dGVJZk5lZWRlZCgpCit7CisgICAgLy8gVGhlcmUgbWlnaHQgYmUgYSBzZWNvbmRhcnkgc2VsZWN0
aW9uY2hhbmdlIGV2ZW50IGFmdGVyIG1vdmluZyBieSBwYXJhZ3JhcGggYm91bmRhcnkuIFNlZSB3
ZWJraXQub3JnL2IvMTk5ODUxCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICBh
d2FpdCBVSUhlbHBlci5lbnN1cmVQcmVzZW50YXRpb25VcGRhdGUoKTsKK30KKwogYXN5bmMgZnVu
Y3Rpb24gdGVzdEV4dGVuZFNlbGVjdGlvblVwKCkKIHsKICAgICBhd2FpdCBVSUhlbHBlci5jYWxs
RnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gc2VsZWN0aW9uLnNldEJhc2VBbmRFeHRlbnQo
cGFyYWdyYXBoc1sxXS5maXJzdENoaWxkLCAxLCBwYXJhZ3JhcGhzWzFdLmZpcnN0Q2hpbGQsIDAp
LCBkb2N1bWVudCwgInNlbGVjdGlvbmNoYW5nZSIpOwpAQCAtODYsNiArOTMsNyBAQCBhc3luYyBm
dW5jdGlvbiB0ZXN0RXh0ZW5kU2VsZWN0aW9uVXAoKQogICAgIGRlYnVnKCI8YnI+UHJlc3MgU2hp
ZnQgKyB1cCBhcnJvdyB0byBzZWxlY3QgdXA6Iik7CiAgICAgYXdhaXQgVUlIZWxwZXIuY2FsbEZ1
bmN0aW9uQW5kV2FpdEZvckV2ZW50KCgpID0+IHdpbmRvdy50ZXN0UnVubmVyICYmIFVJSGVscGVy
LmtleURvd24oInVwQXJyb3ciLCBbInNoaWZ0S2V5Il0pICwgZG9jdW1lbnQsICJzZWxlY3Rpb25j
aGFuZ2UiKTsKICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24o
KS50b1N0cmluZygpIiwgIkhlcmUncyB0byB0aGUgY3Jhenkgb25lcy5cblxuVCIpOworICAgIGF3
YWl0IHdhaXRGb3JTZWNvbmRhcnlQcmVzZW50YXRpb25VcGRhdGVJZk5lZWRlZCgpOwogfQogCiBh
c3luYyBmdW5jdGlvbiB0ZXN0RXh0ZW5kU2VsZWN0aW9uRG93bigpCkBAIC05NSw2ICsxMDMsNyBA
QCBhc3luYyBmdW5jdGlvbiB0ZXN0RXh0ZW5kU2VsZWN0aW9uRG93bigpCiAgICAgZGVidWcoIjxi
cj5QcmVzcyBTaGlmdCArIGRvd24gYXJyb3cgdG8gc2VsZWN0IGRvd246Iik7CiAgICAgYXdhaXQg
VUlIZWxwZXIuY2FsbEZ1bmN0aW9uQW5kV2FpdEZvckV2ZW50KCgpID0+IHdpbmRvdy50ZXN0UnVu
bmVyICYmIFVJSGVscGVyLmtleURvd24oImRvd25BcnJvdyIsIFsic2hpZnRLZXkiXSkgLCBkb2N1
bWVudCwgInNlbGVjdGlvbmNoYW5nZSIpOwogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2lu
ZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiVGhlIG1pc2ZpdHMuXG5cblQiKTsKKyAg
ICBhd2FpdCB3YWl0Rm9yU2Vjb25kYXJ5UHJlc2VudGF0aW9uVXBkYXRlSWZOZWVkZWQoKTsKIH0K
IAogYXN5bmMgZnVuY3Rpb24gdGVzdEV4dGVuZFNlbGVjdGlvblRvRW5kT2ZQYXJhZ3JhcGgoKQpA
QCAtMTA3LDYgKzExNiw4IEBAIGFzeW5jIGZ1bmN0aW9uIHRlc3RFeHRlbmRTZWxlY3Rpb25Ub0Vu
ZE8KICAgICBhd2FpdCBVSUhlbHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4g
d2luZG93LnRlc3RSdW5uZXIgJiYgVUlIZWxwZXIua2V5RG93bigiZG93bkFycm93IiwgWyJzaGlm
dEtleSIsICJhbHRLZXkiXSkgLCBkb2N1bWVudCwgInNlbGVjdGlvbmNoYW5nZSIpOwogICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAi
SGVyZSdzIHRvIHRoZSBjcmF6eSBvbmVzLiIpOwogCisgICAgYXdhaXQgd2FpdEZvclNlY29uZGFy
eVByZXNlbnRhdGlvblVwZGF0ZUlmTmVlZGVkKCk7CisKICAgICB0b2dnbGVPbmx5U2hvd1Rlc3RD
b250YWluZXIoKTsKIH0KIApAQCAtMTE4LDggKzEyOSwxMSBAQCBhc3luYyBmdW5jdGlvbiB0ZXN0
RXh0ZW5kU2VsZWN0aW9uVG9CZWdpCiAKICAgICBkZWJ1ZygiPGJyPlByZXNzIFNoaWZ0ICsgT3B0
aW9uICsgdXAgYXJyb3cgdG8gc2VsZWN0IHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHBhcmFncmFw
aDoiKTsKICAgICBhd2FpdCBVSUhlbHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkg
PT4gd2luZG93LnRlc3RSdW5uZXIgJiYgVUlIZWxwZXIua2V5RG93bigidXBBcnJvdyIsIFsic2hp
ZnRLZXkiLCAiYWx0S2V5Il0pICwgZG9jdW1lbnQsICJzZWxlY3Rpb25jaGFuZ2UiKTsKKwogICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCki
LCAiVGhlIHJlYmVscy4iKTsKIAorICAgIGF3YWl0IHdhaXRGb3JTZWNvbmRhcnlQcmVzZW50YXRp
b25VcGRhdGVJZk5lZWRlZCgpOworCiAgICAgdG9nZ2xlT25seVNob3dUZXN0Q29udGFpbmVyKCk7
CiB9CiAKQEAgLTEzMyw2ICsxNDcsOCBAQCBhc3luYyBmdW5jdGlvbiB0ZXN0RXh0ZW5kU2VsZWN0
aW9uVG9FbmRPCiAgICAgYXdhaXQgVUlIZWxwZXIuY2FsbEZ1bmN0aW9uQW5kV2FpdEZvckV2ZW50
KCgpID0+IHdpbmRvdy50ZXN0UnVubmVyICYmIFVJSGVscGVyLmtleURvd24oImRvd25BcnJvdyIs
IFsic2hpZnRLZXkiLCAiY3RybEtleSJdKSAsIGRvY3VtZW50LCAic2VsZWN0aW9uY2hhbmdlIik7
CiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJp
bmcoKSIsICJIZXJlJ3MgdG8gdGhlIGNyYXp5IG9uZXMuXG5cblRoZSBtaXNmaXRzLlxuXG5UaGUg
cmViZWxzLiIpOwogCisgICAgYXdhaXQgd2FpdEZvclNlY29uZGFyeVByZXNlbnRhdGlvblVwZGF0
ZUlmTmVlZGVkKCk7CisKICAgICB0b2dnbGVPbmx5U2hvd1Rlc3RDb250YWluZXIoKTsKIH0KIApA
QCAtMTQ2LDYgKzE2Miw4IEBAIGFzeW5jIGZ1bmN0aW9uIHRlc3RFeHRlbmRTZWxlY3Rpb25Ub0Jl
Z2kKICAgICBhd2FpdCBVSUhlbHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4g
d2luZG93LnRlc3RSdW5uZXIgJiYgVUlIZWxwZXIua2V5RG93bigidXBBcnJvdyIsIFsic2hpZnRL
ZXkiLCAiY3RybEtleSJdKSAsIGRvY3VtZW50LCAic2VsZWN0aW9uY2hhbmdlIik7CiAgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJI
ZXJlJ3MgdG8gdGhlIGNyYXp5IG9uZXMuXG5cblRoZSBtaXNmaXRzLiIpOwogCisgICAgYXdhaXQg
d2FpdEZvclNlY29uZGFyeVByZXNlbnRhdGlvblVwZGF0ZUlmTmVlZGVkKCk7CisKICAgICB0b2dn
bGVPbmx5U2hvd1Rlc3RDb250YWluZXIoKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378444</attachid>
            <date>2019-09-09 23:01:23 -0700</date>
            <delta_ts>2019-09-10 03:54:06 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-201575-20190909230123.patch</filename>
            <type>text/plain</type>
            <size>41901</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0OTY1NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDE5LTA5LTA5ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIE9wdGlvbiArIGFycm93IG1vdmVz
IGNhcmV0IHBhc3Qgd2hpdGVzcGFjZSBvbiBpT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTU3NQorCisgICAgICAgIFJldmlld2VkIGJ5IFdlbnNv
biBIc2llaC4KKworICAgICAgICBUaGUgYnVnIHdhcyBjYXVzZWQgYnkgZmluZE5leHRXb3JkRnJv
bUluZGV4IG9uIGlPUyBiZWhhdmluZyBkaWZmZXJlbnRseSBmcm9tIG1hY09TIGFuZCBVSUtpdCBi
eSBza2lwcGluZworICAgICAgICB0cmFpbGluZyB3aGl0ZXNwYWNlIGFmdGVyIGEgd29yZCB3aGVu
IG1vdmluZyBmb3J3YXJkIGFuZCBub3Qgc2tpcHBpbmcgbGVhZGluZyB3aGl0ZXNwYWNlIHdoZW4g
bW92aW5nIGJhY2t3YXJkLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBt
b2RlIChTdG9wQWZ0ZXJXb3JkKSBvZiBmaW5kTmV4dFdvcmRGcm9tSW5kZXggaW4gaU9TIHRoYXQg
YmV0dGVyIG1hdGNoZXMKKyAgICAgICAgdGhlIGJlaGF2aW9yIG9mIGZpbmROZXh0V29yZEZyb21J
bmRleCBvbiBtYWNPUyBhbmQgVUlLaXQsIGFuZCB1c2UgaXQgaW4gdmFyaW91cyBtb2RpZnkqIGZ1
bmN0aW9ucyBvZgorICAgICAgICBGcmFtZVNlbGVjdGlvbiB3aGVuIHRoZSBzZWxlY3Rpb24gdXBk
YXRlIGlzIHRyaWdnZXJlZCBieSB1c2VyLgorCisgICAgICAgIFRoZSBsZWdhY3kgbW9kZSAoTGVn
YWN5U3RvcEJlZm9yZVdvcmQpIGlzIHVzZWQgaW4gYWxsIG90aGVyIGNhbGwgc2l0ZXMgYXMgd2Vs
bCBhcyB3aGVuIG1vZGlmeSogZnVuY3Rpb25zCisgICAgICAgIGFyZSBpbnZva2VkIGZyb20gYXV0
aG9yIHNjcmlwdHMuCisKKyAgICAgICAgVGVzdDogZWRpdGluZy9zZWxlY3Rpb24vaW9zL21vdmUt
Ynktd29yZC13aXRoLWtleWJvYXJkLmh0bWwKKworICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxl
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bmV4dFdvcmRXaGl0ZXNwYWNlTW9kZUluSU9T
KTogQWRkZWQuIEEgaGVscGVyIHRvIGNvbnZlcnQgRVVzZXJUcmlnZ2VyZWQgdG8gTmV4dFdvcmRN
b2RlSW5JT1MuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6bmV4dFdvcmRQb3Np
dGlvbkZvclBsYXRmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjptb2Rp
ZnlFeHRlbmRpbmdSaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6bW9k
aWZ5RXh0ZW5kaW5nRm9yd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6
bW9kaWZ5TW92aW5nUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246Om1v
ZGlmeU1vdmluZ0ZvcndhcmQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246Om1v
ZGlmeUV4dGVuZGluZ0xlZnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246Om1v
ZGlmeUV4dGVuZGluZ0JhY2t3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9u
Ojptb2RpZnlNb3ZpbmdMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpt
b2RpZnlNb3ZpbmdCYWNrd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6
bW9kaWZ5KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjp1cGRhdGVBcHBlYXJh
bmNlKToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmg6CisgICAgICAgICogZWRp
dGluZy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoQnVmZmVyOjpp
c1dvcmRTdGFydE1hdGNoIGNvbnN0KToKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVVbml0cy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpwcmV2aW91c1dvcmRQb3NpdGlvbkJvdW5kYXJ5KToKKyAg
ICAgICAgKFdlYkNvcmU6OnByZXZpb3VzV29yZFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
Om5leHRXb3JkUG9zaXRpb25Cb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjpuZXh0V29yZFBv
c2l0aW9uKToKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVVbml0cy5oOgorICAgICAgICAqIHBs
YXRmb3JtL3RleHQvVGV4dEJvdW5kYXJpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmluZE5l
eHRXb3JkRnJvbUluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVz
Lmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW06CisgICAg
ICAgIChXZWJDb3JlOjpmaW5kTmV4dFdvcmRGcm9tSW5kZXgpOiBBZGRlZCBhIG5ldyBtb2RlLgor
CiAyMDE5LTA5LTA5ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAg
W0xGQ11bVEZDXSBJbnRyb2R1Y2UgY2VsbCBzcGFjaW5nLgpJbmRleDogU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAJKHJldmlzaW9uIDI0OTY1NykKKysrIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MTEs
MjAgKzcxMSwyNiBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246OmVuZEZvclBsCiAg
ICAgcmV0dXJuIHBvc2l0aW9uRm9yUGxhdGZvcm0oZmFsc2UpOwogfQogCi1WaXNpYmxlUG9zaXRp
b24gRnJhbWVTZWxlY3Rpb246Om5leHRXb3JkUG9zaXRpb25Gb3JQbGF0Zm9ybShjb25zdCBWaXNp
YmxlUG9zaXRpb24gJm9yaWdpbmFsUG9zaXRpb24pCitzdGF0aWMgTmV4dFdvcmRNb2RlSW5JT1Mg
bmV4dFdvcmRXaGl0ZXNwYWNlTW9kZUluSU9TKEVVc2VyVHJpZ2dlcmVkIHVzZXJUcmlnZ2VyZWQp
CiB7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uQWZ0ZXJDdXJyZW50V29yZCA9IG5leHRX
b3JkUG9zaXRpb24ob3JpZ2luYWxQb3NpdGlvbik7CisgICAgcmV0dXJuIHVzZXJUcmlnZ2VyZWQg
PT0gVXNlclRyaWdnZXJlZCA/IE5leHRXb3JkTW9kZUluSU9TOjpTdG9wQWZ0ZXJXb3JkIDogTmV4
dFdvcmRNb2RlSW5JT1M6OkxlZ2FjeVN0b3BCZWZvcmVXb3JkOworfQorCitWaXNpYmxlUG9zaXRp
b24gRnJhbWVTZWxlY3Rpb246Om5leHRXb3JkUG9zaXRpb25Gb3JQbGF0Zm9ybShjb25zdCBWaXNp
YmxlUG9zaXRpb24gJm9yaWdpbmFsUG9zaXRpb24sIEVVc2VyVHJpZ2dlcmVkIHVzZXJUcmlnZ2Vy
ZWQpCit7CisgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uQWZ0ZXJDdXJyZW50V29yZCA9IG5l
eHRXb3JkUG9zaXRpb24ob3JpZ2luYWxQb3NpdGlvbiwgbmV4dFdvcmRXaGl0ZXNwYWNlTW9kZUlu
SU9TKHVzZXJUcmlnZ2VyZWQpKTsKIAogICAgIGlmIChtX2ZyYW1lICYmIG1fZnJhbWUtPmVkaXRv
cigpLmJlaGF2aW9yKCkuc2hvdWxkU2tpcFNwYWNlV2hlbk1vdmluZ1JpZ2h0KCkpIHsKICAgICAg
ICAgLy8gSW4gb3JkZXIgdG8gc2tpcCBzcGFjZXMgd2hlbiBtb3ZpbmcgcmlnaHQsIHdlIGFkdmFu
Y2Ugb25lCiAgICAgICAgIC8vIHdvcmQgZnVydGhlciBhbmQgdGhlbiBtb3ZlIG9uZSB3b3JkIGJh
Y2suIEdpdmVuIHRoZQogICAgICAgICAvLyBzZW1hbnRpY3Mgb2YgcHJldmlvdXNXb3JkUG9zaXRp
b24oKSB0aGlzIHdpbGwgcHV0IHVzIGF0IHRoZQogICAgICAgICAvLyBiZWdpbm5pbmcgb2YgdGhl
IHdvcmQgZm9sbG93aW5nLgotICAgICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25BZnRlclNw
YWNpbmdBbmRGb2xsb3dpbmdXb3JkID0gbmV4dFdvcmRQb3NpdGlvbihwb3NpdGlvbkFmdGVyQ3Vy
cmVudFdvcmQpOworICAgICAgICBhdXRvIHdoaXRlc3BhY2VNb2RlID0gbmV4dFdvcmRXaGl0ZXNw
YWNlTW9kZUluSU9TKHVzZXJUcmlnZ2VyZWQpOworICAgICAgICBWaXNpYmxlUG9zaXRpb24gcG9z
aXRpb25BZnRlclNwYWNpbmdBbmRGb2xsb3dpbmdXb3JkID0gbmV4dFdvcmRQb3NpdGlvbihwb3Np
dGlvbkFmdGVyQ3VycmVudFdvcmQsIHdoaXRlc3BhY2VNb2RlKTsKICAgICAgICAgaWYgKHBvc2l0
aW9uQWZ0ZXJTcGFjaW5nQW5kRm9sbG93aW5nV29yZCAhPSBwb3NpdGlvbkFmdGVyQ3VycmVudFdv
cmQpCi0gICAgICAgICAgICBwb3NpdGlvbkFmdGVyQ3VycmVudFdvcmQgPSBwcmV2aW91c1dvcmRQ
b3NpdGlvbihwb3NpdGlvbkFmdGVyU3BhY2luZ0FuZEZvbGxvd2luZ1dvcmQpOworICAgICAgICAg
ICAgcG9zaXRpb25BZnRlckN1cnJlbnRXb3JkID0gcHJldmlvdXNXb3JkUG9zaXRpb24ocG9zaXRp
b25BZnRlclNwYWNpbmdBbmRGb2xsb3dpbmdXb3JkLCB3aGl0ZXNwYWNlTW9kZSk7CiAKLSAgICAg
ICAgYm9vbCBtb3ZpbmdCYWNrd2FyZHNNb3ZlZFBvc2l0aW9uVG9TdGFydE9mQ3VycmVudFdvcmQg
PSBwb3NpdGlvbkFmdGVyQ3VycmVudFdvcmQgPT0gcHJldmlvdXNXb3JkUG9zaXRpb24obmV4dFdv
cmRQb3NpdGlvbihvcmlnaW5hbFBvc2l0aW9uKSk7CisgICAgICAgIGJvb2wgbW92aW5nQmFja3dh
cmRzTW92ZWRQb3NpdGlvblRvU3RhcnRPZkN1cnJlbnRXb3JkID0gcG9zaXRpb25BZnRlckN1cnJl
bnRXb3JkID09IHByZXZpb3VzV29yZFBvc2l0aW9uKG5leHRXb3JkUG9zaXRpb24ob3JpZ2luYWxQ
b3NpdGlvbiwgd2hpdGVzcGFjZU1vZGUpLCB3aGl0ZXNwYWNlTW9kZSk7CiAgICAgICAgIGlmICht
b3ZpbmdCYWNrd2FyZHNNb3ZlZFBvc2l0aW9uVG9TdGFydE9mQ3VycmVudFdvcmQpCiAgICAgICAg
ICAgICBwb3NpdGlvbkFmdGVyQ3VycmVudFdvcmQgPSBwb3NpdGlvbkFmdGVyU3BhY2luZ0FuZEZv
bGxvd2luZ1dvcmQ7CiAgICAgfQpAQCAtNzM5LDcgKzc0NSw3IEBAIHN0YXRpYyB2b2lkIGFkanVz
dFBvc2l0aW9uRm9yVXNlclNlbGVjdEEKIH0KICNlbmRpZgogCi1WaXNpYmxlUG9zaXRpb24gRnJh
bWVTZWxlY3Rpb246Om1vZGlmeUV4dGVuZGluZ1JpZ2h0KFRleHRHcmFudWxhcml0eSBncmFudWxh
cml0eSkKK1Zpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5RXh0ZW5kaW5nUmln
aHQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBFVXNlclRyaWdnZXJlZCB1c2VyVHJpZ2dl
cmVkKQogewogICAgIFZpc2libGVQb3NpdGlvbiBwb3MobV9zZWxlY3Rpb24uZXh0ZW50KCksIG1f
c2VsZWN0aW9uLmFmZmluaXR5KCkpOwogCkBAIC03NTcsMTUgKzc2MywxNSBAQCBWaXNpYmxlUG9z
aXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
V29yZEdyYW51bGFyaXR5OgogICAgICAgICBpZiAoZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jaygp
ID09IFRleHREaXJlY3Rpb246OkxUUikKLSAgICAgICAgICAgIHBvcyA9IG5leHRXb3JkUG9zaXRp
b25Gb3JQbGF0Zm9ybShwb3MpOworICAgICAgICAgICAgcG9zID0gbmV4dFdvcmRQb3NpdGlvbkZv
clBsYXRmb3JtKHBvcywgdXNlclRyaWdnZXJlZCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IHBvcyA9IHByZXZpb3VzV29yZFBvc2l0aW9uKHBvcyk7CisgICAgICAgICAgICBwb3MgPSBwcmV2
aW91c1dvcmRQb3NpdGlvbihwb3MsIG5leHRXb3JkV2hpdGVzcGFjZU1vZGVJbklPUyh1c2VyVHJp
Z2dlcmVkKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTGluZUJvdW5kYXJ5OgogICAgICAg
ICBpZiAoZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jaygpID09IFRleHREaXJlY3Rpb246OkxUUikK
LSAgICAgICAgICAgIHBvcyA9IG1vZGlmeUV4dGVuZGluZ0ZvcndhcmQoZ3JhbnVsYXJpdHkpOwor
ICAgICAgICAgICAgcG9zID0gbW9kaWZ5RXh0ZW5kaW5nRm9yd2FyZChncmFudWxhcml0eSwgdXNl
clRyaWdnZXJlZCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHBvcyA9IG1vZGlmeUV4dGVu
ZGluZ0JhY2t3YXJkKGdyYW51bGFyaXR5KTsKKyAgICAgICAgICAgIHBvcyA9IG1vZGlmeUV4dGVu
ZGluZ0JhY2t3YXJkKGdyYW51bGFyaXR5LCB1c2VyVHJpZ2dlcmVkKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5OgogICAgIGNhc2UgTGluZUdyYW51bGFyaXR5
OgpAQCAtNzc0LDcgKzc4MCw3IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9k
aWZ5RXgKICAgICBjYXNlIFBhcmFncmFwaEJvdW5kYXJ5OgogICAgIGNhc2UgRG9jdW1lbnRCb3Vu
ZGFyeToKICAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCBhbGwgb2YgdGhlIGFib3ZlPwotICAg
ICAgICBwb3MgPSBtb2RpZnlFeHRlbmRpbmdGb3J3YXJkKGdyYW51bGFyaXR5KTsKKyAgICAgICAg
cG9zID0gbW9kaWZ5RXh0ZW5kaW5nRm9yd2FyZChncmFudWxhcml0eSwgdXNlclRyaWdnZXJlZCk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRG9jdW1lbnRHcmFudWxhcml0eToKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC03ODYsNyArNzkyLDcgQEAgVmlzaWJsZVBvc2l0aW9u
IEZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeAogICAgIHJldHVybiBwb3M7CiB9CiAKLVZpc2libGVQ
b3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5RXh0ZW5kaW5nRm9yd2FyZChUZXh0R3JhbnVs
YXJpdHkgZ3JhbnVsYXJpdHkpCitWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlm
eUV4dGVuZGluZ0ZvcndhcmQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBFVXNlclRyaWdn
ZXJlZCB1c2VyVHJpZ2dlcmVkKQogewogICAgIFZpc2libGVQb3NpdGlvbiBwb3MobV9zZWxlY3Rp
b24uZXh0ZW50KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpOwogICAgIHN3aXRjaCAoZ3JhbnVs
YXJpdHkpIHsKQEAgLTc5NCw3ICs4MDAsNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rp
b246Om1vZGlmeUV4CiAgICAgICAgIHBvcyA9IHBvcy5uZXh0KENhbm5vdENyb3NzRWRpdGluZ0Jv
dW5kYXJ5KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6Ci0gICAg
ICAgIHBvcyA9IG5leHRXb3JkUG9zaXRpb25Gb3JQbGF0Zm9ybShwb3MpOworICAgICAgICBwb3Mg
PSBuZXh0V29yZFBvc2l0aW9uRm9yUGxhdGZvcm0ocG9zLCB1c2VyVHJpZ2dlcmVkKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5OgogICAgICAgICBwb3MgPSBu
ZXh0U2VudGVuY2VQb3NpdGlvbihwb3MpOwpAQCAtODMxLDcgKzgzNyw3IEBAIFZpc2libGVQb3Np
dGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5RXgKICAgICByZXR1cm4gcG9zOwogfQogCi1WaXNp
YmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeU1vdmluZ1JpZ2h0KFRleHRHcmFudWxh
cml0eSBncmFudWxhcml0eSwgYm9vbCogcmVhY2hlZEJvdW5kYXJ5KQorVmlzaWJsZVBvc2l0aW9u
IEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNb3ZpbmdSaWdodChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVs
YXJpdHksIEVVc2VyVHJpZ2dlcmVkIHVzZXJUcmlnZ2VyZWQsIGJvb2wqIHJlYWNoZWRCb3VuZGFy
eSkKIHsKICAgICBpZiAocmVhY2hlZEJvdW5kYXJ5KQogICAgICAgICAqcmVhY2hlZEJvdW5kYXJ5
ID0gZmFsc2U7CkBAIC04NjEsNyArODY3LDcgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0
aW9uOjptb2RpZnlNbwogICAgIGNhc2UgUGFyYWdyYXBoQm91bmRhcnk6CiAgICAgY2FzZSBEb2N1
bWVudEJvdW5kYXJ5OgogICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGFsbCBvZiB0aGUgYWJv
dmUuCi0gICAgICAgIHBvcyA9IG1vZGlmeU1vdmluZ0ZvcndhcmQoZ3JhbnVsYXJpdHksIHJlYWNo
ZWRCb3VuZGFyeSk7CisgICAgICAgIHBvcyA9IG1vZGlmeU1vdmluZ0ZvcndhcmQoZ3JhbnVsYXJp
dHksIHVzZXJUcmlnZ2VyZWQsIHJlYWNoZWRCb3VuZGFyeSk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgTGluZUJvdW5kYXJ5OgogICAgICAgICBwb3MgPSByaWdodEJvdW5kYXJ5T2ZMaW5lKHN0
YXJ0Rm9yUGxhdGZvcm0oKSwgZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jaygpLCByZWFjaGVkQm91
bmRhcnkpOwpAQCAtODczLDcgKzg3OSw3IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlv
bjo6bW9kaWZ5TW8KICAgICByZXR1cm4gcG9zOwogfQogCi1WaXNpYmxlUG9zaXRpb24gRnJhbWVT
ZWxlY3Rpb246Om1vZGlmeU1vdmluZ0ZvcndhcmQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5
LCBib29sKiByZWFjaGVkQm91bmRhcnkpCitWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246
Om1vZGlmeU1vdmluZ0ZvcndhcmQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBFVXNlclRy
aWdnZXJlZCB1c2VyVHJpZ2dlcmVkLCBib29sKiByZWFjaGVkQm91bmRhcnkpCiB7CiAgICAgaWYg
KHJlYWNoZWRCb3VuZGFyeSkKICAgICAgICAgKnJlYWNoZWRCb3VuZGFyeSA9IGZhbHNlOwpAQCAt
OTAzLDcgKzkwOSw3IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW8K
ICAgICAgICAgICAgIHBvcyA9IFZpc2libGVQb3NpdGlvbihtX3NlbGVjdGlvbi5leHRlbnQoKSwg
bV9zZWxlY3Rpb24uYWZmaW5pdHkoKSkubmV4dChDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSwg
cmVhY2hlZEJvdW5kYXJ5KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXb3JkR3JhbnVsYXJp
dHk6Ci0gICAgICAgIHBvcyA9IG5leHRXb3JkUG9zaXRpb25Gb3JQbGF0Zm9ybShjdXJyZW50UG9z
aXRpb24pOworICAgICAgICBwb3MgPSBuZXh0V29yZFBvc2l0aW9uRm9yUGxhdGZvcm0oY3VycmVu
dFBvc2l0aW9uLCB1c2VyVHJpZ2dlcmVkKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTZW50
ZW5jZUdyYW51bGFyaXR5OgogICAgICAgICBwb3MgPSBuZXh0U2VudGVuY2VQb3NpdGlvbihjdXJy
ZW50UG9zaXRpb24pOwpAQCAtOTU2LDcgKzk2Miw3IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNl
bGVjdGlvbjo6bW9kaWZ5TW8KICAgICByZXR1cm4gcG9zOwogfQogCi1WaXNpYmxlUG9zaXRpb24g
RnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4dGVuZGluZ0xlZnQoVGV4dEdyYW51bGFyaXR5IGdyYW51
bGFyaXR5KQorVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeHRlbmRpbmdM
ZWZ0KFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgRVVzZXJUcmlnZ2VyZWQgdXNlclRyaWdn
ZXJlZCkKIHsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zKG1fc2VsZWN0aW9uLmV4dGVudCgpLCBt
X3NlbGVjdGlvbi5hZmZpbml0eSgpKTsKIApAQCAtOTc0LDE1ICs5ODAsMTUgQEAgVmlzaWJsZVBv
c2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeAogICAgICAgICBicmVhazsKICAgICBjYXNl
IFdvcmRHcmFudWxhcml0eToKICAgICAgICAgaWYgKGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2so
KSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpCi0gICAgICAgICAgICBwb3MgPSBwcmV2aW91c1dvcmRQ
b3NpdGlvbihwb3MpOworICAgICAgICAgICAgcG9zID0gcHJldmlvdXNXb3JkUG9zaXRpb24ocG9z
LCBuZXh0V29yZFdoaXRlc3BhY2VNb2RlSW5JT1ModXNlclRyaWdnZXJlZCkpOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICBwb3MgPSBuZXh0V29yZFBvc2l0aW9uRm9yUGxhdGZvcm0ocG9zKTsK
KyAgICAgICAgICAgIHBvcyA9IG5leHRXb3JkUG9zaXRpb25Gb3JQbGF0Zm9ybShwb3MsIHVzZXJU
cmlnZ2VyZWQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIExpbmVCb3VuZGFyeToKICAgICAg
ICAgaWYgKGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIp
Ci0gICAgICAgICAgICBwb3MgPSBtb2RpZnlFeHRlbmRpbmdCYWNrd2FyZChncmFudWxhcml0eSk7
CisgICAgICAgICAgICBwb3MgPSBtb2RpZnlFeHRlbmRpbmdCYWNrd2FyZChncmFudWxhcml0eSwg
dXNlclRyaWdnZXJlZCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHBvcyA9IG1vZGlmeUV4
dGVuZGluZ0ZvcndhcmQoZ3JhbnVsYXJpdHkpOworICAgICAgICAgICAgcG9zID0gbW9kaWZ5RXh0
ZW5kaW5nRm9yd2FyZChncmFudWxhcml0eSwgdXNlclRyaWdnZXJlZCk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0eToKICAgICBjYXNlIExpbmVHcmFudWxhcml0
eToKQEAgLTk5MCw3ICs5OTYsNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1v
ZGlmeUV4CiAgICAgY2FzZSBTZW50ZW5jZUJvdW5kYXJ5OgogICAgIGNhc2UgUGFyYWdyYXBoQm91
bmRhcnk6CiAgICAgY2FzZSBEb2N1bWVudEJvdW5kYXJ5OgotICAgICAgICBwb3MgPSBtb2RpZnlF
eHRlbmRpbmdCYWNrd2FyZChncmFudWxhcml0eSk7CisgICAgICAgIHBvcyA9IG1vZGlmeUV4dGVu
ZGluZ0JhY2t3YXJkKGdyYW51bGFyaXR5LCB1c2VyVHJpZ2dlcmVkKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBEb2N1bWVudEdyYW51bGFyaXR5OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKQEAgLTEwMDIsNyArMTAwOCw3IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlv
bjo6bW9kaWZ5RXgKICAgICByZXR1cm4gcG9zOwogfQogICAgICAgIAotVmlzaWJsZVBvc2l0aW9u
IEZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeHRlbmRpbmdCYWNrd2FyZChUZXh0R3JhbnVsYXJpdHkg
Z3JhbnVsYXJpdHkpCitWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4dGVu
ZGluZ0JhY2t3YXJkKFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgRVVzZXJUcmlnZ2VyZWQg
dXNlclRyaWdnZXJlZCkKIHsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zKG1fc2VsZWN0aW9uLmV4
dGVudCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKTsKIApAQCAtMTAxNSw3ICsxMDIxLDcgQEAg
VmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeAogICAgICAgICBwb3MgPSBw
b3MucHJldmlvdXMoQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIFdvcmRHcmFudWxhcml0eToKLSAgICAgICAgcG9zID0gcHJldmlvdXNXb3JkUG9z
aXRpb24ocG9zKTsKKyAgICAgICAgcG9zID0gcHJldmlvdXNXb3JkUG9zaXRpb24ocG9zLCBuZXh0
V29yZFdoaXRlc3BhY2VNb2RlSW5JT1ModXNlclRyaWdnZXJlZCkpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6CiAgICAgICAgIHBvcyA9IHByZXZpb3VzU2Vu
dGVuY2VQb3NpdGlvbihwb3MpOwpAQCAtMTA1Miw3ICsxMDU4LDcgQEAgVmlzaWJsZVBvc2l0aW9u
IEZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeAogICAgIHJldHVybiBwb3M7CiB9CiAKLVZpc2libGVQ
b3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW92aW5nTGVmdChUZXh0R3JhbnVsYXJpdHkg
Z3JhbnVsYXJpdHksIGJvb2wqIHJlYWNoZWRCb3VuZGFyeSkKK1Zpc2libGVQb3NpdGlvbiBGcmFt
ZVNlbGVjdGlvbjo6bW9kaWZ5TW92aW5nTGVmdChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHks
IEVVc2VyVHJpZ2dlcmVkIHVzZXJUcmlnZ2VyZWQsIGJvb2wqIHJlYWNoZWRCb3VuZGFyeSkKIHsK
ICAgICBpZiAocmVhY2hlZEJvdW5kYXJ5KQogICAgICAgICAqcmVhY2hlZEJvdW5kYXJ5ID0gZmFs
c2U7CkBAIC0xMDgyLDcgKzEwODgsNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246
Om1vZGlmeU1vCiAgICAgY2FzZSBQYXJhZ3JhcGhCb3VuZGFyeToKICAgICBjYXNlIERvY3VtZW50
Qm91bmRhcnk6CiAgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgYWxsIG9mIHRoZSBhYm92ZS4K
LSAgICAgICAgcG9zID0gbW9kaWZ5TW92aW5nQmFja3dhcmQoZ3JhbnVsYXJpdHksIHJlYWNoZWRC
b3VuZGFyeSk7CisgICAgICAgIHBvcyA9IG1vZGlmeU1vdmluZ0JhY2t3YXJkKGdyYW51bGFyaXR5
LCB1c2VyVHJpZ2dlcmVkLCByZWFjaGVkQm91bmRhcnkpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIExpbmVCb3VuZGFyeToKICAgICAgICAgcG9zID0gbGVmdEJvdW5kYXJ5T2ZMaW5lKHN0YXJ0
Rm9yUGxhdGZvcm0oKSwgZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jaygpLCByZWFjaGVkQm91bmRh
cnkpOwpAQCAtMTA5NCw3ICsxMTAwLDcgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9u
Ojptb2RpZnlNbwogICAgIHJldHVybiBwb3M7CiB9CiAKLVZpc2libGVQb3NpdGlvbiBGcmFtZVNl
bGVjdGlvbjo6bW9kaWZ5TW92aW5nQmFja3dhcmQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5
LCBib29sKiByZWFjaGVkQm91bmRhcnkpCitWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246
Om1vZGlmeU1vdmluZ0JhY2t3YXJkKFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgRVVzZXJU
cmlnZ2VyZWQgdXNlclRyaWdnZXJlZCwgYm9vbCogcmVhY2hlZEJvdW5kYXJ5KQogewogICAgIGlm
IChyZWFjaGVkQm91bmRhcnkpCiAgICAgICAgICpyZWFjaGVkQm91bmRhcnkgPSBmYWxzZTsKQEAg
LTExMjMsNyArMTEyOSw3IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5
TW8KICAgICAgICAgICAgIHBvcyA9IFZpc2libGVQb3NpdGlvbihtX3NlbGVjdGlvbi5leHRlbnQo
KSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSkucHJldmlvdXMoQ2Fubm90Q3Jvc3NFZGl0aW5nQm91
bmRhcnksIHJlYWNoZWRCb3VuZGFyeSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV29yZEdy
YW51bGFyaXR5OgotICAgICAgICBwb3MgPSBwcmV2aW91c1dvcmRQb3NpdGlvbihjdXJyZW50UG9z
aXRpb24pOworICAgICAgICBwb3MgPSBwcmV2aW91c1dvcmRQb3NpdGlvbihjdXJyZW50UG9zaXRp
b24sIG5leHRXb3JkV2hpdGVzcGFjZU1vZGVJbklPUyh1c2VyVHJpZ2dlcmVkKSk7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0eToKICAgICAgICAgcG9zID0gcHJl
dmlvdXNTZW50ZW5jZVBvc2l0aW9uKGN1cnJlbnRQb3NpdGlvbik7CkBAIC0xMzMwLDI3ICsxMzM2
LDI3IEBAIGJvb2wgRnJhbWVTZWxlY3Rpb246Om1vZGlmeShFQWx0ZXJhdGlvbiAKICAgICBzd2l0
Y2ggKGRpcmVjdGlvbikgewogICAgIGNhc2UgRGlyZWN0aW9uUmlnaHQ6CiAgICAgICAgIGlmIChh
bHRlciA9PSBBbHRlcmF0aW9uTW92ZSkKLSAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5TW92
aW5nUmlnaHQoZ3JhbnVsYXJpdHksICZyZWFjaGVkQm91bmRhcnkpOworICAgICAgICAgICAgcG9z
aXRpb24gPSBtb2RpZnlNb3ZpbmdSaWdodChncmFudWxhcml0eSwgdXNlclRyaWdnZXJlZCwgJnJl
YWNoZWRCb3VuZGFyeSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHBvc2l0aW9uID0gbW9k
aWZ5RXh0ZW5kaW5nUmlnaHQoZ3JhbnVsYXJpdHkpOworICAgICAgICAgICAgcG9zaXRpb24gPSBt
b2RpZnlFeHRlbmRpbmdSaWdodChncmFudWxhcml0eSwgdXNlclRyaWdnZXJlZCk7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgRGlyZWN0aW9uRm9yd2FyZDoKICAgICAgICAgaWYgKGFsdGVyID09
IEFsdGVyYXRpb25FeHRlbmQpCi0gICAgICAgICAgICBwb3NpdGlvbiA9IG1vZGlmeUV4dGVuZGlu
Z0ZvcndhcmQoZ3JhbnVsYXJpdHkpOworICAgICAgICAgICAgcG9zaXRpb24gPSBtb2RpZnlFeHRl
bmRpbmdGb3J3YXJkKGdyYW51bGFyaXR5LCB1c2VyVHJpZ2dlcmVkKTsKICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgcG9zaXRpb24gPSBtb2RpZnlNb3ZpbmdGb3J3YXJkKGdyYW51bGFyaXR5LCAm
cmVhY2hlZEJvdW5kYXJ5KTsKKyAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5TW92aW5nRm9y
d2FyZChncmFudWxhcml0eSwgdXNlclRyaWdnZXJlZCwgJnJlYWNoZWRCb3VuZGFyeSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgRGlyZWN0aW9uTGVmdDoKICAgICAgICAgaWYgKGFsdGVyID09
IEFsdGVyYXRpb25Nb3ZlKQotICAgICAgICAgICAgcG9zaXRpb24gPSBtb2RpZnlNb3ZpbmdMZWZ0
KGdyYW51bGFyaXR5LCAmcmVhY2hlZEJvdW5kYXJ5KTsKKyAgICAgICAgICAgIHBvc2l0aW9uID0g
bW9kaWZ5TW92aW5nTGVmdChncmFudWxhcml0eSwgdXNlclRyaWdnZXJlZCwgJnJlYWNoZWRCb3Vu
ZGFyeSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5RXh0ZW5k
aW5nTGVmdChncmFudWxhcml0eSk7CisgICAgICAgICAgICBwb3NpdGlvbiA9IG1vZGlmeUV4dGVu
ZGluZ0xlZnQoZ3JhbnVsYXJpdHksIHVzZXJUcmlnZ2VyZWQpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIERpcmVjdGlvbkJhY2t3YXJkOgogICAgICAgICBpZiAoYWx0ZXIgPT0gQWx0ZXJhdGlv
bkV4dGVuZCkKLSAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5RXh0ZW5kaW5nQmFja3dhcmQo
Z3JhbnVsYXJpdHkpOworICAgICAgICAgICAgcG9zaXRpb24gPSBtb2RpZnlFeHRlbmRpbmdCYWNr
d2FyZChncmFudWxhcml0eSwgdXNlclRyaWdnZXJlZCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHBvc2l0aW9uID0gbW9kaWZ5TW92aW5nQmFja3dhcmQoZ3JhbnVsYXJpdHksICZyZWFjaGVk
Qm91bmRhcnkpOworICAgICAgICAgICAgcG9zaXRpb24gPSBtb2RpZnlNb3ZpbmdCYWNrd2FyZChn
cmFudWxhcml0eSwgdXNlclRyaWdnZXJlZCwgJnJlYWNoZWRCb3VuZGFyeSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KIApAQCAtMjE0NSw3ICsyMTUxLDcgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6
dXBkYXRlQXBwZWFyYW5jZSgpCiAgICAgLy8gQ29uc3RydWN0IGEgbmV3IFZpc2libGVTb2x1dGlv
biwgc2luY2UgbV9zZWxlY3Rpb24gaXMgbm90IG5lY2Vzc2FyaWx5IHZhbGlkLCBhbmQgdGhlIGZv
bGxvd2luZyBzdGVwcwogICAgIC8vIGFzc3VtZSBhIHZhbGlkIHNlbGVjdGlvbi4gU2VlIDxodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk1NjM+IGFuZCA8cmRhcjovL3By
b2JsZW0vMTAyMzI4NjY+LgogI2lmIEVOQUJMRShURVhUX0NBUkVUKQotICAgIFZpc2libGVQb3Np
dGlvbiBlbmRWaXNpYmxlUG9zaXRpb24gPSBwYWludEJsb2NrQ3Vyc29yID8gbW9kaWZ5RXh0ZW5k
aW5nRm9yd2FyZChDaGFyYWN0ZXJHcmFudWxhcml0eSkgOiBvbGRTZWxlY3Rpb24udmlzaWJsZUVu
ZCgpOworICAgIFZpc2libGVQb3NpdGlvbiBlbmRWaXNpYmxlUG9zaXRpb24gPSBwYWludEJsb2Nr
Q3Vyc29yID8gbW9kaWZ5RXh0ZW5kaW5nRm9yd2FyZChDaGFyYWN0ZXJHcmFudWxhcml0eSwgTm90
VXNlclRyaWdnZXJlZCkgOiBvbGRTZWxlY3Rpb24udmlzaWJsZUVuZCgpOwogICAgIFZpc2libGVT
ZWxlY3Rpb24gc2VsZWN0aW9uKG9sZFNlbGVjdGlvbi52aXNpYmxlU3RhcnQoKSwgZW5kVmlzaWJs
ZVBvc2l0aW9uKTsKICNlbHNlCiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24ob2xkU2Vs
ZWN0aW9uLnZpc2libGVTdGFydCgpLCBvbGRTZWxlY3Rpb24udmlzaWJsZUVuZCgpKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgJKHJldmlzaW9uIDI0OTY1NykK
KysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAkod29ya2luZyBjb3B5
KQpAQCAtMjk5LDE2ICsyOTksMTYgQEAgcHJpdmF0ZToKICAgICBWaXNpYmxlUG9zaXRpb24gcG9z
aXRpb25Gb3JQbGF0Zm9ybShib29sIGlzR2V0U3RhcnQpIGNvbnN0OwogICAgIFZpc2libGVQb3Np
dGlvbiBzdGFydEZvclBsYXRmb3JtKCkgY29uc3Q7CiAgICAgVmlzaWJsZVBvc2l0aW9uIGVuZEZv
clBsYXRmb3JtKCkgY29uc3Q7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIG5leHRXb3JkUG9zaXRpb25G
b3JQbGF0Zm9ybShjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKKyAgICBWaXNpYmxlUG9zaXRpb24g
bmV4dFdvcmRQb3NpdGlvbkZvclBsYXRmb3JtKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIEVVc2Vy
VHJpZ2dlcmVkKTsKIAotICAgIFZpc2libGVQb3NpdGlvbiBtb2RpZnlFeHRlbmRpbmdSaWdodChU
ZXh0R3JhbnVsYXJpdHkpOwotICAgIFZpc2libGVQb3NpdGlvbiBtb2RpZnlFeHRlbmRpbmdGb3J3
YXJkKFRleHRHcmFudWxhcml0eSk7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIG1vZGlmeU1vdmluZ1Jp
Z2h0KFRleHRHcmFudWxhcml0eSwgYm9vbCogcmVhY2hlZEJvdW5kYXJ5ID0gbnVsbHB0cik7Ci0g
ICAgVmlzaWJsZVBvc2l0aW9uIG1vZGlmeU1vdmluZ0ZvcndhcmQoVGV4dEdyYW51bGFyaXR5LCBi
b29sKiByZWFjaGVkQm91bmRhcnkgPSBudWxscHRyKTsKLSAgICBWaXNpYmxlUG9zaXRpb24gbW9k
aWZ5RXh0ZW5kaW5nTGVmdChUZXh0R3JhbnVsYXJpdHkpOwotICAgIFZpc2libGVQb3NpdGlvbiBt
b2RpZnlFeHRlbmRpbmdCYWNrd2FyZChUZXh0R3JhbnVsYXJpdHkpOwotICAgIFZpc2libGVQb3Np
dGlvbiBtb2RpZnlNb3ZpbmdMZWZ0KFRleHRHcmFudWxhcml0eSwgYm9vbCogcmVhY2hlZEJvdW5k
YXJ5ID0gbnVsbHB0cik7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIG1vZGlmeU1vdmluZ0JhY2t3YXJk
KFRleHRHcmFudWxhcml0eSwgYm9vbCogcmVhY2hlZEJvdW5kYXJ5ID0gbnVsbHB0cik7CisgICAg
VmlzaWJsZVBvc2l0aW9uIG1vZGlmeUV4dGVuZGluZ1JpZ2h0KFRleHRHcmFudWxhcml0eSwgRVVz
ZXJUcmlnZ2VyZWQpOworICAgIFZpc2libGVQb3NpdGlvbiBtb2RpZnlFeHRlbmRpbmdGb3J3YXJk
KFRleHRHcmFudWxhcml0eSwgRVVzZXJUcmlnZ2VyZWQpOworICAgIFZpc2libGVQb3NpdGlvbiBt
b2RpZnlNb3ZpbmdSaWdodChUZXh0R3JhbnVsYXJpdHksIEVVc2VyVHJpZ2dlcmVkLCBib29sKiBy
ZWFjaGVkQm91bmRhcnkgPSBudWxscHRyKTsKKyAgICBWaXNpYmxlUG9zaXRpb24gbW9kaWZ5TW92
aW5nRm9yd2FyZChUZXh0R3JhbnVsYXJpdHksIEVVc2VyVHJpZ2dlcmVkLCBib29sKiByZWFjaGVk
Qm91bmRhcnkgPSBudWxscHRyKTsKKyAgICBWaXNpYmxlUG9zaXRpb24gbW9kaWZ5RXh0ZW5kaW5n
TGVmdChUZXh0R3JhbnVsYXJpdHksIEVVc2VyVHJpZ2dlcmVkKTsKKyAgICBWaXNpYmxlUG9zaXRp
b24gbW9kaWZ5RXh0ZW5kaW5nQmFja3dhcmQoVGV4dEdyYW51bGFyaXR5LCBFVXNlclRyaWdnZXJl
ZCk7CisgICAgVmlzaWJsZVBvc2l0aW9uIG1vZGlmeU1vdmluZ0xlZnQoVGV4dEdyYW51bGFyaXR5
LCBFVXNlclRyaWdnZXJlZCwgYm9vbCogcmVhY2hlZEJvdW5kYXJ5ID0gbnVsbHB0cik7CisgICAg
VmlzaWJsZVBvc2l0aW9uIG1vZGlmeU1vdmluZ0JhY2t3YXJkKFRleHRHcmFudWxhcml0eSwgRVVz
ZXJUcmlnZ2VyZWQsIGJvb2wqIHJlYWNoZWRCb3VuZGFyeSA9IG51bGxwdHIpOwogCiAgICAgTGF5
b3V0VW5pdCBsaW5lRGlyZWN0aW9uUG9pbnRGb3JCbG9ja0RpcmVjdGlvbk5hdmlnYXRpb24oRVBv
c2l0aW9uVHlwZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5j
cHAJKHJldmlzaW9uIDI0OTY1NykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJh
dG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMzNSw3ICsyMzM1LDcgQEAgaW5saW5lIGJvb2wg
U2VhcmNoQnVmZmVyOjppc1dvcmRTdGFydE1hdAogCiAgICAgc2l6ZV90IHdvcmRCcmVha1NlYXJj
aFN0YXJ0ID0gc3RhcnQgKyBsZW5ndGg7CiAgICAgd2hpbGUgKHdvcmRCcmVha1NlYXJjaFN0YXJ0
ID4gc3RhcnQpCi0gICAgICAgIHdvcmRCcmVha1NlYXJjaFN0YXJ0ID0gZmluZE5leHRXb3JkRnJv
bUluZGV4KFN0cmluZ1ZpZXcobV9idWZmZXIuZGF0YSgpLCBtX2J1ZmZlci5zaXplKCkpLCB3b3Jk
QnJlYWtTZWFyY2hTdGFydCwgZmFsc2UgLyogYmFja3dhcmRzICovKTsKKyAgICAgICAgd29yZEJy
ZWFrU2VhcmNoU3RhcnQgPSBmaW5kTmV4dFdvcmRGcm9tSW5kZXgoU3RyaW5nVmlldyhtX2J1ZmZl
ci5kYXRhKCksIG1fYnVmZmVyLnNpemUoKSksIHdvcmRCcmVha1NlYXJjaFN0YXJ0LCBOZXh0V29y
ZERpcmVjdGlvbjo6QmFja3dhcmQpOwogICAgIHJldHVybiB3b3JkQnJlYWtTZWFyY2hTdGFydCA9
PSBzdGFydDsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNw
cAkocmV2aXNpb24gMjQ5NjU3KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5p
dHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NjEsNiArNzYxLDcgQEAgVmlzaWJsZVBvc2l0aW9u
IGVuZE9mV29yZChjb25zdCBWaXNpYmxlUAogICAgIHJldHVybiBuZXh0Qm91bmRhcnkocCwgZW5k
V29yZEJvdW5kYXJ5KTsKIH0KIAordGVtcGxhdGUgPE5leHRXb3JkTW9kZUluSU9TIG5leHRXb3Jk
TW9kZUluSU9TPgogc3RhdGljIHVuc2lnbmVkIHByZXZpb3VzV29yZFBvc2l0aW9uQm91bmRhcnko
U3RyaW5nVmlldyB0ZXh0LCB1bnNpZ25lZCBvZmZzZXQsIEJvdW5kYXJ5U2VhcmNoQ29udGV4dEF2
YWlsYWJpbGl0eSBtYXlIYXZlTW9yZUNvbnRleHQsIGJvb2wmIG5lZWRNb3JlQ29udGV4dCkKIHsK
ICAgICBpZiAobWF5SGF2ZU1vcmVDb250ZXh0ICYmICFzdGFydE9mTGFzdFdvcmRCb3VuZGFyeUNv
bnRleHQodGV4dC5zdWJzdHJpbmcoMCwgb2Zmc2V0KSkpIHsKQEAgLTc2OCwxNCArNzY5LDE3IEBA
IHN0YXRpYyB1bnNpZ25lZCBwcmV2aW91c1dvcmRQb3NpdGlvbkJvdW4KICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQogICAgIG5lZWRNb3JlQ29udGV4dCA9IGZhbHNlOwotICAgIHJldHVybiBmaW5k
TmV4dFdvcmRGcm9tSW5kZXgodGV4dCwgb2Zmc2V0LCBmYWxzZSk7CisgICAgcmV0dXJuIGZpbmRO
ZXh0V29yZEZyb21JbmRleCh0ZXh0LCBvZmZzZXQsIE5leHRXb3JkRGlyZWN0aW9uOjpCYWNrd2Fy
ZCwgbmV4dFdvcmRNb2RlSW5JT1MpOwogfQogCi1WaXNpYmxlUG9zaXRpb24gcHJldmlvdXNXb3Jk
UG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbikKK1Zpc2libGVQb3NpdGlv
biBwcmV2aW91c1dvcmRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uLCBO
ZXh0V29yZE1vZGVJbklPUyBuZXh0V29yZE1vZGVJbklPUykKIHsKLSAgICByZXR1cm4gcG9zaXRp
b24uaG9ub3JFZGl0aW5nQm91bmRhcnlBdE9yQmVmb3JlKHByZXZpb3VzQm91bmRhcnkocG9zaXRp
b24sIHByZXZpb3VzV29yZFBvc2l0aW9uQm91bmRhcnkpKTsKKyAgICBpZiAobmV4dFdvcmRNb2Rl
SW5JT1MgPT0gTmV4dFdvcmRNb2RlSW5JT1M6OkxlZ2FjeVN0b3BCZWZvcmVXb3JkKSAvLyBGSVhN
RTogUmVtb3ZlIHRoaXMgY29kZSBwYXRoLgorICAgICAgICByZXR1cm4gcG9zaXRpb24uaG9ub3JF
ZGl0aW5nQm91bmRhcnlBdE9yQmVmb3JlKHByZXZpb3VzQm91bmRhcnkocG9zaXRpb24sIHByZXZp
b3VzV29yZFBvc2l0aW9uQm91bmRhcnk8TmV4dFdvcmRNb2RlSW5JT1M6OkxlZ2FjeVN0b3BCZWZv
cmVXb3JkPikpOworICAgIHJldHVybiBwb3NpdGlvbi5ob25vckVkaXRpbmdCb3VuZGFyeUF0T3JC
ZWZvcmUocHJldmlvdXNCb3VuZGFyeShwb3NpdGlvbiwgcHJldmlvdXNXb3JkUG9zaXRpb25Cb3Vu
ZGFyeTxOZXh0V29yZE1vZGVJbklPUzo6U3RvcEFmdGVyV29yZD4pKTsKIH0KIAordGVtcGxhdGUg
PE5leHRXb3JkTW9kZUluSU9TIG5leHRXb3JkTW9kZUluSU9TPgogc3RhdGljIHVuc2lnbmVkIG5l
eHRXb3JkUG9zaXRpb25Cb3VuZGFyeShTdHJpbmdWaWV3IHRleHQsIHVuc2lnbmVkIG9mZnNldCwg
Qm91bmRhcnlTZWFyY2hDb250ZXh0QXZhaWxhYmlsaXR5IG1heUhhdmVNb3JlQ29udGV4dCwgYm9v
bCYgbmVlZE1vcmVDb250ZXh0KQogewogICAgIGlmIChtYXlIYXZlTW9yZUNvbnRleHQgJiYgZW5k
T2ZGaXJzdFdvcmRCb3VuZGFyeUNvbnRleHQodGV4dC5zdWJzdHJpbmcob2Zmc2V0KSkgPT0gdGV4
dC5sZW5ndGgoKSAtIG9mZnNldCkgewpAQCAtNzgzLDEyICs3ODcsMTQgQEAgc3RhdGljIHVuc2ln
bmVkIG5leHRXb3JkUG9zaXRpb25Cb3VuZGFyeQogICAgICAgICByZXR1cm4gdGV4dC5sZW5ndGgo
KTsKICAgICB9CiAgICAgbmVlZE1vcmVDb250ZXh0ID0gZmFsc2U7Ci0gICAgcmV0dXJuIGZpbmRO
ZXh0V29yZEZyb21JbmRleCh0ZXh0LCBvZmZzZXQsIHRydWUpOworICAgIHJldHVybiBmaW5kTmV4
dFdvcmRGcm9tSW5kZXgodGV4dCwgb2Zmc2V0LCBOZXh0V29yZERpcmVjdGlvbjo6Rm9yd2FyZCwg
bmV4dFdvcmRNb2RlSW5JT1MpOwogfQogCi1WaXNpYmxlUG9zaXRpb24gbmV4dFdvcmRQb3NpdGlv
bihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uKQorVmlzaWJsZVBvc2l0aW9uIG5leHRX
b3JkUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbiwgTmV4dFdvcmRNb2Rl
SW5JT1MgbmV4dFdvcmRNb2RlSW5JT1MpCiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uLmhvbm9yRWRp
dGluZ0JvdW5kYXJ5QXRPckFmdGVyKG5leHRCb3VuZGFyeShwb3NpdGlvbiwgbmV4dFdvcmRQb3Np
dGlvbkJvdW5kYXJ5KSk7CisgICAgaWYgKG5leHRXb3JkTW9kZUluSU9TID09IE5leHRXb3JkTW9k
ZUluSU9TOjpMZWdhY3lTdG9wQmVmb3JlV29yZCkgLy8gRklYTUU6IFJlbW92ZSB0aGlzIGNvZGUg
cGF0aC4KKyAgICAgICAgcmV0dXJuIHBvc2l0aW9uLmhvbm9yRWRpdGluZ0JvdW5kYXJ5QXRPckFm
dGVyKG5leHRCb3VuZGFyeShwb3NpdGlvbiwgbmV4dFdvcmRQb3NpdGlvbkJvdW5kYXJ5PE5leHRX
b3JkTW9kZUluSU9TOjpMZWdhY3lTdG9wQmVmb3JlV29yZD4pKTsKKyAgICByZXR1cm4gcG9zaXRp
b24uaG9ub3JFZGl0aW5nQm91bmRhcnlBdE9yQWZ0ZXIobmV4dEJvdW5kYXJ5KHBvc2l0aW9uLCBu
ZXh0V29yZFBvc2l0aW9uQm91bmRhcnk8TmV4dFdvcmRNb2RlSW5JT1M6OlN0b3BBZnRlcldvcmQ+
KSk7CiB9CiAKIGJvb2wgaXNTdGFydE9mV29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24mIHApCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmgJKHJldmlzaW9uIDI0OTY1NykK
KysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRWRpdGluZ0JvdW5k
YXJ5LmgiCisjaW5jbHVkZSAiVGV4dEJvdW5kYXJpZXMuaCIKICNpbmNsdWRlICJWaXNpYmxlU2Vs
ZWN0aW9uLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQwLDggKzQxLDggQEAgZW51bSBF
V29yZFNpZGUgeyBSaWdodFdvcmRJZk9uQm91bmRhcnkgPQogLy8gd29yZHMKIFdFQkNPUkVfRVhQ
T1JUIFZpc2libGVQb3NpdGlvbiBzdGFydE9mV29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24gJiwg
RVdvcmRTaWRlID0gUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KTsKIFdFQkNPUkVfRVhQT1JUIFZpc2li
bGVQb3NpdGlvbiBlbmRPZldvcmQoY29uc3QgVmlzaWJsZVBvc2l0aW9uICYsIEVXb3JkU2lkZSA9
IFJpZ2h0V29yZElmT25Cb3VuZGFyeSk7Ci1XRUJDT1JFX0VYUE9SVCBWaXNpYmxlUG9zaXRpb24g
cHJldmlvdXNXb3JkUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uICYpOwotV0VCQ09SRV9F
WFBPUlQgVmlzaWJsZVBvc2l0aW9uIG5leHRXb3JkUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0
aW9uICYpOworV0VCQ09SRV9FWFBPUlQgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzV29yZFBvc2l0
aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIE5leHRXb3JkTW9kZUluSU9TID0gTmV4dFdvcmRN
b2RlSW5JT1M6OkxlZ2FjeVN0b3BCZWZvcmVXb3JkKTsKK1dFQkNPUkVfRVhQT1JUIFZpc2libGVQ
b3NpdGlvbiBuZXh0V29yZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIE5leHRXb3Jk
TW9kZUluSU9TID0gTmV4dFdvcmRNb2RlSW5JT1M6OkxlZ2FjeVN0b3BCZWZvcmVXb3JkKTsKIFZp
c2libGVQb3NpdGlvbiByaWdodFdvcmRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBi
b29sIHNraXBzU3BhY2VXaGVuTW92aW5nUmlnaHQpOwogVmlzaWJsZVBvc2l0aW9uIGxlZnRXb3Jk
UG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgYm9vbCBza2lwc1NwYWNlV2hlbk1vdmlu
Z1JpZ2h0KTsKIGJvb2wgaXNTdGFydE9mV29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJvdW5kYXJpZXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJvdW5kYXJpZXMuY3Bw
CShyZXZpc2lvbiAyNDk2NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRC
b3VuZGFyaWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEsMTEgKzYxLDExIEBAIHVuc2lnbmVk
IHN0YXJ0T2ZMYXN0V29yZEJvdW5kYXJ5Q29udGV4dCgKIAogI2lmICFQTEFURk9STShDT0NPQSkK
IAotaW50IGZpbmROZXh0V29yZEZyb21JbmRleChTdHJpbmdWaWV3IHRleHQsIGludCBwb3NpdGlv
biwgYm9vbCBmb3J3YXJkKQoraW50IGZpbmROZXh0V29yZEZyb21JbmRleChTdHJpbmdWaWV3IHRl
eHQsIGludCBwb3NpdGlvbiwgTmV4dFdvcmREaXJlY3Rpb24gZGlyZWN0aW9uLCBOZXh0V29yZE1v
ZGVJbklPUykKIHsKICAgICBVQnJlYWtJdGVyYXRvciogaXQgPSB3b3JkQnJlYWtJdGVyYXRvcih0
ZXh0KTsKIAotICAgIGlmIChmb3J3YXJkKSB7CisgICAgaWYgKGRpcmVjdGlvbiA9PSBOZXh0V29y
ZERpcmVjdGlvbjo6Rm9yd2FyZCkgewogICAgICAgICBwb3NpdGlvbiA9IHVicmtfZm9sbG93aW5n
KGl0LCBwb3NpdGlvbik7CiAgICAgICAgIHdoaWxlIChwb3NpdGlvbiAhPSBVQlJLX0RPTkUpIHsK
ICAgICAgICAgICAgIC8vIFdlIHN0b3Agc2VhcmNoaW5nIHdoZW4gdGhlIGNoYXJhY3RlciBwcmVj
ZWVkaW5nIHRoZSBicmVhayBpcyBhbHBoYW51bWVyaWMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0Qm91bmRhcmllcy5oCShyZXZpc2lvbiAyNDk2NTcpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ3LDcgKzQ3LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHZvaWQgZmlu
ZFdvcmRCb3VuZGFyeShTdHJpbmdWaWV3LCBpbnQgcG9zaXRpb24sIGludCogc3RhcnQsIGludCog
ZW5kKTsKICAgICB2b2lkIGZpbmRFbmRXb3JkQm91bmRhcnkoU3RyaW5nVmlldywgaW50IHBvc2l0
aW9uLCBpbnQqIGVuZCk7Ci0gICAgaW50IGZpbmROZXh0V29yZEZyb21JbmRleChTdHJpbmdWaWV3
LCBpbnQgcG9zaXRpb24sIGJvb2wgZm9yd2FyZCk7CisKKyAgICBlbnVtIGNsYXNzIE5leHRXb3Jk
RGlyZWN0aW9uIDogYm9vbCB7IEZvcndhcmQsIEJhY2t3YXJkIH07CisgICAgZW51bSBjbGFzcyBO
ZXh0V29yZE1vZGVJbklPUyA6IGJvb2wgeyBMZWdhY3lTdG9wQmVmb3JlV29yZCwgU3RvcEFmdGVy
V29yZCB9OworICAgIGludCBmaW5kTmV4dFdvcmRGcm9tSW5kZXgoU3RyaW5nVmlldywgaW50IHBv
c2l0aW9uLCBOZXh0V29yZERpcmVjdGlvbiwgTmV4dFdvcmRNb2RlSW5JT1MgPSBOZXh0V29yZE1v
ZGVJbklPUzo6TGVnYWN5U3RvcEJlZm9yZVdvcmQpOwogCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tCShyZXZpc2lv
biAyNDk2NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Qm91bmRh
cmllcy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjI5LDExICsyMjksMTIgQEAgdm9pZCBmaW5kRW5k
V29yZEJvdW5kYXJ5KFN0cmluZ1ZpZXcgdGV4dAogICAgIGZpbmRXb3JkQm91bmRhcnkodGV4dCwg
cG9zaXRpb24sICZzdGFydCwgZW5kKTsKIH0KIAotaW50IGZpbmROZXh0V29yZEZyb21JbmRleChT
dHJpbmdWaWV3IHRleHQsIGludCBwb3NpdGlvbiwgYm9vbCBmb3J3YXJkKQoraW50IGZpbmROZXh0
V29yZEZyb21JbmRleChTdHJpbmdWaWV3IHRleHQsIGludCBwb3NpdGlvbiwgTmV4dFdvcmREaXJl
Y3Rpb24gZGlyZWN0aW9uLCBOZXh0V29yZE1vZGVJbklPUyB3aGl0ZXNwYWNlTW9kZUluSU9TKQog
eyAgIAogI2lmIFVTRShBUFBLSVQpCisgICAgVU5VU0VEX1BBUkFNKHdoaXRlc3BhY2VNb2RlSW5J
T1MpOwogICAgIE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtbTlNBdHRy
aWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzp0ZXh0LmNyZWF0ZU5TU3RyaW5nV2l0
aG91dENvcHlpbmcoKS5nZXQoKV07Ci0gICAgaW50IHJlc3VsdCA9IFthdHRyaWJ1dGVkU3RyaW5n
IG5leHRXb3JkRnJvbUluZGV4OnBvc2l0aW9uIGZvcndhcmQ6Zm9yd2FyZF07CisgICAgaW50IHJl
c3VsdCA9IFthdHRyaWJ1dGVkU3RyaW5nIG5leHRXb3JkRnJvbUluZGV4OnBvc2l0aW9uIGZvcndh
cmQ6ZGlyZWN0aW9uID09IE5leHRXb3JkRGlyZWN0aW9uOjpGb3J3YXJkXTsKICAgICBbYXR0cmli
dXRlZFN0cmluZyByZWxlYXNlXTsKICAgICByZXR1cm4gcmVzdWx0OwogI2Vsc2UKQEAgLTI0Mywx
NCArMjQ0LDMxIEBAIGludCBmaW5kTmV4dFdvcmRGcm9tSW5kZXgoU3RyaW5nVmlldyB0ZXgKICAg
ICBpbnQgcG9zID0gcG9zaXRpb247CiAgICAgVUJyZWFrSXRlcmF0b3IqIGJvdW5kYXJ5ID0gd29y
ZEJyZWFrSXRlcmF0b3IodGV4dCk7CiAgICAgaWYgKGJvdW5kYXJ5KSB7Ci0gICAgICAgIGlmIChm
b3J3YXJkKSB7CisgICAgICAgIGlmIChkaXJlY3Rpb24gPT0gTmV4dFdvcmREaXJlY3Rpb246OkZv
cndhcmQpIHsKKyAgICAgICAgICAgIGlmICh3aGl0ZXNwYWNlTW9kZUluSU9TID09IE5leHRXb3Jk
TW9kZUluSU9TOjpTdG9wQWZ0ZXJXb3JkKSB7CisgICAgICAgICAgICAgICAgd2hpbGUgKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihwb3MpIDwgdGV4dC5sZW5ndGgoKSAmJiBpc1dvcmREZWxpbWl0aW5n
Q2hhcmFjdGVyKHRleHRbcG9zXSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcG9zID0gdWJya19m
b2xsb3dpbmcoYm91bmRhcnksIHBvcyk7CisgICAgICAgICAgICAgICAgICAgIGlmIChwb3MgPT0g
VUJSS19ET05FKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRleHQubGVuZ3RoKCk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICAgICAgZG8gewogICAg
ICAgICAgICAgICAgIHBvcyA9IHVicmtfZm9sbG93aW5nKGJvdW5kYXJ5LCBwb3MpOwogICAgICAg
ICAgICAgICAgIGlmIChwb3MgPT0gVUJSS19ET05FKQotICAgICAgICAgICAgICAgICAgICBwb3Mg
PSB0ZXh0Lmxlbmd0aCgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGV4dC5sZW5ndGgo
KTsKICAgICAgICAgICAgIH0gd2hpbGUgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihwb3MpIDwgdGV4
dC5sZW5ndGgoKSAmJiAocG9zID09IDAgfHwgIWlzU2tpcENoYXJhY3Rlcih0ZXh0W3BvcyAtIDFd
KSkgJiYgaXNTa2lwQ2hhcmFjdGVyKHRleHRbcG9zXSkpOworCisgICAgICAgICAgICAvLyBJQ1Ug
d291bGQgc2tpcCB0aGUgdHJhaWxpbmcgd2hpdGVzcGFjZS4gR28gYmFjay4KKyAgICAgICAgICAg
IGlmICh3aGl0ZXNwYWNlTW9kZUluSU9TID09IE5leHRXb3JkTW9kZUluSU9TOjpTdG9wQWZ0ZXJX
b3JkICYmIGlzV29yZERlbGltaXRpbmdDaGFyYWN0ZXIodGV4dFtwb3MgLSAxXSkpCisgICAgICAg
ICAgICAgICAgcG9zID0gdWJya19wcmVjZWRpbmcoYm91bmRhcnksIHBvcyk7CiAgICAgICAgIH0K
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAod2hpdGVzcGFjZU1vZGVJbklPUyA9PSBO
ZXh0V29yZE1vZGVJbklPUzo6U3RvcEFmdGVyV29yZCAmJiBwb3MgJiYgaXNXb3JkRGVsaW1pdGlu
Z0NoYXJhY3Rlcih0ZXh0W3BvcyAtIDFdKSkgeworICAgICAgICAgICAgICAgIHBvcyA9IHVicmtf
cHJlY2VkaW5nKGJvdW5kYXJ5LCBwb3MpOworICAgICAgICAgICAgICAgIGlmIChwb3MgPT0gVUJS
S19ET05FKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKwog
ICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgIHBvcyA9IHVicmtfcHJlY2VkaW5nKGJv
dW5kYXJ5LCBwb3MpOwogICAgICAgICAgICAgICAgIGlmIChwb3MgPT0gVUJSS19ET05FKQpJbmRl
eDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjQ5NjU3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTktMDktMDkgIFJ5b3N1a2UgTml3YSAgPHJuaXdh
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgT3B0aW9uICsgYXJyb3cgbW92ZXMgY2FyZXQgcGFzdCB3
aGl0ZXNwYWNlIG9uIGlPUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjAxNTc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgV2Vuc29uIEhzaWVoLgorCisg
ICAgICAgIEFkZGVkIGEgbmV3IHRlc3QgZm9yIG1vdmluZyBjYXJldCBieSB3b3JkIGdyYW51bGFy
aXR5IG9uIGlPUy4KKworICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2lvcy9tb3ZlLWJ5LXdv
cmQtd2l0aC1rZXlib2FyZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcv
c2VsZWN0aW9uL2lvcy9tb3ZlLWJ5LXdvcmQtd2l0aC1rZXlib2FyZC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9pb3Mvc2VsZWN0LW5vbi1lZGl0YWJsZS10ZXh0LXVz
aW5nLWtleWJvYXJkLWV4cGVjdGVkLnR4dDogUmViYXNlbGluZWQuCisgICAgICAgICogZWRpdGlu
Zy9zZWxlY3Rpb24vaW9zL3NlbGVjdC1ub24tZWRpdGFibGUtdGV4dC11c2luZy1rZXlib2FyZC5o
dG1sOiBVcGRhdGVkIHRoZSBleHBlY3RlZAorICAgICAgICBzZWxlY3Rpb24gc3RyaW5nIGR1ZSB0
byB0aGUgYmVoYXZpb3IgY2hhbmdlLiBBbHNvIGZpeGVkIGEgYnVnIHRoYXQgc29tZSB0ZXN0IGNh
c2VzIHdlcmUKKyAgICAgICAgbm90IHdhaXRpbmcgZm9yIGEgc2Vjb25kYXJ5IHNlbGVjdGlvbmNo
YW5nZSBldmVudCB0aGF0IGhhcHBlbnMgYWZ0ZXIgYW4gZXh0cmEgc2VsZWN0aW9uCisgICAgICAg
IHVwZGF0ZSB3aXRoIGNoYXJhY3RlciBncmFudWxhcml0eSBpbnRyb2R1Y2VkIGluIHIyNDc1MjQu
CisKIDIwMTktMDktMDkgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBMYXlvdXQgVGVzdCBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwt
Y3JlYXRlLWZhaWx1cmUtdTJmLXNpbGVudC5odHRwcy5odG1sIGlzIGZsYWt5CkluZGV4OiBMYXlv
dXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3MvbW92ZS1ieS13b3JkLXdpdGgta2V5Ym9hcmQt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9u
L2lvcy9tb3ZlLWJ5LXdvcmQtd2l0aC1rZXlib2FyZC1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50
KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL21vdmUtYnktd29yZC13aXRo
LWtleWJvYXJkLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQyMyBAQAor
VGhpcyB0ZXN0cyBtb3ZpbmcgdGhlIGNhcmV0IHdpdGggd29yZCBncmFudWxhcml0eSBvbiBpT1Mu
CitXZWJLaXQgc2hvdWxkIHN0b3AgYXQgdGhlIGVuZCBvZiBlYWNoIHdvcmQgYmVmb3JlIHdoaXRl
c3BhY2Ugd2hlbiBtb3ZpbmcgZm9yd2FyZHMsIGFuZCBhZnRlciB3aGl0ZXNwYWNlIHdoZW4gbW92
aW5nIGJhY2t3YXJkcywKK1RoZSBlbXB0eSBsaW5lIHNob3VsZCBiZSBza2lwcGVkIGluIGVpdGhl
ciBkaXJlY3Rpb24uCisKK0JlZm9yZSBtb3ZpbmcgZm9yd2FyZHM6Cit8ICIKKyAgICAiCit8IDxk
aXY+Cit8ICAgIjwjc2VsZWN0aW9uLWNhcmV0PmhlbGxvIHdvcmxkIgorfCAiCisgICAgIgorfCA8
YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgInJlZCwgZ3JlZW4sICYgYmx1ZS4iCit8ICIK
KyIKKworQWZ0ZXIgbW92aW5nIHRvIHRoZSByaWdodCBieSB3b3JkICgxKToKK3wgIgorICAgICIK
K3wgPGRpdj4KK3wgICAiaGVsbG88I3NlbGVjdGlvbi1jYXJldD4gd29ybGQiCit8ICIKKyAgICAi
Cit8IDxicj4KK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAicmVkLCBncmVlbiwgJiBibHVlLiIK
K3wgIgorIgorCitBZnRlciBtb3ZpbmcgdG8gdGhlIHJpZ2h0IGJ5IHdvcmQgKDIpOgorfCAiCisg
ICAgIgorfCA8ZGl2PgorfCAgICJoZWxsbyB3b3JsZDwjc2VsZWN0aW9uLWNhcmV0PiIKK3wgIgor
ICAgICIKK3wgPGJyPgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJyZWQsIGdyZWVuLCAmIGJs
dWUuIgorfCAiCisiCisKK0FmdGVyIG1vdmluZyB0byB0aGUgcmlnaHQgYnkgd29yZCAoMyk6Cit8
ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgImhlbGxvIHdvcmxkIgorfCAiCisgICAgIgorfCA8YnI+
Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgInJlZCw8I3NlbGVjdGlvbi1jYXJldD4gZ3JlZW4s
ICYgYmx1ZS4iCit8ICIKKyIKKworQWZ0ZXIgbW92aW5nIHRvIHRoZSByaWdodCBieSB3b3JkICg0
KToKK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAiaGVsbG8gd29ybGQiCit8ICIKKyAgICAiCit8
IDxicj4KK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAicmVkLCBncmVlbiw8I3NlbGVjdGlvbi1j
YXJldD4gJiBibHVlLiIKK3wgIgorIgorCitBZnRlciBtb3ZpbmcgdG8gdGhlIHJpZ2h0IGJ5IHdv
cmQgKDUpOgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJoZWxsbyB3b3JsZCIKK3wgIgorICAg
ICIKK3wgPGJyPgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJyZWQsIGdyZWVuLCAmPCNzZWxl
Y3Rpb24tY2FyZXQ+IGJsdWUuIgorfCAiCisiCisKK0FmdGVyIG1vdmluZyB0byB0aGUgcmlnaHQg
Ynkgd29yZCAoNik6Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgImhlbGxvIHdvcmxkIgorfCAi
CisgICAgIgorfCA8YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgInJlZCwgZ3JlZW4sICYg
Ymx1ZS48I3NlbGVjdGlvbi1jYXJldD4iCit8ICIKKyIKKworQmVmb3JlIG1vdmluZyBiYWNrd2Fy
ZHM6Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgImhlbGxvIHdvcmxkIgorfCAiCisgICAgIgor
fCA8YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgInJlZCwgZ3JlZW4sICYgYmx1ZS48I3Nl
bGVjdGlvbi1jYXJldD4iCit8ICIKKyIKKworQWZ0ZXIgbW92aW5nIHRvIHRoZSBsZWZ0IGJ5IHdv
cmQgKDEpOgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJoZWxsbyB3b3JsZCIKK3wgIgorICAg
ICIKK3wgPGJyPgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJyZWQsIGdyZWVuLCAmIDwjc2Vs
ZWN0aW9uLWNhcmV0PmJsdWUuIgorfCAiCisiCisKK0FmdGVyIG1vdmluZyB0byB0aGUgbGVmdCBi
eSB3b3JkICgyKToKK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAiaGVsbG8gd29ybGQiCit8ICIK
KyAgICAiCit8IDxicj4KK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAicmVkLCBncmVlbiwgPCNz
ZWxlY3Rpb24tY2FyZXQ+JiBibHVlLiIKK3wgIgorIgorCitBZnRlciBtb3ZpbmcgdG8gdGhlIGxl
ZnQgYnkgd29yZCAoMyk6Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgImhlbGxvIHdvcmxkIgor
fCAiCisgICAgIgorfCA8YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgInJlZCwgPCNzZWxl
Y3Rpb24tY2FyZXQ+Z3JlZW4sICYgYmx1ZS4iCit8ICIKKyIKKworQWZ0ZXIgbW92aW5nIHRvIHRo
ZSBsZWZ0IGJ5IHdvcmQgKDQpOgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJoZWxsbyB3b3Js
ZCIKK3wgIgorICAgICIKK3wgPGJyPgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICI8I3NlbGVj
dGlvbi1jYXJldD5yZWQsIGdyZWVuLCAmIGJsdWUuIgorfCAiCisiCisKK0FmdGVyIG1vdmluZyB0
byB0aGUgbGVmdCBieSB3b3JkICg1KToKK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAiaGVsbG8g
PCNzZWxlY3Rpb24tY2FyZXQ+d29ybGQiCit8ICIKKyAgICAiCit8IDxicj4KK3wgIgorICAgICIK
K3wgPGRpdj4KK3wgICAicmVkLCBncmVlbiwgJiBibHVlLiIKK3wgIgorIgorCitBZnRlciBtb3Zp
bmcgdG8gdGhlIGxlZnQgYnkgd29yZCAoNik6Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgIjwj
c2VsZWN0aW9uLWNhcmV0PmhlbGxvIHdvcmxkIgorfCAiCisgICAgIgorfCA8YnI+Cit8ICIKKyAg
ICAiCit8IDxkaXY+Cit8ICAgInJlZCwgZ3JlZW4sICYgYmx1ZS4iCit8ICIKKyIKKworQmVmb3Jl
IGV4dGVuZGluZyBmb3J3YXJkczoKK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAiPCNzZWxlY3Rp
b24tY2FyZXQ+aGVsbG8gd29ybGQiCit8ICIKKyAgICAiCit8IDxicj4KK3wgIgorICAgICIKK3wg
PGRpdj4KK3wgICAicmVkLCBncmVlbiwgJiBibHVlLiIKK3wgIgorIgorCitBZnRlciBleHRlbmRp
bmcgdG8gdGhlIHJpZ2h0IGJ5IHdvcmQgKDEpOgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICI8
I3NlbGVjdGlvbi1hbmNob3I+aGVsbG88I3NlbGVjdGlvbi1mb2N1cz4gd29ybGQiCit8ICIKKyAg
ICAiCit8IDxicj4KK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAicmVkLCBncmVlbiwgJiBibHVl
LiIKK3wgIgorIgorCitBZnRlciBleHRlbmRpbmcgdG8gdGhlIHJpZ2h0IGJ5IHdvcmQgKDIpOgor
fCAiCisgICAgIgorfCA8ZGl2PgorfCAgICI8I3NlbGVjdGlvbi1hbmNob3I+aGVsbG8gd29ybGQ8
I3NlbGVjdGlvbi1mb2N1cz4iCit8ICIKKyAgICAiCit8IDxicj4KK3wgIgorICAgICIKK3wgPGRp
dj4KK3wgICAicmVkLCBncmVlbiwgJiBibHVlLiIKK3wgIgorIgorCitBZnRlciBleHRlbmRpbmcg
dG8gdGhlIHJpZ2h0IGJ5IHdvcmQgKDMpOgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICI8I3Nl
bGVjdGlvbi1hbmNob3I+aGVsbG8gd29ybGQiCit8ICIKKyAgICAiCit8IDxicj4KK3wgIgorICAg
ICIKK3wgPGRpdj4KK3wgICAicmVkLDwjc2VsZWN0aW9uLWZvY3VzPiBncmVlbiwgJiBibHVlLiIK
K3wgIgorIgorCitBZnRlciBleHRlbmRpbmcgdG8gdGhlIHJpZ2h0IGJ5IHdvcmQgKDQpOgorfCAi
CisgICAgIgorfCA8ZGl2PgorfCAgICI8I3NlbGVjdGlvbi1hbmNob3I+aGVsbG8gd29ybGQiCit8
ICIKKyAgICAiCit8IDxicj4KK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAicmVkLCBncmVlbiw8
I3NlbGVjdGlvbi1mb2N1cz4gJiBibHVlLiIKK3wgIgorIgorCitBZnRlciBleHRlbmRpbmcgdG8g
dGhlIHJpZ2h0IGJ5IHdvcmQgKDUpOgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICI8I3NlbGVj
dGlvbi1hbmNob3I+aGVsbG8gd29ybGQiCit8ICIKKyAgICAiCit8IDxicj4KK3wgIgorICAgICIK
K3wgPGRpdj4KK3wgICAicmVkLCBncmVlbiwgJjwjc2VsZWN0aW9uLWZvY3VzPiBibHVlLiIKK3wg
IgorIgorCitBZnRlciBleHRlbmRpbmcgdG8gdGhlIHJpZ2h0IGJ5IHdvcmQgKDYpOgorfCAiCisg
ICAgIgorfCA8ZGl2PgorfCAgICI8I3NlbGVjdGlvbi1hbmNob3I+aGVsbG8gd29ybGQiCit8ICIK
KyAgICAiCit8IDxicj4KK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAicmVkLCBncmVlbiwgJiBi
bHVlLjwjc2VsZWN0aW9uLWZvY3VzPiIKK3wgIgorIgorCitCZWZvcmUgZXh0ZW5kaW5nIGJhY2t3
YXJkczoKK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAiaGVsbG8gd29ybGQiCit8ICIKKyAgICAi
Cit8IDxicj4KK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAicmVkLCBncmVlbiwgJiBibHVlLjwj
c2VsZWN0aW9uLWNhcmV0PiIKK3wgIgorIgorCitBZnRlciBleHRlbmRpbmcgdG8gdGhlIGxlZnQg
Ynkgd29yZCAoMSk6Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgImhlbGxvIHdvcmxkIgorfCAi
CisgICAgIgorfCA8YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8ICAgInJlZCwgZ3JlZW4sICYg
PCNzZWxlY3Rpb24tZm9jdXM+Ymx1ZS48I3NlbGVjdGlvbi1hbmNob3I+IgorfCAiCisiCisKK0Fm
dGVyIGV4dGVuZGluZyB0byB0aGUgbGVmdCBieSB3b3JkICgyKToKK3wgIgorICAgICIKK3wgPGRp
dj4KK3wgICAiaGVsbG8gd29ybGQiCit8ICIKKyAgICAiCit8IDxicj4KK3wgIgorICAgICIKK3wg
PGRpdj4KK3wgICAicmVkLCBncmVlbiwgPCNzZWxlY3Rpb24tZm9jdXM+JiBibHVlLjwjc2VsZWN0
aW9uLWFuY2hvcj4iCit8ICIKKyIKKworQWZ0ZXIgZXh0ZW5kaW5nIHRvIHRoZSBsZWZ0IGJ5IHdv
cmQgKDMpOgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJoZWxsbyB3b3JsZCIKK3wgIgorICAg
ICIKK3wgPGJyPgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICJyZWQsIDwjc2VsZWN0aW9uLWZv
Y3VzPmdyZWVuLCAmIGJsdWUuPCNzZWxlY3Rpb24tYW5jaG9yPiIKK3wgIgorIgorCitBZnRlciBl
eHRlbmRpbmcgdG8gdGhlIGxlZnQgYnkgd29yZCAoNCk6Cit8ICIKKyAgICAiCit8IDxkaXY+Cit8
ICAgImhlbGxvIHdvcmxkIgorfCAiCisgICAgIgorfCA8YnI+Cit8ICIKKyAgICAiCit8IDxkaXY+
Cit8ICAgIjwjc2VsZWN0aW9uLWZvY3VzPnJlZCwgZ3JlZW4sICYgYmx1ZS48I3NlbGVjdGlvbi1h
bmNob3I+IgorfCAiCisiCisKK0FmdGVyIGV4dGVuZGluZyB0byB0aGUgbGVmdCBieSB3b3JkICg1
KToKK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAiaGVsbG8gPCNzZWxlY3Rpb24tZm9jdXM+d29y
bGQiCit8ICIKKyAgICAiCit8IDxicj4KK3wgIgorICAgICIKK3wgPGRpdj4KK3wgICAicmVkLCBn
cmVlbiwgJiBibHVlLjwjc2VsZWN0aW9uLWFuY2hvcj4iCit8ICIKKyIKKworQWZ0ZXIgZXh0ZW5k
aW5nIHRvIHRoZSBsZWZ0IGJ5IHdvcmQgKDYpOgorfCAiCisgICAgIgorfCA8ZGl2PgorfCAgICI8
I3NlbGVjdGlvbi1mb2N1cz5oZWxsbyB3b3JsZCIKK3wgIgorICAgICIKK3wgPGJyPgorfCAiCisg
ICAgIgorfCA8ZGl2PgorfCAgICJyZWQsIGdyZWVuLCAmIGJsdWUuPCNzZWxlY3Rpb24tYW5jaG9y
PiIKK3wgIgorIgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL21vdmUt
Ynktd29yZC13aXRoLWtleWJvYXJkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRp
dGluZy9zZWxlY3Rpb24vaW9zL21vdmUtYnktd29yZC13aXRoLWtleWJvYXJkLmh0bWwJKG5vbmV4
aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL21vdmUtYnktd29y
ZC13aXRoLWtleWJvYXJkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3OSBAQAorPCFE
T0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgdXNlRmxleGlibGVWaWV3cG9y
dD10cnVlIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRl
bnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLCBtYXhpbXVtLXNjYWxlPTEs
IHNocmluay10by1maXQ9bm8iPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy91aS1o
ZWxwZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9kdW1w
LWFzLW1hcmt1cC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitNYXJrdXAuZGVzY3JpcHRpb24o
YFRoaXMgdGVzdHMgbW92aW5nIHRoZSBjYXJldCB3aXRoIHdvcmQgZ3JhbnVsYXJpdHkgb24gaU9T
LgorV2ViS2l0IHNob3VsZCBzdG9wIGF0IHRoZSBlbmQgb2YgZWFjaCB3b3JkIGJlZm9yZSB3aGl0
ZXNwYWNlIHdoZW4gbW92aW5nIGZvcndhcmRzLCBhbmQgYWZ0ZXIgd2hpdGVzcGFjZSB3aGVuIG1v
dmluZyBiYWNrd2FyZHMsCitUaGUgZW1wdHkgbGluZSBzaG91bGQgYmUgc2tpcHBlZCBpbiBlaXRo
ZXIgZGlyZWN0aW9uLmApOworTWFya3VwLm5vQXV0b0R1bXAoKTsKK01hcmt1cC53YWl0VW50aWxE
b25lKCk7CisKK2FzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGNvbnN0IGVkaXRvciA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3InKTsKKworICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIuYWN0aXZhdGVFbGVtZW50QW5kV2FpdEZv
cklucHV0U2Vzc2lvbihlZGl0b3IpOworCisgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lcikgewor
ICAgICAgICBNYXJrdXAuZHVtcChlZGl0b3IsICdNYXJrdXAnKTsKKyAgICAgICAgTWFya3VwLm5v
dGlmeURvbmUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGdldFNlbGVjdGlvbigp
LnNldFBvc2l0aW9uKGVkaXRvciwgMCk7CisgICAgTWFya3VwLmR1bXAoZWRpdG9yLCAnQmVmb3Jl
IG1vdmluZyBmb3J3YXJkcycpOworCisgICAgY29uc3QgbW92ZUNvdW50ID0gNjsKKworICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgbW92ZUNvdW50OyBpKyspIHsKKyAgICAgICAgYXdhaXQgVUlIZWxw
ZXIua2V5RG93bigncmlnaHRBcnJvdycsIFsnYWx0S2V5J10pOworICAgICAgICBhd2FpdCBVSUhl
bHBlci5lbnN1cmVQcmVzZW50YXRpb25VcGRhdGUoKTsKKyAgICAgICAgTWFya3VwLmR1bXAoZWRp
dG9yLCBgQWZ0ZXIgbW92aW5nIHRvIHRoZSByaWdodCBieSB3b3JkICgke2kgKyAxfSlgKTsKKyAg
ICB9CisKKyAgICBnZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbihlZGl0b3IsIGVkaXRvci5jaGls
ZE5vZGVzLmxlbmd0aCk7CisgICAgTWFya3VwLmR1bXAoZWRpdG9yLCAnQmVmb3JlIG1vdmluZyBi
YWNrd2FyZHMnKTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbW92ZUNvdW50OyBpKyspIHsK
KyAgICAgICAgYXdhaXQgVUlIZWxwZXIua2V5RG93bignbGVmdEFycm93JywgWydhbHRLZXknXSk7
CisgICAgICAgIGF3YWl0IFVJSGVscGVyLmVuc3VyZVByZXNlbnRhdGlvblVwZGF0ZSgpOworICAg
ICAgICBNYXJrdXAuZHVtcChlZGl0b3IsIGBBZnRlciBtb3ZpbmcgdG8gdGhlIGxlZnQgYnkgd29y
ZCAoJHtpICsgMX0pYCk7CisgICAgfQorCisgICAgZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24o
ZWRpdG9yLCAwKTsKKyAgICBNYXJrdXAuZHVtcChlZGl0b3IsICdCZWZvcmUgZXh0ZW5kaW5nIGZv
cndhcmRzJyk7CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1vdmVDb3VudDsgaSsrKSB7Cisg
ICAgICAgIGF3YWl0IFVJSGVscGVyLmtleURvd24oJ3JpZ2h0QXJyb3cnLCBbJ3NoaWZ0S2V5Jywg
J2FsdEtleSddKTsKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIuZW5zdXJlUHJlc2VudGF0aW9uVXBk
YXRlKCk7CisgICAgICAgIE1hcmt1cC5kdW1wKGVkaXRvciwgYEFmdGVyIGV4dGVuZGluZyB0byB0
aGUgcmlnaHQgYnkgd29yZCAoJHtpICsgMX0pYCk7CisgICAgfQorCisgICAgZ2V0U2VsZWN0aW9u
KCkuc2V0UG9zaXRpb24oZWRpdG9yLCBlZGl0b3IuY2hpbGROb2Rlcy5sZW5ndGgpOworICAgIE1h
cmt1cC5kdW1wKGVkaXRvciwgJ0JlZm9yZSBleHRlbmRpbmcgYmFja3dhcmRzJyk7CisKKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IG1vdmVDb3VudDsgaSsrKSB7CisgICAgICAgIGF3YWl0IFVJSGVs
cGVyLmtleURvd24oJ2xlZnRBcnJvdycsIFsnc2hpZnRLZXknLCAnYWx0S2V5J10pOworICAgICAg
ICBhd2FpdCBVSUhlbHBlci5lbnN1cmVQcmVzZW50YXRpb25VcGRhdGUoKTsKKyAgICAgICAgTWFy
a3VwLmR1bXAoZWRpdG9yLCBgQWZ0ZXIgZXh0ZW5kaW5nIHRvIHRoZSBsZWZ0IGJ5IHdvcmQgKCR7
aSArIDF9KWApOworICAgIH0KKworICAgIE1hcmt1cC5ub3RpZnlEb25lKCk7Cit9CisKK29ubG9h
ZCA9IHJ1blRlc3Q7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZWRpdG9y
IiBjb250ZW50ZWRpdGFibGU+CisgICAgPGRpdj5oZWxsbyB3b3JsZDwvZGl2PgorICAgIDxicj4K
KyAgICA8ZGl2PnJlZCwgZ3JlZW4sICYgYmx1ZS48L2Rpdj4KKzwvZGl2PgorPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL3NlbGVjdC1ub24t
ZWRpdGFibGUtdGV4dC11c2luZy1rZXlib2FyZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL3NlbGVjdC1ub24tZWRpdGFibGUtdGV4
dC11c2luZy1rZXlib2FyZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI0OTY1NykKKysrIExheW91
dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9zZWxlY3Qtbm9uLWVkaXRhYmxlLXRleHQtdXNp
bmcta2V5Ym9hcmQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMSw3ICsxMSw3IEBA
IFByZXNzIFNoaWZ0ICsgbGVmdCBhcnJvdyB0byBzZWxlY3QgdGhlIHAKIFBBU1Mgd2luZG93Lmdl
dFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIkhlciIKIAogUHJlc3MgU2hpZnQgKyBPcHRpb24g
KyByaWdodCBhcnJvdyB0byBzZWxlY3QgdG8gdGhlIGVuZCBvZiB0aGUgd29yZDoKLVBBU1Mgd2lu
ZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIkhlcmUncyAiCitQQVNTIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJIZXJlJ3MiCiAKIFByZXNzIFNoaWZ0ICsgT3B0
aW9uICsgbGVmdCBhcnJvdyB0byBzZWxlY3QgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgd29yZDoK
IFBBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIlRoZSIKSW5kZXg6IExh
eW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9zZWxlY3Qtbm9uLWVkaXRhYmxlLXRleHQt
dXNpbmcta2V5Ym9hcmQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Nl
bGVjdGlvbi9pb3Mvc2VsZWN0LW5vbi1lZGl0YWJsZS10ZXh0LXVzaW5nLWtleWJvYXJkLmh0bWwJ
KHJldmlzaW9uIDI0OTY1NykKKysrIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9z
ZWxlY3Qtbm9uLWVkaXRhYmxlLXRleHQtdXNpbmcta2V5Ym9hcmQuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtNDksNyArNDksNyBAQCBhc3luYyBmdW5jdGlvbiB0ZXN0RXh0ZW5kU2VsZWN0aW9uVG9F
bmRPCiAKICAgICBkZWJ1ZygiPGJyPlByZXNzIFNoaWZ0ICsgT3B0aW9uICsgcmlnaHQgYXJyb3cg
dG8gc2VsZWN0IHRvIHRoZSBlbmQgb2YgdGhlIHdvcmQ6Iik7CiAgICAgYXdhaXQgVUlIZWxwZXIu
Y2FsbEZ1bmN0aW9uQW5kV2FpdEZvckV2ZW50KCgpID0+IHdpbmRvdy50ZXN0UnVubmVyICYmIFVJ
SGVscGVyLmtleURvd24oInJpZ2h0QXJyb3ciLCBbInNoaWZ0S2V5IiwgImFsdEtleSJdKSAsIGRv
Y3VtZW50LCAic2VsZWN0aW9uY2hhbmdlIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJIZXJlJ3MgIik7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJIZXJl
J3MiKTsKIH0KIAogYXN5bmMgZnVuY3Rpb24gdGVzdEV4dGVuZFNlbGVjdGlvblRvQmVnaW5uaW5n
T2ZXb3JkKCkKQEAgLTc5LDYgKzc5LDEzIEBAIGFzeW5jIGZ1bmN0aW9uIHRlc3RFeHRlbmRTZWxl
Y3Rpb25Ub0JlZ2kKICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rp
b24oKS50b1N0cmluZygpIiwgIlRoZSBtaXNmaXRzLiIpOwogfQogCithc3luYyBmdW5jdGlvbiB3
YWl0Rm9yU2Vjb25kYXJ5UHJlc2VudGF0aW9uVXBkYXRlSWZOZWVkZWQoKQoreworICAgIC8vIFRo
ZXJlIG1pZ2h0IGJlIGEgc2Vjb25kYXJ5IHNlbGVjdGlvbmNoYW5nZSBldmVudCBhZnRlciBtb3Zp
bmcgYnkgcGFyYWdyYXBoIGJvdW5kYXJ5LiBTZWUgd2Via2l0Lm9yZy9iLzE5OTg1MQorICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIuZW5zdXJlUHJlc2Vu
dGF0aW9uVXBkYXRlKCk7Cit9CisKIGFzeW5jIGZ1bmN0aW9uIHRlc3RFeHRlbmRTZWxlY3Rpb25V
cCgpCiB7CiAgICAgYXdhaXQgVUlIZWxwZXIuY2FsbEZ1bmN0aW9uQW5kV2FpdEZvckV2ZW50KCgp
ID0+IHNlbGVjdGlvbi5zZXRCYXNlQW5kRXh0ZW50KHBhcmFncmFwaHNbMV0uZmlyc3RDaGlsZCwg
MSwgcGFyYWdyYXBoc1sxXS5maXJzdENoaWxkLCAwKSwgZG9jdW1lbnQsICJzZWxlY3Rpb25jaGFu
Z2UiKTsKQEAgLTg2LDYgKzkzLDcgQEAgYXN5bmMgZnVuY3Rpb24gdGVzdEV4dGVuZFNlbGVjdGlv
blVwKCkKICAgICBkZWJ1ZygiPGJyPlByZXNzIFNoaWZ0ICsgdXAgYXJyb3cgdG8gc2VsZWN0IHVw
OiIpOwogICAgIGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9
PiB3aW5kb3cudGVzdFJ1bm5lciAmJiBVSUhlbHBlci5rZXlEb3duKCJ1cEFycm93IiwgWyJzaGlm
dEtleSJdKSAsIGRvY3VtZW50LCAic2VsZWN0aW9uY2hhbmdlIik7CiAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJIZXJlJ3MgdG8g
dGhlIGNyYXp5IG9uZXMuXG5cblQiKTsKKyAgICBhd2FpdCB3YWl0Rm9yU2Vjb25kYXJ5UHJlc2Vu
dGF0aW9uVXBkYXRlSWZOZWVkZWQoKTsKIH0KIAogYXN5bmMgZnVuY3Rpb24gdGVzdEV4dGVuZFNl
bGVjdGlvbkRvd24oKQpAQCAtOTUsNiArMTAzLDcgQEAgYXN5bmMgZnVuY3Rpb24gdGVzdEV4dGVu
ZFNlbGVjdGlvbkRvd24oKQogICAgIGRlYnVnKCI8YnI+UHJlc3MgU2hpZnQgKyBkb3duIGFycm93
IHRvIHNlbGVjdCBkb3duOiIpOwogICAgIGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdh
aXRGb3JFdmVudCgoKSA9PiB3aW5kb3cudGVzdFJ1bm5lciAmJiBVSUhlbHBlci5rZXlEb3duKCJk
b3duQXJyb3ciLCBbInNoaWZ0S2V5Il0pICwgZG9jdW1lbnQsICJzZWxlY3Rpb25jaGFuZ2UiKTsK
ICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmlu
ZygpIiwgIlRoZSBtaXNmaXRzLlxuXG5UIik7CisgICAgYXdhaXQgd2FpdEZvclNlY29uZGFyeVBy
ZXNlbnRhdGlvblVwZGF0ZUlmTmVlZGVkKCk7CiB9CiAKIGFzeW5jIGZ1bmN0aW9uIHRlc3RFeHRl
bmRTZWxlY3Rpb25Ub0VuZE9mUGFyYWdyYXBoKCkKQEAgLTEwNyw2ICsxMTYsOCBAQCBhc3luYyBm
dW5jdGlvbiB0ZXN0RXh0ZW5kU2VsZWN0aW9uVG9FbmRPCiAgICAgYXdhaXQgVUlIZWxwZXIuY2Fs
bEZ1bmN0aW9uQW5kV2FpdEZvckV2ZW50KCgpID0+IHdpbmRvdy50ZXN0UnVubmVyICYmIFVJSGVs
cGVyLmtleURvd24oImRvd25BcnJvdyIsIFsic2hpZnRLZXkiLCAiYWx0S2V5Il0pICwgZG9jdW1l
bnQsICJzZWxlY3Rpb25jaGFuZ2UiKTsKICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRv
dy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIkhlcmUncyB0byB0aGUgY3Jhenkgb25lcy4i
KTsKIAorICAgIGF3YWl0IHdhaXRGb3JTZWNvbmRhcnlQcmVzZW50YXRpb25VcGRhdGVJZk5lZWRl
ZCgpOworCiAgICAgdG9nZ2xlT25seVNob3dUZXN0Q29udGFpbmVyKCk7CiB9CiAKQEAgLTExOCw4
ICsxMjksMTEgQEAgYXN5bmMgZnVuY3Rpb24gdGVzdEV4dGVuZFNlbGVjdGlvblRvQmVnaQogCiAg
ICAgZGVidWcoIjxicj5QcmVzcyBTaGlmdCArIE9wdGlvbiArIHVwIGFycm93IHRvIHNlbGVjdCB0
byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBwYXJhZ3JhcGg6Iik7CiAgICAgYXdhaXQgVUlIZWxwZXIu
Y2FsbEZ1bmN0aW9uQW5kV2FpdEZvckV2ZW50KCgpID0+IHdpbmRvdy50ZXN0UnVubmVyICYmIFVJ
SGVscGVyLmtleURvd24oInVwQXJyb3ciLCBbInNoaWZ0S2V5IiwgImFsdEtleSJdKSAsIGRvY3Vt
ZW50LCAic2VsZWN0aW9uY2hhbmdlIik7CisKICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndp
bmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIlRoZSByZWJlbHMuIik7CiAKKyAgICBh
d2FpdCB3YWl0Rm9yU2Vjb25kYXJ5UHJlc2VudGF0aW9uVXBkYXRlSWZOZWVkZWQoKTsKKwogICAg
IHRvZ2dsZU9ubHlTaG93VGVzdENvbnRhaW5lcigpOwogfQogCkBAIC0xMzMsNiArMTQ3LDggQEAg
YXN5bmMgZnVuY3Rpb24gdGVzdEV4dGVuZFNlbGVjdGlvblRvRW5kTwogICAgIGF3YWl0IFVJSGVs
cGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiB3aW5kb3cudGVzdFJ1bm5lciAm
JiBVSUhlbHBlci5rZXlEb3duKCJkb3duQXJyb3ciLCBbInNoaWZ0S2V5IiwgImN0cmxLZXkiXSkg
LCBkb2N1bWVudCwgInNlbGVjdGlvbmNoYW5nZSIpOwogICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
Zygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiSGVyZSdzIHRvIHRoZSBjcmF6
eSBvbmVzLlxuXG5UaGUgbWlzZml0cy5cblxuVGhlIHJlYmVscy4iKTsKIAorICAgIGF3YWl0IHdh
aXRGb3JTZWNvbmRhcnlQcmVzZW50YXRpb25VcGRhdGVJZk5lZWRlZCgpOworCiAgICAgdG9nZ2xl
T25seVNob3dUZXN0Q29udGFpbmVyKCk7CiB9CiAKQEAgLTE0Niw2ICsxNjIsOCBAQCBhc3luYyBm
dW5jdGlvbiB0ZXN0RXh0ZW5kU2VsZWN0aW9uVG9CZWdpCiAgICAgYXdhaXQgVUlIZWxwZXIuY2Fs
bEZ1bmN0aW9uQW5kV2FpdEZvckV2ZW50KCgpID0+IHdpbmRvdy50ZXN0UnVubmVyICYmIFVJSGVs
cGVyLmtleURvd24oInVwQXJyb3ciLCBbInNoaWZ0S2V5IiwgImN0cmxLZXkiXSkgLCBkb2N1bWVu
dCwgInNlbGVjdGlvbmNoYW5nZSIpOwogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93
LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiSGVyZSdzIHRvIHRoZSBjcmF6eSBvbmVzLlxu
XG5UaGUgbWlzZml0cy4iKTsKIAorICAgIGF3YWl0IHdhaXRGb3JTZWNvbmRhcnlQcmVzZW50YXRp
b25VcGRhdGVJZk5lZWRlZCgpOworCiAgICAgdG9nZ2xlT25seVNob3dUZXN0Q29udGFpbmVyKCk7
CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>