<?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>221431</bug_id>
          
          <creation_ts>2021-02-04 15:35:28 -0800</creation_ts>
          <short_desc>[Mac] Connect MediaSession with MediaRemote and NowPlaying</short_desc>
          <delta_ts>2021-02-09 14:51:15 -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>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1725834</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-02-04 15:35:28 -0800</bug_when>
    <thetext>Connect MediaSession with MediaRemote and NowPlaying</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725835</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-04 15:35:36 -0800</bug_when>
    <thetext>&lt;rdar://problem/74000363&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725849</commentid>
    <comment_count>2</comment_count>
      <attachid>419333</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-02-04 16:01:22 -0800</bug_when>
    <thetext>Created attachment 419333
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725871</commentid>
    <comment_count>3</comment_count>
      <attachid>419338</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-02-04 16:45:33 -0800</bug_when>
    <thetext>Created attachment 419338
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725894</commentid>
    <comment_count>4</comment_count>
      <attachid>419344</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-02-04 17:35:23 -0800</bug_when>
    <thetext>Created attachment 419344
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725895</commentid>
    <comment_count>5</comment_count>
      <attachid>419345</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-02-04 17:42:40 -0800</bug_when>
    <thetext>Created attachment 419345
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725898</commentid>
    <comment_count>6</comment_count>
      <attachid>419347</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-02-04 17:54:38 -0800</bug_when>
    <thetext>Created attachment 419347
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726008</commentid>
    <comment_count>7</comment_count>
      <attachid>419388</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-02-05 04:48:48 -0800</bug_when>
    <thetext>Created attachment 419388
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726018</commentid>
    <comment_count>8</comment_count>
      <attachid>419392</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-02-05 05:13:38 -0800</bug_when>
    <thetext>Created attachment 419392
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726165</commentid>
    <comment_count>9</comment_count>
      <attachid>419429</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-02-05 10:33:29 -0800</bug_when>
    <thetext>Created attachment 419429
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726196</commentid>
    <comment_count>10</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-02-05 11:02:40 -0800</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=419392&amp;action=review

r=me, with just a couple nits.

&gt; Source/WebCore/Modules/mediasession/MediaSession.cpp:54
&gt; +        static const MapEntry entries[] = {

I think this could be `constexpr` rather than just `const`.

&gt; Source/WebCore/Modules/mediasession/MediaSession.cpp:68
&gt; +        HashMap&lt;MediaSessionAction, PlatformMediaSession::RemoteControlCommandType, WTF::IntHash&lt;MediaSessionAction&gt;, WTF::StrongEnumHashTraits&lt;MediaSessionAction&gt;&gt; map;
&gt; +        for (auto&amp; entry : entries)
&gt; +            map.add(entry.action, entry.command);
&gt; +        return map;

I _think_ this whole section could just be written as:

using ActionToCommandMap = HashMap&lt;MediaSessionAction, PlatformMediaSession::RemoteControlCommandType, WTF::IntHash&lt;MediaSessionAction&gt;, WTF::StrongEnumHashTraits&lt;MediaSessionAction&gt;&gt;;
return ActionToCommandMap {
    { MediaSessionAction::Play, PlatformMediaSession::PlayCommand },
...
};

Since HashMap has a constructor that takes an initializer list, but NBD.

&gt; Source/WebCore/platform/mac/RemoteCommandListenerMac.mm:45
&gt; +        static const MapEntry entries[] = {

Same comment about `constexpr` and maybe just using an initializer list here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726275</commentid>
    <comment_count>11</comment_count>
      <attachid>419462</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-02-05 14:25:53 -0800</bug_when>
    <thetext>Created attachment 419462
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726299</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-05 15:19:02 -0800</bug_when>
    <thetext>Committed r272445: &lt;https://trac.webkit.org/changeset/272445&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 419462.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726759</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-02-08 13:14:45 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726761</commentid>
    <comment_count>14</comment_count>
      <attachid>419618</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-02-08 13:14:47 -0800</bug_when>
    <thetext>Created attachment 419618
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726779</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-08 13:47:00 -0800</bug_when>
    <thetext>Committed r272547: &lt;https://commits.webkit.org/r272547&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 419618.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726898</commentid>
    <comment_count>16</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-02-08 17:17:05 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726899</commentid>
    <comment_count>17</comment_count>
      <attachid>419657</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-02-08 17:17:07 -0800</bug_when>
    <thetext>Created attachment 419657
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726904</commentid>
    <comment_count>18</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-08 17:47:09 -0800</bug_when>
    <thetext>Committed r272563: &lt;https://commits.webkit.org/r272563&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 419657.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727048</commentid>
    <comment_count>19</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-02-09 08:19:51 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727049</commentid>
    <comment_count>20</comment_count>
      <attachid>419718</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-02-09 08:19:53 -0800</bug_when>
    <thetext>Created attachment 419718
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727050</commentid>
    <comment_count>21</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-09 08:21:09 -0800</bug_when>
    <thetext>/Volumes/Data/worker/Commit-Queue/build/Source/WebCore/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727055</commentid>
    <comment_count>22</comment_count>
      <attachid>419719</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-02-09 08:29:30 -0800</bug_when>
    <thetext>Created attachment 419719
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727081</commentid>
    <comment_count>23</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-09 09:20:46 -0800</bug_when>
    <thetext>commit-queue failed to commit attachment 419719 to WebKit repository. To retry, please set cq+ flag again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727119</commentid>
    <comment_count>24</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-09 10:33:31 -0800</bug_when>
    <thetext>Committed r272589: &lt;https://commits.webkit.org/r272589&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 419719.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727275</commentid>
    <comment_count>25</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-02-09 14:51:15 -0800</bug_when>
    <thetext>r272615</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419333</attachid>
            <date>2021-02-04 16:01:22 -0800</date>
            <delta_ts>2021-02-04 16:45:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221431-20210204160121.patch</filename>
            <type>text/plain</type>
            <size>95583</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxODU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjc2ZTRmMzRmYmQ0ZjEx
Y2U4ZjJjZWYxZWNkZjhmZmYxYTZjMTUwMC4uNWY1MmM0NDUzYWY0YzVmNDE4MGY2MzFhNTk3NmMy
Y2E1NWRiY2E4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisyMDIxLTAyLTA0ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIENvbm5l
Y3QgTWVkaWFTZXNzaW9uIHdpdGggTWVkaWFSZW1vdGUgYW5kIE5vd1BsYXlpbmcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTQzMQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNzQwMDAzNjM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUm91dGUgYWxsIHJlbW90ZSBjb250cm9sIGNvbW1hbmRzIHRvIG5h
dmlnYXRvci5tZWRpYVNlc3Npb24gd2hlbiBpdCBoYXMgYW55IAorICAgICAgICByZWdpc3RlcmVk
IGFjdGlvbiBoYW5kbGVycywgYW5kIHBhc3MgbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5tZXRhZGF0
YSB0byBOb3dQbGF5aW5nLgorCisgICAgICAgIFRlc3RlZCBieSBuZXcgQVBJIHRlc3RzIGluIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTWVkaWFTZXNzaW9uLm1tLgorCisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFJbWFnZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFJbWFnZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
SW1hZ2U6OmRlY29kZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRh
ZGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYU1ldGFkYXRhOjpzZXRUaXRsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYU1ldGFkYXRhOjpzZXRBcnRpc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFNZXRhZGF0YTo6c2V0QWxidW0pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFN
ZXRhZGF0YTo6c2V0QXJ0d29yayk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVk
aWFNZXRhZGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFNZXRhZGF0YTo6dGl0bGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFNZXRhZGF0YTo6YXJ0aXN0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhTWV0YWRhdGE6OmFsYnVtIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhTWV0YWRhdGE6OmFydHdvcmsgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFNZXRhZGF0YTo6bWV0YWRhdGEgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
ZXNzaW9uL01lZGlhTWV0YWRhdGFJbml0Lmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYU1ldGFk
YXRhSW5pdDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhTWV0YWRhdGFJ
bml0OjpkZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpuZXh0TG9nSWRlbnRpZmllcik6CisgICAgICAgIChX
ZWJDb3JlOjpsb2dDaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6OmxvZ0NsYXNzTmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUNvbW1hbmRGb3JNZWRpYVNlc3Npb25BY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uOjpNZWRpYVNlc3Npb24pOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTZXNzaW9uOjpzZXRNZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVNlc3Npb246OnNldFBsYXliYWNrU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
ZXNzaW9uOjpzZXRBY3Rpb25IYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lv
bjo6c2V0UG9zaXRpb25TdGF0ZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVk
aWFTZXNzaW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb246Omhhc0FjdGl2ZUFj
dGlvbkhhbmRsZXJzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6bG9n
Z2VyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6bG9nSWRlbnRpZmll
ciBjb25zdCk6CisgICAgICAgIChXVEY6OkxvZ0FyZ3VtZW50PFdlYkNvcmU6Ok1lZGlhU2Vzc2lv
blBsYXliYWNrU3RhdGU+Ojp0b1N0cmluZyk6CisgICAgICAgIChXVEY6OkxvZ0FyZ3VtZW50PFdl
YkNvcmU6Ok1lZGlhU2Vzc2lvbkFjdGlvbj46OnRvU3RyaW5nKToKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmRpZFJlY2VpdmVS
ZW1vdGVDb250cm9sQ29tbWFuZCk6CisgICAgICAgICogaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OmRpZFJlY2VpdmVS
ZW1vdGVDb250cm9sQ29tbWFuZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNz
aW9uOjpub3dQbGF5aW5nSW5mbyBjb25zdCk6CisgICAgICAgICogaHRtbC9NZWRpYUVsZW1lbnRT
ZXNzaW9uLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3Rl
Q29tbWFuZExpc3RlbmVyOjpzY2hlZHVsZVN1cHBvcnRlZENvbW1hbmRzVXBkYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6YWRkU3VwcG9ydGVkQ29tbWFuZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVDb21tYW5kTGlzdGVuZXI6OnJlbW92ZVN1cHBvcnRl
ZENvbW1hbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmg6CisgICAgICAgIChXZWJD
b3JlOjpOb3dQbGF5aW5nSW5mbzo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9Q
bGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RW51bWVy
YXRpb25Ub1N0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNl
c3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6
YWRkU3VwcG9ydGVkQ29tbWFuZCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXI6OnJlbW92ZVN1cHBvcnRlZENvbW1hbmQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2NoZWR1bGVTZXNzaW9uU3RhdHVzVXBk
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2Vzc2lv
bkNhblByb2R1Y2VBdWRpb0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9u
TWFuYWdlckNvY29hOjphZGRTdXBwb3J0ZWRDb21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6cmVtb3ZlU3VwcG9ydGVkQ29tbWFuZCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJbmZvKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvTWVkaWFSZW1vdGVTb2Z0TGluay5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL01lZGlhUmVtb3RlU29mdExpbmsuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om1lZGlhUmVt
b3RlQ29tbWFuZEZvclBsYXRmb3JtQ29tbWFuZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVD
b21tYW5kTGlzdGVuZXJNYWM6OmRlZmF1bHRDb21tYW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpp
c1NlZWtDb21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lck1h
Yzo6dXBkYXRlU3VwcG9ydGVkQ29tbWFuZHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlQ29t
bWFuZExpc3RlbmVyTWFjOjpSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMpOgorCiAyMDIxLTAxLTIy
ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkBpZ2FsaWEuY29tPgogCiAgICAgICAg
IEZpbmlzaCBpbnRyb2R1Y3Rpb24gb2YgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTogcmVtb3Zl
IHJlbWFpbmluZyBnbHVlIGNvZGUgZnJvbSBSZW5kZXJMYXllcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5k
ZXggNjg0YmFiNjdlYWUzOGRjYzYxZDEzYjdkYmUyMGNiNjk3YmEyZGE5Yy4uNDFkMDdjMjE4M2U4
NWU5MGNlMzI3ZmEwN2MxMzBjZTNlODcwNWNmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMjEtMDItMDQgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5j
b20+CisKKyAgICAgICAgW01hY10gQ29ubmVjdCBNZWRpYVNlc3Npb24gd2l0aCBNZWRpYVJlbW90
ZSBhbmQgTm93UGxheWluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjIxNDMxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NDAwMDM2Mz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhbC9zcGkvbWFj
L01lZGlhUmVtb3RlU1BJLmg6CisKIDIwMjEtMDEtMjEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgZXhwZXJpbWVudGFsIGZlYXR1cmUg
dG8gdXNlIG5ldHdvcmsgbG9hZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg4ODVlMGFiNjBiN2U5NWY2ZWY0ZWYz
MDZlN2E1ZWQ1ODM5NjQ4N2EuLjQwZDAyNzk0NWI2ZTc5NmU2YzMzYzFjNjU3YjlkYzE1MGI5MzJl
ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDItMDQgIEVyaWMgQ2FybHNvbiAg
PGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW01hY10gQ29ubmVjdCBNZWRpYVNl
c3Npb24gd2l0aCBNZWRpYVJlbW90ZSBhbmQgTm93UGxheWluZworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNDMxCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS83NDAwMDM2Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgYSBwcml2YXRlIHByZWZlcmVuY2Ugc28gdGhlIG5ldyBNZWRpYVNlc3Npb24g
QVBJIHRlc3QgY2FuIGVuYWJsZSB0aGUgZmVhdHVyZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbToKKyAgICAgICAgKC1bV0tQcmVmZXJlbmNlcyBfbWVk
aWFTZXNzaW9uRW5hYmxlZF0pOgorICAgICAgICAoLVtXS1ByZWZlcmVuY2VzIF9zZXRNZWRpYVNl
c3Npb25FbmFibGVkOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJl
bmNlc1ByaXZhdGUuaDoKKwogMjAyMS0wMS0yNSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBh
cHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBSZXN0cmljdCBhY2Nlc3MgdG8gZHRyYWNlaGVs
cGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRp
YUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYUltYWdl
LmgKaW5kZXggYWYxMTk1ZWFkMGZiMjAwZjJiNWFhYWFmMDZiNzgwYzI2MWUyZGFkZC4uNDkzMjQw
MGEwMmY4NzY5ZDE5NDg5Y2QzOGEyZGE4MDNhNDgxYzI0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhSW1hZ2UuaApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMyw4ICszMywzMyBAQCBzdHJ1
Y3QgTWVkaWFJbWFnZSB7CiAgICAgU3RyaW5nIHNyYzsKICAgICBTdHJpbmcgc2l6ZXM7CiAgICAg
U3RyaW5nIHR5cGU7CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShF
bmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlv
bmFsPE1lZGlhSW1hZ2U+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCit0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPiBpbmxpbmUgdm9pZCBNZWRpYUltYWdlOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHNyYyA8PCBzaXplcyA8PCB0eXBlOworfQorCit0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUgT3B0aW9uYWw8TWVkaWFJbWFnZT4gTWVkaWFJbWFn
ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgU3RyaW5nIHNyYzsKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHNyYykpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBTdHJpbmcg
c2l6ZXM7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzaXplcykpCisgICAgICAgIHJldHVybiB7
IH07CisKKyAgICBTdHJpbmcgdHlwZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHR5cGUpKQor
ICAgICAgICByZXR1cm4geyB9OworCisgICAgcmV0dXJuIE1lZGlhSW1hZ2UgeyBXVEZNb3ZlKHNy
YyksIFdURk1vdmUoc2l6ZXMpLCBXVEZNb3ZlKHR5cGUpIH07Cit9CisKIH0KIAogI2VuZGlmIC8v
IEVOQUJMRShNRURJQV9TRVNTSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcAppbmRleCBhNmY0NDljNDI2MGZjZmI3Y2E0
NmMwNmQxOThlYzdlNjU2MjgxZDlkLi5mNmZmMzFmYjA4ZGQ0OTgxYTNiY2U5MDM5MmJkYmQyY2Rh
NWZjZGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9N
ZWRpYU1ldGFkYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lv
bi9NZWRpYU1ldGFkYXRhLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC02NCwyNSArNjQsMjggQEAgdm9pZCBNZWRpYU1ldGFkYXRhOjpy
ZXNldE1lZGlhU2Vzc2lvbigpCiAKIHZvaWQgTWVkaWFNZXRhZGF0YTo6c2V0VGl0bGUoY29uc3Qg
U3RyaW5nJiB0aXRsZSkKIHsKLSAgICBpZiAobV90aXRsZSA9PSB0aXRsZSkKKyAgICBpZiAobV9t
ZXRhZGF0YS50aXRsZSA9PSB0aXRsZSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fdGl0bGUgPSB0
aXRsZTsKKworICAgIG1fbWV0YWRhdGEudGl0bGUgPSB0aXRsZTsKICAgICBtZXRhZGF0YVVwZGF0
ZWQoKTsKIH0KIAogdm9pZCBNZWRpYU1ldGFkYXRhOjpzZXRBcnRpc3QoY29uc3QgU3RyaW5nJiBh
cnRpc3QpCiB7Ci0gICAgaWYgKG1fYXJ0aXN0ID09IGFydGlzdCkKKyAgICBpZiAobV9tZXRhZGF0
YS5hcnRpc3QgPT0gYXJ0aXN0KQogICAgICAgICByZXR1cm47Ci0gICAgbV9hcnRpc3QgPSBhcnRp
c3Q7CisKKyAgICBtX21ldGFkYXRhLmFydGlzdCA9IGFydGlzdDsKICAgICBtZXRhZGF0YVVwZGF0
ZWQoKTsKIH0KIAogdm9pZCBNZWRpYU1ldGFkYXRhOjpzZXRBbGJ1bShjb25zdCBTdHJpbmcmIGFs
YnVtKQogewotICAgIGlmIChtX2FsYnVtID09IGFsYnVtKQorICAgIGlmIChtX21ldGFkYXRhLmFs
YnVtID09IGFsYnVtKQogICAgICAgICByZXR1cm47Ci0gICAgbV9hbGJ1bSA9IGFsYnVtOworCisg
ICAgbV9tZXRhZGF0YS5hbGJ1bSA9IGFsYnVtOwogICAgIG1ldGFkYXRhVXBkYXRlZCgpOwogfQog
CkBAIC05Nyw3ICsxMDAsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBNZWRpYU1ldGFkYXRhOjpzZXRB
cnR3b3JrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFZlYwogICAgICAgICByZXNv
bHZlZEFydHdvcmsudW5jaGVja2VkQXBwZW5kKE1lZGlhSW1hZ2UgeyByZXNvbHZlZFNyYy5zdHJp
bmcoKSwgaW1hZ2Uuc2l6ZXMsIGltYWdlLnR5cGUgfSk7CiAgICAgfQogCi0gICAgbV9hcnR3b3Jr
ID0gV1RGTW92ZShyZXNvbHZlZEFydHdvcmspOworICAgIG1fbWV0YWRhdGEuYXJ0d29yayA9IFdU
Rk1vdmUocmVzb2x2ZWRBcnR3b3JrKTsKICAgICBtZXRhZGF0YVVwZGF0ZWQoKTsKICAgICByZXR1
cm4geyB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Np
b24vTWVkaWFNZXRhZGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24v
TWVkaWFNZXRhZGF0YS5oCmluZGV4IDI2NGVlY2NhOTUwYjIyZWE0NTNiNzFlNDJkZmE4MDQ2MGE5
NzZiY2EuLjMwZTA5M2Q2ZDI3ZGRiNzQxNTI4MWVlOGI1ZDEwMDRlZmNmYWE1ZGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmgK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCiAKKyNpbmNsdWRlICJN
ZWRpYU1ldGFkYXRhSW5pdC5oIgogI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgogI2luY2x1ZGUg
PHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTM0LDEwICszNSw5
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBNZWRp
YVNlc3Npb247CiBzdHJ1Y3QgTWVkaWFJbWFnZTsKLXN0cnVjdCBNZWRpYU1ldGFkYXRhSW5pdDsK
KwordXNpbmcgTWVkaWFTZXNzaW9uTWV0YWRhdGEgPSBNZWRpYU1ldGFkYXRhSW5pdDsKIAogY2xh
c3MgTWVkaWFNZXRhZGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhTWV0YWRhdGE+IHsKIHB1
YmxpYzoKQEAgLTQ3LDI3ICs0NywyNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNZWRpYVNlc3Np
b24oTWVkaWFTZXNzaW9uJik7CiAgICAgdm9pZCByZXNldE1lZGlhU2Vzc2lvbigpOwogCi0gICAg
Y29uc3QgU3RyaW5nJiB0aXRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGl0bGU7IH0KKyAgICBjb25z
dCBTdHJpbmcmIHRpdGxlKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS50aXRsZTsgfQogICAg
IHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nJik7CiAKLSAgICBjb25zdCBTdHJpbmcmIGFydGlz
dCgpIGNvbnN0IHsgcmV0dXJuIG1fYXJ0aXN0OyB9CisgICAgY29uc3QgU3RyaW5nJiBhcnRpc3Qo
KSBjb25zdCB7IHJldHVybiBtX21ldGFkYXRhLmFydGlzdDsgfQogICAgIHZvaWQgc2V0QXJ0aXN0
KGNvbnN0IFN0cmluZyYpOwogCi0gICAgY29uc3QgU3RyaW5nJiBhbGJ1bSgpIGNvbnN0IHsgcmV0
dXJuIG1fYWxidW07IH0KKyAgICBjb25zdCBTdHJpbmcmIGFsYnVtKCkgY29uc3QgeyByZXR1cm4g
bV9tZXRhZGF0YS5hbGJ1bTsgfQogICAgIHZvaWQgc2V0QWxidW0oY29uc3QgU3RyaW5nJik7CiAK
LSAgICBjb25zdCBWZWN0b3I8TWVkaWFJbWFnZT4mIGFydHdvcmsoKSBjb25zdCB7IHJldHVybiBt
X2FydHdvcms7IH0KKyAgICBjb25zdCBWZWN0b3I8TWVkaWFJbWFnZT4mIGFydHdvcmsoKSBjb25z
dCB7IHJldHVybiBtX21ldGFkYXRhLmFydHdvcms7IH0KICAgICBFeGNlcHRpb25Pcjx2b2lkPiBz
ZXRBcnR3b3JrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBWZWN0b3I8TWVkaWFJbWFnZT4mJik7
CiAKKyAgICBjb25zdCBNZWRpYVNlc3Npb25NZXRhZGF0YSYgbWV0YWRhdGEoKSBjb25zdCB7IHJl
dHVybiBtX21ldGFkYXRhOyB9CisKIHByaXZhdGU6CiAgICAgTWVkaWFNZXRhZGF0YSgpOwogICAg
IHZvaWQgbWV0YWRhdGFVcGRhdGVkKCk7CiAKICAgICBXZWFrUHRyPE1lZGlhU2Vzc2lvbj4gbV9z
ZXNzaW9uOwotICAgIFN0cmluZyBtX3RpdGxlOwotICAgIFN0cmluZyBtX2FydGlzdDsKLSAgICBT
dHJpbmcgbV9hbGJ1bTsKLSAgICBWZWN0b3I8TWVkaWFJbWFnZT4gbV9hcnR3b3JrOworICAgIE1l
ZGlhU2Vzc2lvbk1ldGFkYXRhIG1fbWV0YWRhdGE7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhSW5pdC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YUluaXQuaAppbmRl
eCAwMTJlYzJkMDk1ZjkzYmJmZTI4YTM4ZDYzYWFlYTQyMTI2YWI1NmU1Li42NjlkZWZmYTJkNjk0
MDg1ZjA4ZjEwZGYxYjkxNmVmNDRlODg1ZTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhSW5pdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGFJbml0LmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsOCArMzYsMzcg
QEAgc3RydWN0IE1lZGlhTWV0YWRhdGFJbml0IHsKICAgICBTdHJpbmcgYXJ0aXN0OwogICAgIFN0
cmluZyBhbGJ1bTsKICAgICBWZWN0b3I8TWVkaWFJbWFnZT4gYXJ0d29yazsKKworICAgIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8TWVkaWFNZXRhZGF0YUluaXQ+IGRl
Y29kZShEZWNvZGVyJik7CiB9OwogCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiBpbmxpbmUgdm9p
ZCBNZWRpYU1ldGFkYXRhSW5pdDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7Cisg
ICAgZW5jb2RlciA8PCB0aXRsZSA8PCBhcnRpc3QgPDwgYWxidW0gPDwgYXJ0d29yazsKK30KKwor
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIE9wdGlvbmFsPE1lZGlhTWV0YWRhdGFJbml0
PiBNZWRpYU1ldGFkYXRhSW5pdDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgU3Ry
aW5nIHRpdGxlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUodGl0bGUpKQorICAgICAgICByZXR1
cm4geyB9OworCisgICAgU3RyaW5nIGFydGlzdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFy
dGlzdCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBTdHJpbmcgYWxidW07CisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShhbGJ1bSkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBWZWN0
b3I8TWVkaWFJbWFnZT4gYXJ0d29yazsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFydHdvcmsp
KQorICAgICAgICByZXR1cm4geyB9OworCisgICAgcmV0dXJuIE1lZGlhTWV0YWRhdGFJbml0IHsg
V1RGTW92ZSh0aXRsZSksIFdURk1vdmUoYXJ0aXN0KSwgV1RGTW92ZShhbGJ1bSksIFdURk1vdmUo
YXJ0d29yaykgfTsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Np
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9u
LmNwcAppbmRleCAxYWI2MjI0ODMyZWVmYTEyOTJmMTM4NjEzYjQxZjA3NzA5OTYyM2NlLi5hM2I1
YTkwZjA0N2RmN2U4OWEzNzU1NTcwNGJjM2ZlZTc1ZWUxMjAyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsMTEgKzI4
LDUzIEBACiAKICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKIAorI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKICNpbmNsdWRlICJNZWRpYU1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiTmF2aWdhdG9yLmgiCisj
aW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorc3RhdGljIGNvbnN0IHZvaWQqIG5leHRMb2dJZGVudGlmaWVyKCkKK3sKKyAgICBz
dGF0aWMgdWludDY0X3QgbG9nSWRlbnRpZmllciA9IGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVt
YmVyKCk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KCsrbG9nSWRl
bnRpZmllcik7Cit9CisKK3N0YXRpYyBXVEZMb2dDaGFubmVsJiBsb2dDaGFubmVsKCkgeyByZXR1
cm4gTG9nTWVkaWE7IH0KK3N0YXRpYyBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSB7IHJldHVy
biAiTWVkaWFTZXNzaW9uIjsgfQorCitzdGF0aWMgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90
ZUNvbnRyb2xDb21tYW5kVHlwZSBwbGF0Zm9ybUNvbW1hbmRGb3JNZWRpYVNlc3Npb25BY3Rpb24o
TWVkaWFTZXNzaW9uQWN0aW9uIGFjdGlvbikKK3sKKyAgICBzdGF0aWMgY29uc3QgYXV0byBjb21t
YW5kTWFwID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICAgICAgc3RydWN0IE1hcEVudHJ5
IHsKKyAgICAgICAgICAgIE1lZGlhU2Vzc2lvbkFjdGlvbiBhY3Rpb247CisgICAgICAgICAgICBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlIGNvbW1hbmQ7Cisg
ICAgICAgIH07CisgICAgICAgIHN0YXRpYyBjb25zdCBNYXBFbnRyeSBlbnRyaWVzW10gPSB7Cisg
ICAgICAgICAgICB7IE1lZGlhU2Vzc2lvbkFjdGlvbjo6UGxheSwgUGxhdGZvcm1NZWRpYVNlc3Np
b246OlBsYXlDb21tYW5kIH0sCisgICAgICAgICAgICB7IE1lZGlhU2Vzc2lvbkFjdGlvbjo6UGF1
c2UsIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQYXVzZUNvbW1hbmQgfSwKKyAgICAgICAgICAgIHsg
TWVkaWFTZXNzaW9uQWN0aW9uOjpTZWVrZm9yd2FyZCwgUGxhdGZvcm1NZWRpYVNlc3Npb246OlNr
aXBGb3J3YXJkQ29tbWFuZCB9LAorICAgICAgICAgICAgeyBNZWRpYVNlc3Npb25BY3Rpb246OlNl
ZWtiYWNrd2FyZCwgUGxhdGZvcm1NZWRpYVNlc3Npb246OlNraXBCYWNrd2FyZENvbW1hbmQgfSwK
KyAgICAgICAgICAgIHsgTWVkaWFTZXNzaW9uQWN0aW9uOjpQcmV2aW91c3RyYWNrLCBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6TmV4dFRyYWNrQ29tbWFuZCB9LAorICAgICAgICAgICAgeyBNZWRpYVNl
c3Npb25BY3Rpb246Ok5leHR0cmFjaywgUGxhdGZvcm1NZWRpYVNlc3Npb246OlByZXZpb3VzVHJh
Y2tDb21tYW5kIH0sCisgICAgICAgICAgICB7IE1lZGlhU2Vzc2lvbkFjdGlvbjo6U3RvcCwgUGxh
dGZvcm1NZWRpYVNlc3Npb246OlN0b3BDb21tYW5kIH0sCisgICAgICAgICAgICB7IE1lZGlhU2Vz
c2lvbkFjdGlvbjo6U2Vla3RvLCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2Vla1RvUGxheWJhY2tQ
b3NpdGlvbkNvbW1hbmQgfSwKKyAgICAgICAgfTsKKworICAgICAgICBIYXNoTWFwPE1lZGlhU2Vz
c2lvbkFjdGlvbiwgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlw
ZSwgV1RGOjpJbnRIYXNoPE1lZGlhU2Vzc2lvbkFjdGlvbj4sIFdURjo6U3Ryb25nRW51bUhhc2hU
cmFpdHM8TWVkaWFTZXNzaW9uQWN0aW9uPj4gbWFwOworICAgICAgICBmb3IgKGF1dG8mIGVudHJ5
IDogZW50cmllcykKKyAgICAgICAgICAgIG1hcC5hZGQoZW50cnkuYWN0aW9uLCBlbnRyeS5jb21t
YW5kKTsKKyAgICAgICAgcmV0dXJuIG1hcDsKKyAgICB9KCkpOworCisgICAgYXV0byBpdCA9IGNv
bW1hbmRNYXAuZ2V0KCkuZmluZChhY3Rpb24pOworICAgIGlmIChpdCAhPSBjb21tYW5kTWFwLmdl
dCgpLmVuZCgpKQorICAgICAgICByZXR1cm4gaXQtPnZhbHVlOworCisgICAgcmV0dXJuIFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpOb0NvbW1hbmQ7Cit9CisKIFJlZjxNZWRpYVNlc3Npb24+IE1lZGlh
U2Vzc2lvbjo6Y3JlYXRlKE5hdmlnYXRvciYgbmF2aWdhdG9yKQogewogICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IE1lZGlhU2Vzc2lvbihuYXZpZ2F0b3IpKTsKQEAgLTQxLDEyICs4MywxOCBAQCBS
ZWY8TWVkaWFTZXNzaW9uPiBNZWRpYVNlc3Npb246OmNyZWF0ZShOYXZpZ2F0b3ImIG5hdmlnYXRv
cikKIE1lZGlhU2Vzc2lvbjo6TWVkaWFTZXNzaW9uKE5hdmlnYXRvciYgbmF2aWdhdG9yKQogICAg
IDogbV9uYXZpZ2F0b3IobWFrZVdlYWtQdHIobmF2aWdhdG9yKSkKIHsKKyAgICBtX2xvZ2dlciA9
IG1ha2VSZWZQdHIoRG9jdW1lbnQ6OnNoYXJlZExvZ2dlcigpKTsKKyAgICBtX2xvZ0lkZW50aWZp
ZXIgPSBuZXh0TG9nSWRlbnRpZmllcigpOworCisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVS
KTsKIH0KIAogTWVkaWFTZXNzaW9uOjp+TWVkaWFTZXNzaW9uKCkgPSBkZWZhdWx0OwogCiB2b2lk
IE1lZGlhU2Vzc2lvbjo6c2V0TWV0YWRhdGEoUmVmUHRyPE1lZGlhTWV0YWRhdGE+JiYgbWV0YWRh
dGEpCiB7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKwogICAgIGlmIChtX21ldGFk
YXRhKQogICAgICAgICBtX21ldGFkYXRhLT5yZXNldE1lZGlhU2Vzc2lvbigpOwogICAgIG1fbWV0
YWRhdGEgPSBXVEZNb3ZlKG1ldGFkYXRhKTsKQEAgLTYwLDYgKzEwOCw4IEBAIHZvaWQgTWVkaWFT
ZXNzaW9uOjpzZXRQbGF5YmFja1N0YXRlKE1lZGlhU2Vzc2lvblBsYXliYWNrU3RhdGUgc3RhdGUp
CiAgICAgaWYgKG1fcGxheWJhY2tTdGF0ZSA9PSBzdGF0ZSkKICAgICAgICAgcmV0dXJuOwogCisg
ICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBzdGF0ZSk7CisKICAgICBhdXRvIGN1cnJlbnRQ
b3NpdGlvbiA9IHRoaXMtPmN1cnJlbnRQb3NpdGlvbigpOwogICAgIGlmIChtX3Bvc2l0aW9uU3Rh
dGUgJiYgY3VycmVudFBvc2l0aW9uKSB7CiAgICAgICAgIG1fcG9zaXRpb25TdGF0ZS0+cG9zaXRp
b24gPSAqY3VycmVudFBvc2l0aW9uOwpAQCAtNzAsMTAgKzEyMCwxOCBAQCB2b2lkIE1lZGlhU2Vz
c2lvbjo6c2V0UGxheWJhY2tTdGF0ZShNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRlIHN0YXRlKQog
CiB2b2lkIE1lZGlhU2Vzc2lvbjo6c2V0QWN0aW9uSGFuZGxlcihNZWRpYVNlc3Npb25BY3Rpb24g
YWN0aW9uLCBSZWZQdHI8TWVkaWFTZXNzaW9uQWN0aW9uSGFuZGxlcj4mJiBoYW5kbGVyKQogewot
ICAgIGlmIChoYW5kbGVyKQorICAgIGlmIChoYW5kbGVyKSB7CisgICAgICAgIEFMV0FZU19MT0co
TE9HSURFTlRJRklFUiwgImFkZGluZyAiLCBhY3Rpb24pOwogICAgICAgICBtX2FjdGlvbkhhbmRs
ZXJzLnNldChhY3Rpb24sIGhhbmRsZXIpOwotICAgIGVsc2UKLSAgICAgICAgbV9hY3Rpb25IYW5k
bGVycy5yZW1vdmUoYWN0aW9uKTsKKyAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
OjpzaGFyZWRNYW5hZ2VyKCkuYWRkU3VwcG9ydGVkQ29tbWFuZChwbGF0Zm9ybUNvbW1hbmRGb3JN
ZWRpYVNlc3Npb25BY3Rpb24oYWN0aW9uKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKG1f
YWN0aW9uSGFuZGxlcnMuY29udGFpbnMoYWN0aW9uKSkgeworICAgICAgICAgICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSLCAicmVtb3ZpbmcgIiwgYWN0aW9uKTsKKyAgICAgICAgICAgIG1fYWN0
aW9uSGFuZGxlcnMucmVtb3ZlKGFjdGlvbik7CisgICAgICAgIH0KKyAgICAgICAgUGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkucmVtb3ZlU3VwcG9ydGVkQ29tbWFu
ZChwbGF0Zm9ybUNvbW1hbmRGb3JNZWRpYVNlc3Npb25BY3Rpb24oYWN0aW9uKSk7CisgICAgfQor
ICAgIAogICAgIGFjdGlvbkhhbmRsZXJzVXBkYXRlZCgpOwogfQogCkBAIC04OSw2ICsxNDcsOCBA
QCBSZWZQdHI8TWVkaWFTZXNzaW9uQWN0aW9uSGFuZGxlcj4gTWVkaWFTZXNzaW9uOjpoYW5kbGVy
Rm9yQWN0aW9uKE1lZGlhU2Vzc2lvbkFjdAogCiBFeGNlcHRpb25Pcjx2b2lkPiBNZWRpYVNlc3Np
b246OnNldFBvc2l0aW9uU3RhdGUoT3B0aW9uYWw8TWVkaWFQb3NpdGlvblN0YXRlPiYmIHN0YXRl
KQogeworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKICAgICBpZiAoIXN0YXRlKSB7
CiAgICAgICAgIG1fcG9zaXRpb25TdGF0ZSA9IFdURjo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJu
IHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01l
ZGlhU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFT
ZXNzaW9uLmgKaW5kZXggM2Y2NGYzYjAyNDY4NGU0ZjdlYzY0NDg3YjQxN2Y1ZWQxNzNhNzkwOS4u
NGY0YmU0NzcyNjQ0MDg2Yjc3ZDYxZDlmNWIwODIzYTE1ZDA1MDU2OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmgKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsMTAgKzI3
LDE0IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKIAorI2luY2x1ZGUgIkpTTWVkaWFQ
b3NpdGlvblN0YXRlLmgiCisjaW5jbHVkZSAiSlNNZWRpYVNlc3Npb25BY3Rpb24uaCIKKyNpbmNs
dWRlICJKU01lZGlhU2Vzc2lvblBsYXliYWNrU3RhdGUuaCIKICNpbmNsdWRlICJNZWRpYVBvc2l0
aW9uU3RhdGUuaCIKICNpbmNsdWRlICJNZWRpYVNlc3Npb25BY3Rpb24uaCIKICNpbmNsdWRlICJN
ZWRpYVNlc3Npb25BY3Rpb25IYW5kbGVyLmgiCiAjaW5jbHVkZSAiTWVkaWFTZXNzaW9uUGxheWJh
Y2tTdGF0ZS5oIgorI2luY2x1ZGUgPHd0Zi9Mb2dnZXIuaD4KICNpbmNsdWRlIDx3dGYvTW9ub3Rv
bmljVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9Vbmlx
dWVSZWYuaD4KQEAgLTU3LDEzICs2MSwxOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
T3B0aW9uYWw8ZG91YmxlPiBjdXJyZW50UG9zaXRpb24oKSBjb25zdDsKIAogICAgIHZvaWQgbWV0
YWRhdGFVcGRhdGVkKCk7CisKICAgICB2b2lkIGFjdGlvbkhhbmRsZXJzVXBkYXRlZCgpOwogICAg
IGJvb2wgaGFzQWN0aW9uSGFuZGxlcihNZWRpYVNlc3Npb25BY3Rpb24pIGNvbnN0OwogICAgIFdF
QkNPUkVfRVhQT1JUIFJlZlB0cjxNZWRpYVNlc3Npb25BY3Rpb25IYW5kbGVyPiBoYW5kbGVyRm9y
QWN0aW9uKE1lZGlhU2Vzc2lvbkFjdGlvbikgY29uc3Q7CisgICAgYm9vbCBoYXNBY3RpdmVBY3Rp
b25IYW5kbGVycygpIGNvbnN0IHsgcmV0dXJuICFtX2FjdGlvbkhhbmRsZXJzLmlzRW1wdHkoKTsg
fQogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IE1lZGlhU2Vzc2lvbihOYXZpZ2F0b3ImKTsKIAor
ICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgeyByZXR1cm4gKm1fbG9nZ2VyLmdldCgp
OyB9CisgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fbG9n
SWRlbnRpZmllcjsgfQorCiAgICAgV2Vha1B0cjxOYXZpZ2F0b3I+IG1fbmF2aWdhdG9yOwogICAg
IFJlZlB0cjxNZWRpYU1ldGFkYXRhPiBtX21ldGFkYXRhOwogICAgIE1lZGlhU2Vzc2lvblBsYXli
YWNrU3RhdGUgbV9wbGF5YmFja1N0YXRlIHsgTWVkaWFTZXNzaW9uUGxheWJhY2tTdGF0ZTo6Tm9u
ZSB9OwpAQCAtNzEsNiArODAsMjAgQEAgcHJpdmF0ZToKICAgICBPcHRpb25hbDxkb3VibGU+IG1f
bGFzdFJlcG9ydGVkUG9zaXRpb247CiAgICAgTW9ub3RvbmljVGltZSBtX3RpbWVBdExhc3RQb3Np
dGlvblVwZGF0ZTsKICAgICBIYXNoTWFwPE1lZGlhU2Vzc2lvbkFjdGlvbiwgUmVmUHRyPE1lZGlh
U2Vzc2lvbkFjdGlvbkhhbmRsZXI+LCBXVEY6OkludEhhc2g8TWVkaWFTZXNzaW9uQWN0aW9uPiwg
V1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxNZWRpYVNlc3Npb25BY3Rpb24+PiBtX2FjdGlvbkhh
bmRsZXJzOworICAgIFJlZlB0cjxjb25zdCBMb2dnZXI+IG1fbG9nZ2VyOworICAgIGNvbnN0IHZv
aWQqIG1fbG9nSWRlbnRpZmllcjsKK307CisKK30KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBs
YXRlPD4gc3RydWN0IExvZ0FyZ3VtZW50PFdlYkNvcmU6Ok1lZGlhU2Vzc2lvblBsYXliYWNrU3Rh
dGU+IHsKKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvblBs
YXliYWNrU3RhdGUgc3RhdGUpIHsgcmV0dXJuIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKHN0
YXRlKTsgfQorfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6TWVk
aWFTZXNzaW9uQWN0aW9uPiB7CisgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhXZWJDb3JlOjpN
ZWRpYVNlc3Npb25BY3Rpb24gYWN0aW9uKSB7IHJldHVybiBjb252ZXJ0RW51bWVyYXRpb25Ub1N0
cmluZyhhY3Rpb24pOyB9CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3NwaS9tYWMvTWVkaWFSZW1vdGVTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3Bp
L21hYy9NZWRpYVJlbW90ZVNQSS5oCmluZGV4IDY1MTVjMGQ3NmYwNWRhMDA2MTgwYTJhNTc1MTNl
ZjJlNjQ1YzgxZTQuLmU4ODVhYmJiODljY2JhZDVhOTgyMTZiZjAyOWU4MWU5ZjRhYjJkZTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9NZWRpYVJlbW90ZVNQSS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9NZWRpYVJlbW90ZVNQSS5oCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMy
LDYgKzMyLDEyIEBACiAKICNlbHNlCiAKK0BpbnRlcmZhY2UgTVJDb21tYW5kSW5mbyA6IE5TT2Jq
ZWN0CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE1STWVkaWFSZW1vdGVDb21tYW5k
IGNvbW1hbmQ7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGdldHRlcj1pc0VuYWJs
ZWQpIEJPT0wgZW5hYmxlZDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgbnVsbGFi
bGUsIGNvcHkpIE5TRGljdGlvbmFyeSAqb3B0aW9uczsKK0BlbmQKKwogZW51bSB7CiAgICAgTVJN
ZWRpYVJlbW90ZUNvbW1hbmRQbGF5LAogICAgIE1STWVkaWFSZW1vdGVDb21tYW5kUGF1c2UsCkBA
IC05Miw2ICs5OCw4IEBAIGVudW0gewogdHlwZWRlZiB1aW50MzJfdCBNUk5vd1BsYXlpbmdDbGll
bnRWaXNpYmlsaXR5OwogCiB0eXBlZGVmIHVpbnQzMl90IE1STWVkaWFSZW1vdGVFcnJvcjsKK3R5
cGVkZWYgdWludDMyX3QgTVJTZW5kQ29tbWFuZEFwcE9wdGlvbnM7Cit0eXBlZGVmIHVpbnQzMl90
IE1SU2VuZENvbW1hbmRFcnJvcjsKIHR5cGVkZWYgc3RydWN0IF9NUk9yaWdpbiAqTVJPcmlnaW5S
ZWY7CiB0eXBlZGVmIHN0cnVjdCBfTVJNZWRpYVJlbW90ZUNvbW1hbmRJbmZvICpNUk1lZGlhUmVt
b3RlQ29tbWFuZEluZm9SZWY7CiB0eXBlZGVmIHZvaWQgKk1STm93UGxheWluZ0NsaWVudFJlZjsK
QEAgLTEwMyw4ICsxMTEsMTAgQEAgV1RGX0VYVEVSTl9DX0JFR0lOCiAKIHZvaWQqIE1STWVkaWFS
ZW1vdGVBZGRBc3luY0NvbW1hbmRIYW5kbGVyQmxvY2soTVJNZWRpYVJlbW90ZUFzeW5jQ29tbWFu
ZEhhbmRsZXJCbG9jayk7CiB2b2lkIE1STWVkaWFSZW1vdGVSZW1vdmVDb21tYW5kSGFuZGxlckJs
b2NrKHZvaWQgKm9ic2VydmVyKTsKLXZvaWQgTVJNZWRpYVJlbW90ZVNldFN1cHBvcnRlZENvbW1h
bmRzKENGQXJyYXlSZWYgY29tbWFuZHMsIE1ST3JpZ2luUmVmLCBkaXNwYXRjaF9xdWV1ZV90IHJl
cGx5USwgdm9pZCheY29tcGxldGlvbikoTVJNZWRpYVJlbW90ZUVycm9yIGVycikpOwordm9pZCBN
Uk1lZGlhUmVtb3RlU2V0U3VwcG9ydGVkQ29tbWFuZHMoQ0ZBcnJheVJlZiwgTVJPcmlnaW5SZWYs
IGRpc3BhdGNoX3F1ZXVlX3QsIHZvaWQoXmNvbXBsZXRpb24pKE1STWVkaWFSZW1vdGVFcnJvcikp
Owordm9pZCBNUk1lZGlhUmVtb3RlR2V0U3VwcG9ydGVkQ29tbWFuZHNGb3JPcmlnaW4oTVJPcmln
aW5SZWYsIGRpc3BhdGNoX3F1ZXVlX3QsIHZvaWQoXmNvbXBsZXRpb24pKENGQXJyYXlSZWYpKTsK
IHZvaWQgTVJNZWRpYVJlbW90ZVNldE5vd1BsYXlpbmdWaXNpYmlsaXR5KE1ST3JpZ2luUmVmLCBN
Uk5vd1BsYXlpbmdDbGllbnRWaXNpYmlsaXR5KTsKK0Jvb2xlYW4gTVJNZWRpYVJlbW90ZVNlbmRD
b21tYW5kVG9BcHAoTVJNZWRpYVJlbW90ZUNvbW1hbmQsIENGRGljdGlvbmFyeVJlZiwgTVJPcmln
aW5SZWYsIENGU3RyaW5nUmVmLCBNUlNlbmRDb21tYW5kQXBwT3B0aW9ucywgZGlzcGF0Y2hfcXVl
dWVfdCwgdm9pZCheY29tcGxldGlvbikoTVJTZW5kQ29tbWFuZEVycm9yLCBDRkFycmF5UmVmKSk7
CiAKICNwcmFnbWEgbWFyayAtIE1ST3JpZ2luCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwNTNiZDg3ZGE3Y2RhODQ1MWFmMTNl
ZGIzMWMxMzhhZjY2NDU5NWUyLi42Njk4OWEwN2FjNWQzN2E5M2RjMjRiZDNmNTMwOWIxODI0NGEw
YTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xMzksNiArMTM5LDEwIEBACiAJCTA3N0FGMTQzMThGNEIxQkIwMDAxRUQ2MSAv
KiBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzdBRjE0MTE4RjRCMUJCMDAwMUVENjEgLyogU2VyaWFs
aXplZFBsYXRmb3JtRGF0YUN1ZU1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTA3N0I2NDEzMUI5NEYxMkUwMDNFOUFENSAvKiBNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyTW9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDc3QjY0MTExQjk0RjEyRTAwM0U5QUQ1IC8qIE1lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJNb2NrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMDc3QjY0MTcxQjk1RjcwMzAwM0U5QUQ1IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRN
b2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzdC
NjQxNTFCOTVGNzAzMDAzRTlBRDUgLyogTWVkaWFQbGF5YmFja1RhcmdldE1vY2suaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwNzgyODk0ODI1QzIz
RkU1MDBBN0JBMDMgLyogTWVkaWFNZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0REREVBMkQyNTM4Q0UwNDAwQTEzMDBDIC8qIE1lZGlhTWV0
YWRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQkwNzgyODk0QTI1QzM2RkNGMDBBN0JBMDMgLyogTWVkaWFTZXNzaW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRERERUEyMzI1MzhDRDgwMDBBMTMw
MEMgLyogTWVkaWFTZXNzaW9uLmggKi87IH07CisJCTA3ODI4OTRCMjVDMzZGRUQwMEE3QkEwMyAv
KiBNZWRpYUltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRERERUEzMjI1MzhDRTM1MDBBMTMwMEMgLyogTWVkaWFJbWFnZS5oICovOyB9OworCQkw
NzgyODk0QzI1QzM3MDBCMDBBN0JBMDMgLyogTWVkaWFNZXRhZGF0YUluaXQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERERFQTMwMjUzOENFMUUwMEEx
MzAwQyAvKiBNZWRpYU1ldGFkYXRhSW5pdC5oICovOyB9OwogCQkwNzgzMjI4NTE4MDEzRUQ4MDA5
OTlFMEMgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc4MzIyODMxODAxM0VEODAwOTk5RTBDIC8qIE1lZGlh
U3RyZWFtQXVkaW9Tb3VyY2UuaCAqLzsgfTsKIAkJMDc4NDYzNDMxNDVCMTUxQTAwQTU4REYxIC8q
IEpTVHJhY2tFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDc4NDYzNDExNDVCMTUxQTAwQTU4REYxIC8qIEpTVHJhY2tFdmVudC5oICovOyB9Owog
CQkwNzg0NjM4NTE0NUIxQjhFMDBBNThERjEgLyogSlNUcmFja0N1c3RvbS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc4NDYzODQxNDVCMUI4RTAwQTU4
REYxIC8qIEpTVHJhY2tDdXN0b20uaCAqLzsgfTsKQEAgLTMzNjk0LDEwICszMzY5OCwxMyBAQAog
CQkJCUU0NDYxM0FEMENENjMzMTAwMEZBREE3NSAvKiBNZWRpYUVycm9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0RTE5NTkyMjBBMzlEQUJBMDAyMjBGRTUgLyogTWVkaWFGZWF0dXJlTmFtZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCTA3QTZEMUVDMTQ5MTEzNzcwMDA1MUQwQyAvKiBNZWRpYUZyYWdt
ZW50VVJJUGFyc2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzgyODk0QjI1QzM2RkVEMDBBN0JB
MDMgLyogTWVkaWFJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RGNEI3MUExRTAxRDNEMDAw
RTIzNUEyIC8qIE1lZGlhS2V5U2Vzc2lvblR5cGUuaWRsIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RG
NEI3MjgxRTAzQzU3MzAwRTIzNUEyIC8qIE1lZGlhS2V5c1JlcXVpcmVtZW50LmlkbCBpbiBIZWFk
ZXJzICovLAogCQkJCUNERjRCNzE4MUUwMUNCOTEwMEUyMzVBMiAvKiBNZWRpYUtleXNSZXN0cmlj
dGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RUE4MDBFMEExOTUxNkUwMEE4RUY1RiAvKiBN
ZWRpYUxpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3ODI4OTQ4MjVDMjNGRTUwMEE3QkEwMyAv
KiBNZWRpYU1ldGFkYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzgyODk0QzI1QzM3MDBCMDBB
N0JBMDMgLyogTWVkaWFNZXRhZGF0YUluaXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTVFQkI4OTMx
MUM3Nzc3RkYwMEM2NUQ0MSAvKiBNZWRpYVBheWxvYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3
RTNERkQxMUE5RTc4NjUwMDc2NENBOCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwNzkyMTY1NTFBQTU2MEFBMDBBM0MwNDkgLyogTWVkaWFQbGF5YmFja1Rhcmdl
dENsaWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMzczOCw2ICszMzc0NSw3IEBACiAJCQkJMUIx
MjREOEQxRDM4MEI3MDAwRUNERkIwIC8qIE1lZGlhU2FtcGxlQVZGT2JqQy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQ0RCRUFFQUQxOUQ5MkI2QzAwQkVCQTg4IC8qIE1lZGlhU2VsZWN0aW9uR3JvdXBB
VkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTdEMjc1RTFFQUM1Nzk4MDBCRjAxRTcgLyog
TWVkaWFTZWxlY3Rpb25PcHRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTA3ODI4OTRBMjVDMzZG
Q0YwMEE3QkEwMyAvKiBNZWRpYVNlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNkVDQUU1
MjVCNThDQzQwMEIzNERBNSAvKiBNZWRpYVNlc3Npb25Hcm91cElkZW50aWZpZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUNEQTk1OTNGMjQxMkJBRTAwMDkxMEVFRiAvKiBNZWRpYVNlc3Npb25IZWxw
ZXJJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNDQ2MEEyMjQxMjk5NDUwMDgxNEJFNyAvKiBN
ZWRpYVNlc3Npb25JZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDgyMDg5MTZhOTlkOTdlZTM5ODkwYzM4MTY0ZWFk
NDE3NDYyNDU4MmUuLmRjMjQ1ZmU2OGQzNGFjYWM1MWI2NzZhMjIwMzIwZmZkNjNmMjZiNjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc1MDIsNiArNzUw
Miw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21t
YW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vCiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElG
SUVSLCBjb21tYW5kKTsKIAogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIHJlbW90ZUNvbnRyb2xV
c2VyR2VzdHVyZShQcm9jZXNzaW5nVXNlckdlc3R1cmUsICZkb2N1bWVudCgpKTsKKyAgICBkb3Vi
bGUgb2Zmc2V0ID0gMTA7CiAgICAgc3dpdGNoIChjb21tYW5kKSB7CiAgICAgY2FzZSBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6UGxheUNvbW1hbmQ6CiAgICAgICAgIHBsYXkoKTsKQEAgLTc1MjMsNiAr
NzUyNCwxNiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZFJlY2VpdmVSZW1vdGVDb250cm9s
Q29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtbwogICAgIGNhc2UgUGxhdGZvcm1NZWRp
YVNlc3Npb246OkVuZFNlZWtpbmdGb3J3YXJkQ29tbWFuZDoKICAgICAgICAgZW5kU2Nhbm5pbmco
KTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEZv
cndhcmRDb21tYW5kOgorICAgICAgICBpZiAoYXJndW1lbnQpCisgICAgICAgICAgICBvZmZzZXQg
PSBhcmd1bWVudC0+YXNEb3VibGU7CisgICAgICAgIGhhbmRsZVNlZWtUb1BsYXliYWNrUG9zaXRp
b24ob2Zmc2V0KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6U2tpcEJhY2t3YXJkQ29tbWFuZDoKKyAgICAgICAgaWYgKGFyZ3VtZW50KQorICAgICAgICAg
ICAgb2Zmc2V0ID0gYXJndW1lbnQtPmFzRG91YmxlOworICAgICAgICBoYW5kbGVTZWVrVG9QbGF5
YmFja1Bvc2l0aW9uKDAgLSBvZmZzZXQpOworICAgICAgICBicmVhazsKICAgICBjYXNlIFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpTZWVrVG9QbGF5YmFja1Bvc2l0aW9uQ29tbWFuZDoKICAgICAgICAg
QVNTRVJUKGFyZ3VtZW50KTsKICAgICAgICAgaWYgKGFyZ3VtZW50KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKaW5kZXggNTg3ODJiY2EyOGJhMjdkOTVmNDFk
OWFkZGMzN2M5NDhlMjU1N2M5Zi4uMDY1YzRjN2Y4ZDkxOTQxMmQzNmQ1Mjk2MGZjYTE4NTJiZWI0
M2IzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU0
LDYgKzU0LDEyIEBACiAjaW5jbHVkZSAiU291cmNlQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgogCisjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCisjaW5jbHVk
ZSAiTWVkaWFNZXRhZGF0YS5oIgorI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgorI2luY2x1ZGUg
Ik5hdmlnYXRvck1lZGlhU2Vzc2lvbi5oIgorI2VuZGlmCisKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogI2luY2x1ZGUgIkF1ZGlvU2Vzc2lvbi5oIgogI2luY2x1ZGUgIlJ1bnRpbWVBcHBsaWNh
dGlvbkNoZWNrcy5oIgpAQCAtMTAyMSw2ICsxMDI3LDcwIEBAIGJvb2wgTWVkaWFFbGVtZW50U2Vz
c2lvbjo6YWxsb3dzUGxheWJhY2tDb250cm9sc0ZvckF1dG9wbGF5aW5nQXVkaW8oKSBjb25zdAog
ICAgIHJldHVybiBwYWdlICYmIHBhZ2UtPmFsbG93c1BsYXliYWNrQ29udHJvbHNGb3JBdXRvcGxh
eWluZ0F1ZGlvKCk7CiB9CiAKKyNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKK3ZvaWQgTWVkaWFF
bGVtZW50U2Vzc2lvbjo6ZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFJlbW90ZUNvbnRy
b2xDb21tYW5kVHlwZSBjb21tYW5kVHlwZSwgY29uc3QgUmVtb3RlQ29tbWFuZEFyZ3VtZW50KiBh
cmd1bWVudCkKK3sKKyAgICBhdXRvKiB3aW5kb3cgPSBtX2VsZW1lbnQuZG9jdW1lbnQoKS5kb21X
aW5kb3coKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gd2luZG93ID8gJk5hdmlnYXRvck1lZGlhU2Vz
c2lvbjo6bWVkaWFTZXNzaW9uKHdpbmRvdy0+bmF2aWdhdG9yKCkpIDogbnVsbHB0cjsKKyAgICBp
ZiAoIXNlc3Npb24gfHwgIXNlc3Npb24tPmhhc0FjdGl2ZUFjdGlvbkhhbmRsZXJzKCkpIHsKKyAg
ICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFu
ZChjb21tYW5kVHlwZSwgYXJndW1lbnQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
TWVkaWFTZXNzaW9uQWN0aW9uRGV0YWlscyBhY3Rpb25EZXRhaWxzOworICAgIHN3aXRjaCAoY29t
bWFuZFR5cGUpIHsKKyAgICBjYXNlIE5vQ29tbWFuZDoKKyAgICAgICAgcmV0dXJuOworICAgIGNh
c2UgUGxheUNvbW1hbmQ6CisgICAgICAgIGFjdGlvbkRldGFpbHMuYWN0aW9uID0gTWVkaWFTZXNz
aW9uQWN0aW9uOjpQbGF5OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBhdXNlQ29tbWFuZDoK
KyAgICAgICAgYWN0aW9uRGV0YWlscy5hY3Rpb24gPSBNZWRpYVNlc3Npb25BY3Rpb246OlBhdXNl
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0b3BDb21tYW5kOgorICAgICAgICBhY3Rpb25E
ZXRhaWxzLmFjdGlvbiA9IE1lZGlhU2Vzc2lvbkFjdGlvbjo6U3RvcDsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBUb2dnbGVQbGF5UGF1c2VDb21tYW5kOgorICAgICAgICBhY3Rpb25EZXRhaWxz
LmFjdGlvbiA9IG1fZWxlbWVudC5wYXVzZWQoKSA/IE1lZGlhU2Vzc2lvbkFjdGlvbjo6UGxheSA6
IE1lZGlhU2Vzc2lvbkFjdGlvbjo6UGF1c2U7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2Vl
a1RvUGxheWJhY2tQb3NpdGlvbkNvbW1hbmQ6CisgICAgICAgIEFTU0VSVChhcmd1bWVudCk7Cisg
ICAgICAgIGlmICghYXJndW1lbnQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGFjdGlv
bkRldGFpbHMuYWN0aW9uID0gTWVkaWFTZXNzaW9uQWN0aW9uOjpTZWVrdG87CisgICAgICAgIGFj
dGlvbkRldGFpbHMuc2Vla1RpbWUgPSBhcmd1bWVudC0+YXNEb3VibGU7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgU2tpcEZvcndhcmRDb21tYW5kOgorICAgICAgICBpZiAoYXJndW1lbnQpCisg
ICAgICAgICAgICBhY3Rpb25EZXRhaWxzLnNlZWtPZmZzZXQgPSBhcmd1bWVudC0+YXNEb3VibGU7
CisgICAgICAgIGFjdGlvbkRldGFpbHMuYWN0aW9uID0gTWVkaWFTZXNzaW9uQWN0aW9uOjpTZWVr
Zm9yd2FyZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTa2lwQmFja3dhcmRDb21tYW5kOgor
ICAgICAgICBpZiAoYXJndW1lbnQpCisgICAgICAgICAgICBhY3Rpb25EZXRhaWxzLnNlZWtPZmZz
ZXQgPSBhcmd1bWVudC0+YXNEb3VibGU7CisgICAgICAgIGFjdGlvbkRldGFpbHMuYWN0aW9uID0g
TWVkaWFTZXNzaW9uQWN0aW9uOjpTZWVrYmFja3dhcmQ7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgTmV4dFRyYWNrQ29tbWFuZDoKKyAgICAgICAgYWN0aW9uRGV0YWlscy5hY3Rpb24gPSBNZWRp
YVNlc3Npb25BY3Rpb246Ok5leHR0cmFjazsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQcmV2
aW91c1RyYWNrQ29tbWFuZDoKKyAgICAgICAgYWN0aW9uRGV0YWlscy5hY3Rpb24gPSBNZWRpYVNl
c3Npb25BY3Rpb246OlByZXZpb3VzdHJhY2s7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQmVn
aW5TZWVraW5nQmFja3dhcmRDb21tYW5kOgorICAgIGNhc2UgRW5kU2Vla2luZ0JhY2t3YXJkQ29t
bWFuZDoKKyAgICBjYXNlIEJlZ2luU2Vla2luZ0ZvcndhcmRDb21tYW5kOgorICAgIGNhc2UgRW5k
U2Vla2luZ0ZvcndhcmRDb21tYW5kOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgIAorICAgIGlmIChhdXRvIGhhbmRsZXIgPSBzZXNzaW9u
LT5oYW5kbGVyRm9yQWN0aW9uKGFjdGlvbkRldGFpbHMuYWN0aW9uKSkKKyAgICAgICAgaGFuZGxl
ci0+aGFuZGxlRXZlbnQoYWN0aW9uRGV0YWlscyk7CisgICAgZWxzZQorICAgICAgICBBTFdBWVNf
TE9HKExPR0lERU5USUZJRVIsICJJZ25vcmluZyBjb21tYW5kLCBubyBhY3Rpb24gaGFuZGxlciBy
ZWdpc3RlcmVkIGZvciAiLCBhY3Rpb25EZXRhaWxzLmFjdGlvbik7Cit9CisjZW5kaWYKKwogT3B0
aW9uYWw8Tm93UGxheWluZ0luZm8+IE1lZGlhRWxlbWVudFNlc3Npb246Om5vd1BsYXlpbmdJbmZv
KCkgY29uc3QKIHsKICAgICBhdXRvKiBwYWdlID0gbV9lbGVtZW50LmRvY3VtZW50KCkucGFnZSgp
OwpAQCAtMTAzMiw3ICsxMTAyLDE5IEBAIE9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvPiBNZWRpYUVs
ZW1lbnRTZXNzaW9uOjpub3dQbGF5aW5nSW5mbygpIGNvbnN0CiAgICAgaWYgKCFzdGQ6OmlzZmlu
aXRlKGN1cnJlbnRUaW1lKSB8fCAhc3VwcG9ydHNTZWVraW5nKQogICAgICAgICBjdXJyZW50VGlt
ZSA9IE1lZGlhUGxheWVyOjppbnZhbGlkVGltZSgpOwogCi0gICAgcmV0dXJuIE5vd1BsYXlpbmdJ
bmZvIHsgbV9lbGVtZW50Lm1lZGlhU2Vzc2lvblRpdGxlKCksIG1fZWxlbWVudC5zb3VyY2VBcHBs
aWNhdGlvbklkZW50aWZpZXIoKSwgZHVyYXRpb24sIGN1cnJlbnRUaW1lLCBzdXBwb3J0c1NlZWtp
bmcsIG1fZWxlbWVudC5tZWRpYVNlc3Npb25VbmlxdWVJZGVudGlmaWVyKCksIGlzUGxheWluZywg
YWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSB9OworICAgIFN0cmluZyB0aXRsZTsK
KyAgICBTdHJpbmcgYXJ0aXN0OworICAgIFN0cmluZyBhbGJ1bTsKKyAgICBhdXRvKiB3aW5kb3cg
PSBtX2VsZW1lbnQuZG9jdW1lbnQoKS5kb21XaW5kb3coKTsKKyAgICBhdXRvKiBzZXNzaW9uTWV0
YWRhdGEgPSB3aW5kb3cgPyBOYXZpZ2F0b3JNZWRpYVNlc3Npb246Om1lZGlhU2Vzc2lvbih3aW5k
b3ctPm5hdmlnYXRvcigpKS5tZXRhZGF0YSgpIDogbnVsbHB0cjsKKyAgICBpZiAoc2Vzc2lvbk1l
dGFkYXRhKSB7CisgICAgICAgIHRpdGxlID0gc2Vzc2lvbk1ldGFkYXRhLT50aXRsZSgpOworICAg
ICAgICBhcnRpc3QgPSBzZXNzaW9uTWV0YWRhdGEtPmFydGlzdCgpOworICAgICAgICBhbGJ1bSA9
IHNlc3Npb25NZXRhZGF0YS0+YWxidW0oKTsKKyAgICB9IGVsc2UKKyAgICAgICAgdGl0bGUgPSBt
X2VsZW1lbnQubWVkaWFTZXNzaW9uVGl0bGUoKTsKKworICAgIHJldHVybiBOb3dQbGF5aW5nSW5m
byB7IFdURk1vdmUodGl0bGUpLCBXVEZNb3ZlKGFydGlzdCksIFdURk1vdmUoYWxidW0pLCBtX2Vs
ZW1lbnQuc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKCksIGR1cmF0aW9uLCBjdXJyZW50VGlt
ZSwgc3VwcG9ydHNTZWVraW5nLCBtX2VsZW1lbnQubWVkaWFTZXNzaW9uVW5pcXVlSWRlbnRpZmll
cigpLCBpc1BsYXlpbmcsIGFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHkgfTsKIH0K
IAogdm9pZCBNZWRpYUVsZW1lbnRTZXNzaW9uOjp1cGRhdGVNZWRpYVVzYWdlSWZDaGFuZ2VkKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmgKaW5kZXggYzE2OGM2MDIz
YjM5NmQxYzM1NzY1ODE4ZjU1Y2ExYWJkM2JhNGM1OC4uMjhlMWVlNjY0MzcxY2U3YzJiYzcwYWMz
ODFiMjAyZWZmYTVhOWYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVs
ZW1lbnRTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNz
aW9uLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0xNjgsNiArMTY4LDEwIEBAIHB1YmxpYzoKICAgICBjb25zdCBjaGFyKiBsb2dD
bGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiTWVkaWFFbGVtZW50U2Vzc2lvbiI7IH0K
ICNlbmRpZgogCisjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCisgICAgdm9pZCBkaWRSZWNlaXZl
UmVtb3RlQ29udHJvbENvbW1hbmQoUmVtb3RlQ29udHJvbENvbW1hbmRUeXBlLCBjb25zdCBSZW1v
dGVDb21tYW5kQXJndW1lbnQqID0gbnVsbHB0cikgZmluYWw7CisjZW5kaWYKKwogcHJpdmF0ZToK
IAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWVDbGllbnQuaAppbmRleCA1ZmQ0YjY1MWFkYjljODQ3MWUxMDI2NWJkOTdjZmI4MGI3Mjc3OTYy
Li4xZDcyNjQwMzIwMjBhYmMzZTFlODA5OGVkZTc4N2I1ZGRmYmFjNmFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2hyb21lQ2xpZW50LmgKQEAgLTEwMSw3ICsxMDEsNiBAQCBjbGFzcyBIVE1MTWVkaWFFbGVt
ZW50OwogY2xhc3MgSFRNTFZpZGVvRWxlbWVudDsKIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CiBjbGFz
cyBJbnRSZWN0OwotY2xhc3MgTWVkaWFTZXNzaW9uTWV0YWRhdGE7CiBjbGFzcyBOYXZpZ2F0aW9u
QWN0aW9uOwogY2xhc3MgTm9kZTsKIGNsYXNzIFBhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmNwcAppbmRleCBhZjM0ZDUwZDNhNWE4YTY1
ZTViYzk1ZTg3NzUzMWE3YWJmNDQ3OTY3Li41YjJhOTFmMmM1YjQ4MGZmZjVjZDg0MjI5NjMxMjI1
ODQ4NTE1Y2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZW1vdGVDb21t
YW5kTGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlbW90ZUNvbW1h
bmRMaXN0ZW5lci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzcsNCArMzcsMjUgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNvbW1h
bmRMaXN0ZW5lcj4gUmVtb3RlQ29tbWFuZExpc3RlbmVyOjpjcmVhdGUoUmVtb3RlQ29tbWEKIAog
I2VuZGlmCiAKK3ZvaWQgUmVtb3RlQ29tbWFuZExpc3RlbmVyOjpzY2hlZHVsZVN1cHBvcnRlZENv
bW1hbmRzVXBkYXRlKCkKK3sKKyAgICBpZiAoIW1fdXBkYXRlQ29tbWFuZHNUYXNrLmhhc1BlbmRp
bmdUYXNrKCkpIHsKKyAgICAgICAgbV91cGRhdGVDb21tYW5kc1Rhc2suc2NoZWR1bGVUYXNrKFt0
aGlzXSAoKSAgeworICAgICAgICAgICAgdXBkYXRlU3VwcG9ydGVkQ29tbWFuZHMoKTsKKyAgICAg
ICAgfSk7CisgICAgfQorfQorCit2b2lkIFJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6YWRkU3VwcG9y
dGVkQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBl
IGNvbW1hbmQpCit7CisgICAgbV9yZWdpc3RlcmVkQ29tbWFuZHMuYWRkKGNvbW1hbmQpOworICAg
IHNjaGVkdWxlU3VwcG9ydGVkQ29tbWFuZHNVcGRhdGUoKTsKK30KKwordm9pZCBSZW1vdGVDb21t
YW5kTGlzdGVuZXI6OnJlbW92ZVN1cHBvcnRlZENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246
OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21tYW5kKQoreworICAgIG1fcmVnaXN0ZXJlZENv
bW1hbmRzLnJlbW92ZShjb21tYW5kKTsKKyAgICBzY2hlZHVsZVN1cHBvcnRlZENvbW1hbmRzVXBk
YXRlKCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlbW90
ZUNvbW1hbmRMaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFu
ZExpc3RlbmVyLmgKaW5kZXggMmI0MzRhZWY2ZTc1ZWEzNTBjODg4NWYwZWVmNzBjNTk2ZTAxMWU5
Ny4uNjdhY2JhYTg2NGQxMTZiZjAyMzExYjE0MzQ4ODAzNGJhMDZjOTZiZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNiArMjYsNyBA
QAogI2lmbmRlZiBSZW1vdGVDb21tYW5kTGlzdGVuZXJfaAogI2RlZmluZSBSZW1vdGVDb21tYW5k
TGlzdGVuZXJfaAogCisjaW5jbHVkZSAiRGVmZXJyYWJsZVRhc2suaCIKICNpbmNsdWRlICJQbGF0
Zm9ybU1lZGlhU2Vzc2lvbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NSwxMiArNDYs
MjAgQEAgcHVibGljOgogICAgIFJlbW90ZUNvbW1hbmRMaXN0ZW5lcihSZW1vdGVDb21tYW5kTGlz
dGVuZXJDbGllbnQmIGNsaWVudCkgOiBtX2NsaWVudChjbGllbnQpIHsgfQogICAgIHZpcnR1YWwg
flJlbW90ZUNvbW1hbmRMaXN0ZW5lcigpID0gZGVmYXVsdDsKIAorICAgIHZvaWQgYWRkU3VwcG9y
dGVkQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBl
KTsKKyAgICB2b2lkIHJlbW92ZVN1cHBvcnRlZENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246
OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSk7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVN1cHBv
cnRlZENvbW1hbmRzKCkgeyB9CisgICAgdm9pZCBzY2hlZHVsZVN1cHBvcnRlZENvbW1hbmRzVXBk
YXRlKCk7CiAKICAgICBSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQmIGNsaWVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fY2xpZW50OyB9CiAKIHByb3RlY3RlZDoKICAgICBSZW1vdGVDb21tYW5kTGlz
dGVuZXJDbGllbnQmIG1fY2xpZW50OworCisgICAgdXNpbmcgUmVtb3RlQ29tbWFuZHNTZXQgPSBI
YXNoU2V0PFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIFdU
Rjo6SW50SGFzaDxQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBl
PiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3Rl
Q29udHJvbENvbW1hbmRUeXBlPj47CisgICAgUmVtb3RlQ29tbWFuZHNTZXQgbV9yZWdpc3RlcmVk
Q29tbWFuZHM7CisKKyAgICBEZWZlcnJhYmxlVGFzazxUaW1lcj4gbV91cGRhdGVDb21tYW5kc1Rh
c2s7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9O
b3dQbGF5aW5nSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWlu
Z0luZm8uaAppbmRleCA2N2U5MWUyMmRmOGYwMGRiNDQ1ODJlOTgwZmI2MjJhOGEwNzg5MGU1Li43
NTQ4MjdhYTYwZjI5NTA3ZGUzMTdhYmRjNzcyN2YxYTE4ZjRkYmYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmgKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsNiArMzIsOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBOb3dQbGF5aW5nSW5mbyB7CiAgICAgU3RyaW5nIHRp
dGxlOworICAgIFN0cmluZyBhcnRpc3Q7CisgICAgU3RyaW5nIGFsYnVtOwogICAgIFN0cmluZyBz
b3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXI7CiAgICAgZG91YmxlIGR1cmF0aW9uIHsgMCB9Owog
ICAgIGRvdWJsZSBjdXJyZW50VGltZSB7IDAgfTsKQEAgLTU1LDYgKzU3LDE0IEBAIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IGlubGluZSBPcHRpb25hbDxOb3dQbGF5aW5nSW5mbz4gTm93UGxheWlu
Z0luZm86OmRlY29kZShECiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0aXRsZSkpCiAgICAgICAg
IHJldHVybiB7IH07CiAKKyAgICBTdHJpbmcgYXJ0aXN0OworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoYXJ0aXN0KSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIFN0cmluZyBhbGJ1bTsKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGFsYnVtKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKwogICAg
IFN0cmluZyBzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXI7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIpKQogICAgICAgICByZXR1cm4geyB9OwpA
QCAtODMsNyArOTMsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUgT3B0aW9uYWw8
Tm93UGxheWluZ0luZm8+IE5vd1BsYXlpbmdJbmZvOjpkZWNvZGUoRAogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoYWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSkpCiAgICAgICAgIHJl
dHVybiB7IH07CiAKLSAgICByZXR1cm4gTm93UGxheWluZ0luZm8geyBXVEZNb3ZlKHRpdGxlKSwg
V1RGTW92ZShzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIpLCBkdXJhdGlvbiwgY3VycmVudFRp
bWUsIHN1cHBvcnRzU2Vla2luZywgdW5pcXVlSWRlbnRpZmllciwgaXNQbGF5aW5nLCBhbGxvd3NO
b3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5IH07CisgICAgcmV0dXJuIE5vd1BsYXlpbmdJbmZv
IHsgV1RGTW92ZSh0aXRsZSksIFdURk1vdmUoYXJ0aXN0KSwgV1RGTW92ZShhbGJ1bSksIFdURk1v
dmUoc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKSwgZHVyYXRpb24sIGN1cnJlbnRUaW1lLCBz
dXBwb3J0c1NlZWtpbmcsIHVuaXF1ZUlkZW50aWZpZXIsIGlzUGxheWluZywgYWxsb3dzTm93UGxh
eWluZ0NvbnRyb2xzVmlzaWJpbGl0eSB9OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vz
c2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vz
c2lvbi5jcHAKaW5kZXggOTI2OWFkMzkzZTYyMDU5MWM4MGI0MjE4ZjU5ODQ0NTlmZWY5ZmJhMy4u
NDM3YzZkMGE1MTY2NDU5MGE0NjliYWQxYmI1ODIyYzE5ODJlMTk0ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTkzLDYgKzkzLDEwIEBAIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlCiAgICAgICAgIE1BS0Vf
U1RBVElDX1NUUklOR19JTVBMKCJCZWdpblNlZWtpbmdGb3J3YXJkQ29tbWFuZCIpLAogICAgICAg
ICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiRW5kU2Vla2luZ0ZvcndhcmRDb21tYW5kIiksCiAg
ICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJTZWVrVG9QbGF5YmFja1Bvc2l0aW9uQ29t
bWFuZCIpLAorICAgICAgICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiU2tpcEZvcndhcmRDb21t
YW5kIiksCisgICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJTa2lwQmFja3dhcmRDb21t
YW5kIiksCisgICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJOZXh0VHJhY2tDb21tYW5k
IiksCisgICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJQcmV2aW91c1RyYWNrQ29tbWFu
ZCIpLAogICAgIH07CiAgICAgc3RhdGljX2Fzc2VydCghc3RhdGljX2Nhc3Q8c2l6ZV90PihQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9Db21tYW5kKSwgIlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb0Nv
bW1hbmQgaXMgbm90IDAgYXMgZXhwZWN0ZWQiKTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19j
YXN0PHNpemVfdD4oUGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXlDb21tYW5kKSA9PSAxLCAiUGxh
dGZvcm1NZWRpYVNlc3Npb246OlBsYXlDb21tYW5kIGlzIG5vdCAxIGFzIGV4cGVjdGVkIik7CkBA
IC0xMDQsNiArMTA4LDEwIEBAIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlCiAgICAgc3RhdGljX2Fz
c2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpCZWdpblNlZWtp
bmdGb3J3YXJkQ29tbWFuZCkgPT0gNywgIlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpCZWdpblNlZWtp
bmdGb3J3YXJkQ29tbWFuZCBpcyBub3QgNyBhcyBleHBlY3RlZCIpOwogICAgIHN0YXRpY19hc3Nl
cnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW5kU2Vla2luZ0Zv
cndhcmRDb21tYW5kKSA9PSA4LCAiUGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZFNlZWtpbmdGb3J3
YXJkQ29tbWFuZCBpcyBub3QgOCBhcyBleHBlY3RlZCIpOwogICAgIHN0YXRpY19hc3NlcnQoc3Rh
dGljX2Nhc3Q8c2l6ZV90PihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2Vla1RvUGxheWJhY2tQb3Np
dGlvbkNvbW1hbmQpID09IDksICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2Vla1RvUGxheWJhY2tQ
b3NpdGlvbkNvbW1hbmQgaXMgbm90IDkgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0
KHN0YXRpY19jYXN0PHNpemVfdD4oUGxhdGZvcm1NZWRpYVNlc3Npb246OlNraXBGb3J3YXJkQ29t
bWFuZCkgPT0gMTAsICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEZvcndhcmRDb21tYW5kIGlz
IG5vdCAxMCBhcyBleHBlY3RlZCIpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6
ZV90PihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEJhY2t3YXJkQ29tbWFuZCkgPT0gMTEsICJQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEJhY2t3YXJkQ29tbWFuZCBpcyBub3QgMTEgYXMgZXhw
ZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oUGxhdGZvcm1N
ZWRpYVNlc3Npb246Ok5leHRUcmFja0NvbW1hbmQpID09IDEyLCAiUGxhdGZvcm1NZWRpYVNlc3Np
b246Ok5leHRUcmFja0NvbW1hbmQgaXMgbm90IDEyIGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGlj
X2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQcmV2aW91
c1RyYWNrQ29tbWFuZCkgPT0gMTMsICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UHJldmlvdXNUcmFj
a0NvbW1hbmQgaXMgbm90IDEzIGFzIGV4cGVjdGVkIik7CiAgICAgQVNTRVJUKHN0YXRpY19jYXN0
PHNpemVfdD4oY29tbWFuZCkgPCBXVEZfQVJSQVlfTEVOR1RIKHZhbHVlcykpOwogICAgIHJldHVy
biB2YWx1ZXNbc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb21tYW5kKV07CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaAppbmRleCBj
OTgxMjEzZDVlOTA3NmU0MmViOTBkYjRmM2ExMTU2YjUyZjRiNjI2Li5kOTUyZmE5NWIzZjI3Mzcw
ZTYwYjRjNjkxMmU5NTFhNWQ2OGQwZGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzAsOSArMTMwLDEzIEBA
IHB1YmxpYzoKICAgICAgICAgQmVnaW5TZWVraW5nRm9yd2FyZENvbW1hbmQsCiAgICAgICAgIEVu
ZFNlZWtpbmdGb3J3YXJkQ29tbWFuZCwKICAgICAgICAgU2Vla1RvUGxheWJhY2tQb3NpdGlvbkNv
bW1hbmQsCisgICAgICAgIFNraXBGb3J3YXJkQ29tbWFuZCwKKyAgICAgICAgU2tpcEJhY2t3YXJk
Q29tbWFuZCwKKyAgICAgICAgTmV4dFRyYWNrQ29tbWFuZCwKKyAgICAgICAgUHJldmlvdXNUcmFj
a0NvbW1hbmQsCiAgICAgfTsKICAgICBib29sIGNhblJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFu
ZHMoKSBjb25zdDsKLSAgICB2b2lkIGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChSZW1v
dGVDb250cm9sQ29tbWFuZFR5cGUsIGNvbnN0IFJlbW90ZUNvbW1hbmRBcmd1bWVudCogYXJndW1l
bnQgPSBudWxscHRyKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xD
b21tYW5kKFJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgY29uc3QgUmVtb3RlQ29tbWFuZEFyZ3Vt
ZW50KiA9IG51bGxwdHIpOwogICAgIGJvb2wgc3VwcG9ydHNTZWVraW5nKCkgY29uc3Q7CiAKICAg
ICBlbnVtIERpc3BsYXlUeXBlIDogdWludDhfdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oCmluZGV4
IDFmY2IzMzQyNGYwYjU1ZmQyMjA5YjYzNGNlZGRlZTgzOWM0ZDdlZDYuLjIzZGQ5OWM2ZGVmMmZm
NGRhZWY4N2EwNTA5OGI3NzVhODA3ZGNhMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MTUyLDYgKzE1Miw5IEBAIHB1YmxpYzoKICAgICBib29sIGlzSW50ZXJydXB0ZWQoKSBjb25zdCB7
IHJldHVybiBtX2ludGVycnVwdGVkOyB9CiAgICAgYm9vbCBoYXNOb1Nlc3Npb24oKSBjb25zdDsK
IAorICAgIHZpcnR1YWwgdm9pZCBhZGRTdXBwb3J0ZWRDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUpIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlU3VwcG9ydGVkQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENv
bW1hbmRUeXBlKSB7IH07CisKIHByb3RlY3RlZDoKICAgICBmcmllbmQgY2xhc3MgUGxhdGZvcm1N
ZWRpYVNlc3Npb247CiAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5h
Z2VyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vz
c2lvbk1hbmFnZXJDb2NvYS5oCmluZGV4IDQxYmEyZDUwYzhhYTZhYWJhOTk2Mjc1OTVlZTA0MmRl
NDZiNzJhMmUuLmQ5ZTM3YWE4MzdkNjU4YTk3MmU2YmI0MzI2NmM2Y2RkNjBkZmE5NzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1h
bmFnZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01l
ZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg0LDYgKzg0LDkgQEAgcHJvdGVjdGVkOgogCiAgICAg
R2VuZXJpY1Rhc2tRdWV1ZTxUaW1lcj4mIHRhc2tRdWV1ZSgpIHsgcmV0dXJuIG1fdGFza1F1ZXVl
OyB9CiAKKyAgICB2b2lkIGFkZFN1cHBvcnRlZENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246
OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSkgZmluYWw7CisgICAgdm9pZCByZW1vdmVTdXBwb3J0
ZWRDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUp
IGZpbmFsOworCiBwcml2YXRlOgogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGNvbnN0
IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJNZWRpYVNlc3Np
b25NYW5hZ2VyQ29jb2EiOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KaW5kZXggMDZm
ZmZlNzA0NDZlODFiYzExYmVlNmUzZTlkM2E4NjZiZjkyNzdjNy4uZDM0ZmM5MGQ3YWE4YjY0MDgw
NzlhMzE0ODhhYjAyZjgwYjdmMjg5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTE1Myw2ICsxNTMsOSBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6cHJlcGFy
ZVRvU2VuZFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KCkKIHZvaWQgTWVkaWFTZXNzaW9uTWFu
YWdlckNvY29hOjpzY2hlZHVsZVNlc3Npb25TdGF0dXNVcGRhdGUoKQogewogICAgIG1fdGFza1F1
ZXVlLmVucXVldWVUYXNrKFt0aGlzXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKG1fcmVtb3Rl
Q29tbWFuZExpc3RlbmVyKQorICAgICAgICAgICAgbV9yZW1vdGVDb21tYW5kTGlzdGVuZXItPnVw
ZGF0ZVN1cHBvcnRlZENvbW1hbmRzKCk7CisKICAgICAgICAgdXBkYXRlTm93UGxheWluZ0luZm8o
KTsKIAogICAgICAgICBmb3JFYWNoU2Vzc2lvbihbXSAoYXV0byYgc2Vzc2lvbikgewpAQCAtMjMy
LDEwICsyMzUsMjMgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OmNsaWVudENoYXJh
Y3RlcmlzdGljc0NoYW5nZWQoUGxhdGZvcm1NZWRpYVNlc3Npb24KIAogdm9pZCBNZWRpYVNlc3Np
b25NYW5hZ2VyQ29jb2E6OnNlc3Npb25DYW5Qcm9kdWNlQXVkaW9DaGFuZ2VkKCkKIHsKKyAgICBB
TFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwogICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdl
cjo6c2Vzc2lvbkNhblByb2R1Y2VBdWRpb0NoYW5nZWQoKTsKICAgICBzY2hlZHVsZVNlc3Npb25T
dGF0dXNVcGRhdGUoKTsKIH0KIAordm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OmFkZFN1
cHBvcnRlZENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5k
VHlwZSBjb21tYW5kKQoreworICAgIGlmIChtX3JlbW90ZUNvbW1hbmRMaXN0ZW5lcikKKyAgICAg
ICAgbV9yZW1vdGVDb21tYW5kTGlzdGVuZXItPmFkZFN1cHBvcnRlZENvbW1hbmQoY29tbWFuZCk7
Cit9CisKK3ZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpyZW1vdmVTdXBwb3J0ZWRDb21t
YW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgY29tbWFu
ZCkKK3sKKyAgICBpZiAobV9yZW1vdGVDb21tYW5kTGlzdGVuZXIpCisgICAgICAgIG1fcmVtb3Rl
Q29tbWFuZExpc3RlbmVyLT5yZW1vdmVTdXBwb3J0ZWRDb21tYW5kKGNvbW1hbmQpOworfQorCiB2
b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6Y2xlYXJOb3dQbGF5aW5nSW5mbygpCiB7CiAg
ICAgaWYgKGNhbkxvYWRfTWVkaWFSZW1vdGVfTVJNZWRpYVJlbW90ZVNldE5vd1BsYXlpbmdWaXNp
YmlsaXR5KCkpCkBAIC0yNjAsNiArMjc2LDEyIEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlckNv
Y29hOjpzZXROb3dQbGF5aW5nSW5mbyhib29sIHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uCiAK
ICAgICBhdXRvIGluZm8gPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgNCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlw
ZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogCisgICAgaWYgKCFub3dQbGF5aW5nSW5mby5h
cnRpc3QuaXNFbXB0eSgpKQorICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgp
LCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0aXN0LCBub3dQbGF5aW5nSW5mby5hcnRp
c3QuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisKKyAgICBpZiAoIW5vd1BsYXlpbmdJbmZvLmFs
YnVtLmlzRW1wdHkoKSkKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwg
a01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FsYnVtLCBub3dQbGF5aW5nSW5mby5hbGJ1bS5j
cmVhdGVDRlN0cmluZygpLmdldCgpKTsKKwogICAgIGlmICghbm93UGxheWluZ0luZm8udGl0bGUu
aXNFbXB0eSgpKQogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJN
ZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvVGl0bGUsIG5vd1BsYXlpbmdJbmZvLnRpdGxlLmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvTWVkaWFSZW1vdGVTb2Z0TGluay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvTWVkaWFSZW1vdGVTb2Z0TGluay5jcHAKaW5kZXggODRkYWNiODUxZjhjZjZjMWJkNjY3YTk2
ZTdiYzA5ZjczOTJmOWQ1NC4uNzNlN2IyMGQ5YmY1NTI3MDQ3YWMzODExNTIwMDZmM2U4NTIxNWUz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL01lZGlhUmVtb3RlU29m
dExpbmsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9NZWRpYVJlbW90ZVNv
ZnRMaW5rLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNDQsMTEgKzQ0LDE2IEBAIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNF
KFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBNUk1lZGlhUmVtb3RlU2V0Tm93UGxheWluZ0luCiBTT0ZU
X0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShXZWJDb3JlLCBNZWRpYVJlbW90ZSwgTVJNZWRpYVJl
bW90ZVNldE5vd1BsYXlpbmdBcHBsaWNhdGlvblBsYXliYWNrU3RhdGVGb3JPcmlnaW4sIHZvaWQs
IChNUk9yaWdpblJlZiBvcmlnaW4sIE1SUGxheWJhY2tTdGF0ZSBwbGF5YmFja1N0YXRlLCBkaXNw
YXRjaF9xdWV1ZV90IHJlcGx5USwgdm9pZCheY29tcGxldGlvbikoTVJNZWRpYVJlbW90ZUVycm9y
KSksIChvcmlnaW4sIHBsYXliYWNrU3RhdGUsIHJlcGx5USwgY29tcGxldGlvbikpCiBTT0ZUX0xJ
TktfRlVOQ1RJT05fTUFZX0ZBSUxfRk9SX1NPVVJDRShXZWJDb3JlLCBNZWRpYVJlbW90ZSwgTVJN
ZWRpYVJlbW90ZVNldFBhcmVudEFwcGxpY2F0aW9uLCB2b2lkLCAoTVJPcmlnaW5SZWYgb3JpZ2lu
LCBDRlN0cmluZ1JlZiBwYXJlbnRBcHBEaXNwbGF5SUQpLCAob3JpZ2luLCBwYXJlbnRBcHBEaXNw
bGF5SUQpKQogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgTWVkaWFSZW1v
dGUsIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9UaXRsZSwgQ0ZTdHJpbmdSZWYpOworU09G
VF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgTWVkaWFSZW1vdGUsIGtNUk1lZGlh
UmVtb3RlTm93UGxheWluZ0luZm9BcnRpc3QsIENGU3RyaW5nUmVmKTsKK1NPRlRfTElOS19DT05T
VEFOVF9GT1JfU09VUkNFKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU5vd1Bs
YXlpbmdJbmZvQWxidW0sIENGU3RyaW5nUmVmKTsKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09V
UkNFKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0
d29ya0RhdGEsIENGU3RyaW5nUmVmKTsKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFdl
YkNvcmUsIE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya01J
TUVUeXBlLCBDRlN0cmluZ1JlZik7CiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShXZWJD
b3JlLCBNZWRpYVJlbW90ZSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0R1cmF0aW9uLCBD
RlN0cmluZ1JlZik7CiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShXZWJDb3JlLCBNZWRp
YVJlbW90ZSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0VsYXBzZWRUaW1lLCBDRlN0cmlu
Z1JlZik7CiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShXZWJDb3JlLCBNZWRpYVJlbW90
ZSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb1BsYXliYWNrUmF0ZSwgQ0ZTdHJpbmdSZWYp
OwogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgTWVkaWFSZW1vdGUsIGtN
Uk1lZGlhUmVtb3RlT3B0aW9uUGxheWJhY2tQb3NpdGlvbiwgQ0ZTdHJpbmdSZWYpOwogU09GVF9M
SU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgTWVkaWFSZW1vdGUsIGtNUk1lZGlhUmVt
b3RlTm93UGxheWluZ0luZm9VbmlxdWVJZGVudGlmaWVyLCBDRlN0cmluZ1JlZik7CitTT0ZUX0xJ
TktfQ09OU1RBTlRfRk9SX1NPVVJDRShXZWJDb3JlLCBNZWRpYVJlbW90ZSwga01STWVkaWFSZW1v
dGVPcHRpb25Ta2lwSW50ZXJ2YWwsIENGU3RyaW5nUmVmKTsKIAogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShXZWJDb3JlLCBNZWRpYVJlbW90
ZSwgTVJNZWRpYVJlbW90ZUNvcHlQaWNrYWJsZVJvdXRlcywgQ0ZBcnJheVJlZiwgKCksICgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9NZWRpYVJlbW90ZVNvZnRM
aW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTWVkaWFSZW1vdGVTb2Z0TGluay5o
CmluZGV4IDhiNWNkMjNmYjAyYWEyNjQ2NjBlZGYzODE0ZTc3ZmI4NjJmZDUwYzguLjBhZTgzZGQw
MjI5OWEyZjk2YjIxNzc0ODJiM2M3NzJiYjY5MGQwNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9NZWRpYVJlbW90ZVNvZnRMaW5rLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL01lZGlhUmVtb3RlU29mdExpbmsuaApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01OCw2ICs1OCwxNCBAQCBTT0ZU
X0xJTktfRlVOQ1RJT05fTUFZX0ZBSUxfRk9SX0hFQURFUihXZWJDb3JlLCBNZWRpYVJlbW90ZSwg
TVJNZWRpYVJlbW90ZVNldFBhcgogI2RlZmluZSBNUk1lZGlhUmVtb3RlU2V0UGFyZW50QXBwbGlj
YXRpb24gc29mdExpbmtfTWVkaWFSZW1vdGVfTVJNZWRpYVJlbW90ZVNldFBhcmVudEFwcGxpY2F0
aW9uCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihXZWJDb3JlLCBNZWRpYVJlbW90ZSwg
a01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb1RpdGxlLCBDRlN0cmluZ1JlZik7CiAjZGVmaW5l
IGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9UaXRsZSBnZXRfTWVkaWFSZW1vdGVfa01STWVk
aWFSZW1vdGVOb3dQbGF5aW5nSW5mb1RpdGxlKCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVB
REVSKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0
aXN0LCBDRlN0cmluZ1JlZik7CisjZGVmaW5lIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9B
cnRpc3QgZ2V0X01lZGlhUmVtb3RlX2tNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnRpc3Qo
KQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoV2ViQ29yZSwgTWVkaWFSZW1vdGUsIGtN
Uk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BbGJ1bSwgQ0ZTdHJpbmdSZWYpOworI2RlZmluZSBr
TVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQWxidW0gZ2V0X01lZGlhUmVtb3RlX2tNUk1lZGlh
UmVtb3RlTm93UGxheWluZ0luZm9BbGJ1bSgpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURF
UihXZWJDb3JlLCBNZWRpYVJlbW90ZSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdv
cmtEYXRhLCBDRlN0cmluZ1JlZik7CisjZGVmaW5lIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0lu
Zm9BcnR3b3JrRGF0YSBnZXRfTWVkaWFSZW1vdGVfa01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5m
b0FydHdvcmtEYXRhKCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFdlYkNvcmUsIE1l
ZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya01JTUVUeXBlLCBD
RlN0cmluZ1JlZik7CisjZGVmaW5lIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3Jr
TUlNRVR5cGUgZ2V0X01lZGlhUmVtb3RlX2tNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3
b3JrTUlNRVR5cGUoKQogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoV2ViQ29yZSwgTWVk
aWFSZW1vdGUsIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9EdXJhdGlvbiwgQ0ZTdHJpbmdS
ZWYpOwogI2RlZmluZSBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRHVyYXRpb24gZ2V0X01l
ZGlhUmVtb3RlX2tNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9EdXJhdGlvbigpCiBTT0ZUX0xJ
TktfQ09OU1RBTlRfRk9SX0hFQURFUihXZWJDb3JlLCBNZWRpYVJlbW90ZSwga01STWVkaWFSZW1v
dGVOb3dQbGF5aW5nSW5mb0VsYXBzZWRUaW1lLCBDRlN0cmluZ1JlZik7CkBAIC02OCw2ICs3Niw4
IEBAIFNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBr
TVJNZWRpYVJlbW90ZU9wdGlvblBsYXliYWNrCiAjZGVmaW5lIGtNUk1lZGlhUmVtb3RlT3B0aW9u
UGxheWJhY2tQb3NpdGlvbiBnZXRfTWVkaWFSZW1vdGVfa01STWVkaWFSZW1vdGVPcHRpb25QbGF5
YmFja1Bvc2l0aW9uKCkKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFdlYkNvcmUsIE1l
ZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvVW5pcXVlSWRlbnRpZmllciwg
Q0ZTdHJpbmdSZWYpOwogI2RlZmluZSBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvVW5pcXVl
SWRlbnRpZmllciBnZXRfTWVkaWFSZW1vdGVfa01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb1Vu
aXF1ZUlkZW50aWZpZXIoKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoV2ViQ29yZSwg
TWVkaWFSZW1vdGUsIGtNUk1lZGlhUmVtb3RlT3B0aW9uU2tpcEludGVydmFsLCBDRlN0cmluZ1Jl
Zik7CisjZGVmaW5lIGtNUk1lZGlhUmVtb3RlT3B0aW9uU2tpcEludGVydmFsIGdldF9NZWRpYVJl
bW90ZV9rTVJNZWRpYVJlbW90ZU9wdGlvblNraXBJbnRlcnZhbCgpCiAKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoV2ViQ29yZSwgTWVkaWFS
ZW1vdGUsIE1STWVkaWFSZW1vdGVDb3B5UGlja2FibGVSb3V0ZXMsIENGQXJyYXlSZWYsICgpLCAo
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9SZW1vdGVDb21tYW5k
TGlzdGVuZXJNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9SZW1vdGVDb21tYW5k
TGlzdGVuZXJNYWMuaAppbmRleCA5NGE0MmUxOTE3MWIyZGNiOWZlOWI5MGYxZDU4YzIzYzlmNzhh
MjNiLi5iNzFjYWQ4NjgxODg4NGQ5OTRhZmFlZTgzODI2OWM5NWY3MWRjYzY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1h
Yy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTM5LDkgKzM5LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5SZW1vdGVDb21tYW5kTGlz
dGVuZXJNYWMoKTsKIAogcHJvdGVjdGVkOgotICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVkQ29tbWFu
ZHMoKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZENvbW1hbmRzKCkgZmluYWw7
CiAKICAgICB2b2lkKiBtX2NvbW1hbmRIYW5kbGVyIHsgbnVsbHB0ciB9OworCisgICAgY29uc3Qg
UmVtb3RlQ29tbWFuZHNTZXQmIGRlZmF1bHRDb21tYW5kcygpOworICAgIFJlbW90ZUNvbW1hbmRz
U2V0IG1fY3VycmVudENvbW1hbmRzOworICAgIGJvb2wgbV9zdXBwb3J0c1NlZWtpbmcgeyBmYWxz
ZSB9OwogfTsKICAgICAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9SZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLm1tCmluZGV4IDRlYTgzOTIwNzI3MTg0NDhhODYy
MmZmZTJkMzI1Y2Y3MzcxMjQ2MjguLmZhZjc1M2Y4N2E0NGZmMjBmZWQ4MjkzZDdjMTViMDViM2E4
NzAyYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9SZW1vdGVDb21t
YW5kTGlzdGVuZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1JlbW90
ZUNvbW1hbmRMaXN0ZW5lck1hYy5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzUsNDIgKzM1LDEwMiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK3N0YXRpYyBPcHRpb25hbDxNUk1lZGlhUmVtb3RlQ29tbWFuZD4gbWVkaWFSZW1v
dGVDb21tYW5kRm9yUGxhdGZvcm1Db21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVD
b250cm9sQ29tbWFuZFR5cGUgY29tbWFuZCkKK3sKKyAgICBzdGF0aWMgY29uc3QgYXV0byBjb21t
YW5kTWFwID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICAgICAgc3RydWN0IE1hcEVudHJ5
IHsKKyAgICAgICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFu
ZFR5cGUgcGxhdGZvcm1Db21tYW5kOworICAgICAgICAgICAgTVJNZWRpYVJlbW90ZUNvbW1hbmQg
bWVkaWFSZW1vdGVDb21tYW5kOworICAgICAgICB9OworICAgICAgICBzdGF0aWMgY29uc3QgTWFw
RW50cnkgZW50cmllc1tdID0geworICAgICAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
UGxheUNvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kUGxheSB9LAorICAgICAgICAgICAgeyBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGF1c2VDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZFBh
dXNlIH0sCisgICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTdG9wQ29tbWFuZCwg
TVJNZWRpYVJlbW90ZUNvbW1hbmRTdG9wIH0sCisgICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpUb2dnbGVQbGF5UGF1c2VDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZFRvZ2ds
ZVBsYXlQYXVzZSB9LAorICAgICAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QmVnaW5T
ZWVraW5nQmFja3dhcmRDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZEJlZ2luUmV3aW5kIH0s
CisgICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRTZWVraW5nQmFja3dhcmRD
b21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZEVuZFJld2luZCB9LAorICAgICAgICAgICAgeyBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QmVnaW5TZWVraW5nRm9yd2FyZENvbW1hbmQsIE1STWVkaWFS
ZW1vdGVDb21tYW5kQmVnaW5GYXN0Rm9yd2FyZCB9LAorICAgICAgICAgICAgeyBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6RW5kU2Vla2luZ0ZvcndhcmRDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFu
ZEVuZEZhc3RGb3J3YXJkIH0sCisgICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpT
ZWVrVG9QbGF5YmFja1Bvc2l0aW9uQ29tbWFuZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRTZWVrVG9Q
bGF5YmFja1Bvc2l0aW9uIH0sCisgICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpT
a2lwRm9yd2FyZENvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kU2tpcEZvcndhcmQgfSwKKyAg
ICAgICAgICAgIHsgUGxhdGZvcm1NZWRpYVNlc3Npb246OlNraXBCYWNrd2FyZENvbW1hbmQsIE1S
TWVkaWFSZW1vdGVDb21tYW5kU2tpcEJhY2t3YXJkIH0sCisgICAgICAgICAgICB7IFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpOZXh0VHJhY2tDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZE5leHRU
cmFjayB9LAorICAgICAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UHJldmlvdXNUcmFj
a0NvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kUHJldmlvdXNUcmFjayB9LAorICAgICAgICB9
OworCisgICAgICAgIEhhc2hNYXA8UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xD
b21tYW5kVHlwZSwgTVJNZWRpYVJlbW90ZUNvbW1hbmQsIFdURjo6SW50SGFzaDxQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFz
aFRyYWl0czxQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlPj4g
bWFwOworICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogZW50cmllcykKKyAgICAgICAgICAgIG1h
cC5hZGQoZW50cnkucGxhdGZvcm1Db21tYW5kLCBlbnRyeS5tZWRpYVJlbW90ZUNvbW1hbmQpOwor
ICAgICAgICByZXR1cm4gbWFwOworICAgIH0oKSk7CisKKyAgICBhdXRvIGl0ID0gY29tbWFuZE1h
cC5nZXQoKS5maW5kKGNvbW1hbmQpOworICAgIGlmIChpdCAhPSBjb21tYW5kTWFwLmdldCgpLmVu
ZCgpKQorICAgICAgICByZXR1cm4geyBpdC0+dmFsdWUgfTsKKworICAgIHJldHVybiB7IH07Cit9
CisKIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDb21tYW5kTGlzdGVuZXI+IFJlbW90ZUNvbW1hbmRM
aXN0ZW5lcjo6Y3JlYXRlKFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCYgY2xpZW50KQogewog
ICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYz4oY2xpZW50KTsK
IH0KIAorY29uc3QgUmVtb3RlQ29tbWFuZExpc3RlbmVyOjpSZW1vdGVDb21tYW5kc1NldCYgUmVt
b3RlQ29tbWFuZExpc3RlbmVyTWFjOjpkZWZhdWx0Q29tbWFuZHMoKQoreworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxSZW1vdGVDb21tYW5kc1NldD4gY29tbWFuZHMoc3RkOjppbml0aWFsaXpl
cl9saXN0PFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGU+IHsK
KyAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXlDb21tYW5kLAorICAgICAgICBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6UGF1c2VDb21tYW5kLAorICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6VG9nZ2xlUGxheVBhdXNlQ29tbWFuZCwKKyAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Np
b246OkJlZ2luU2Vla2luZ0ZvcndhcmRDb21tYW5kLAorICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6RW5kU2Vla2luZ0ZvcndhcmRDb21tYW5kLAorICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6QmVnaW5TZWVraW5nQmFja3dhcmRDb21tYW5kLAorICAgICAgICBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6RW5kU2Vla2luZ0JhY2t3YXJkQ29tbWFuZCwKKyAgICAgICAgUGxhdGZvcm1NZWRp
YVNlc3Npb246OlNlZWtUb1BsYXliYWNrUG9zaXRpb25Db21tYW5kLAorICAgICAgICBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6U2tpcEZvcndhcmRDb21tYW5kLAorICAgICAgICBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6U2tpcEJhY2t3YXJkQ29tbWFuZCwKKyAgICB9KTsKKworICAgIHJldHVybiBjb21t
YW5kczsKK30KKworc3RhdGljIGJvb2wgaXNTZWVrQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlIGNvbW1hbmQpCit7CisgICAgcmV0dXJuIGNvbW1h
bmQgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OlNlZWtUb1BsYXliYWNrUG9zaXRpb25Db21tYW5k
CisgICAgICAgIHx8IGNvbW1hbmQgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OlNraXBGb3J3YXJk
Q29tbWFuZAorICAgICAgICB8fCBjb21tYW5kID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTa2lw
QmFja3dhcmRDb21tYW5kCisgICAgICAgIHx8IGNvbW1hbmQgPT0gUGxhdGZvcm1NZWRpYVNlc3Np
b246OkJlZ2luU2Vla2luZ0ZvcndhcmRDb21tYW5kCisgICAgICAgIHx8IGNvbW1hbmQgPT0gUGxh
dGZvcm1NZWRpYVNlc3Npb246OkJlZ2luU2Vla2luZ0JhY2t3YXJkQ29tbWFuZDsKK30KKwogdm9p
ZCBSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWM6OnVwZGF0ZVN1cHBvcnRlZENvbW1hbmRzKCkKIHsK
ICAgICBpZiAoIWlzTWVkaWFSZW1vdGVGcmFtZXdvcmtBdmFpbGFibGUoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgc3RhdGljIGNvbnN0IE1STWVkaWFSZW1vdGVDb21tYW5kIHN1cHBvcnRlZENv
bW1hbmRzW10gPSB7Ci0gICAgICAgIE1STWVkaWFSZW1vdGVDb21tYW5kUGxheSwKLSAgICAgICAg
TVJNZWRpYVJlbW90ZUNvbW1hbmRQYXVzZSwKLSAgICAgICAgTVJNZWRpYVJlbW90ZUNvbW1hbmRU
b2dnbGVQbGF5UGF1c2UsCi0gICAgICAgIE1STWVkaWFSZW1vdGVDb21tYW5kQmVnaW5GYXN0Rm9y
d2FyZCwKLSAgICAgICAgTVJNZWRpYVJlbW90ZUNvbW1hbmRFbmRGYXN0Rm9yd2FyZCwKLSAgICAg
ICAgTVJNZWRpYVJlbW90ZUNvbW1hbmRCZWdpblJld2luZCwKLSAgICAgICAgTVJNZWRpYVJlbW90
ZUNvbW1hbmRFbmRSZXdpbmQsCi0gICAgICAgIE1STWVkaWFSZW1vdGVDb21tYW5kU2Vla1RvUGxh
eWJhY2tQb3NpdGlvbiwKLSAgICB9OworICAgIGF1dG8mIHN1cHBvcnRlZENvbW1hbmRzID0gIW1f
cmVnaXN0ZXJlZENvbW1hbmRzLmlzRW1wdHkoKSA/IG1fcmVnaXN0ZXJlZENvbW1hbmRzIDogZGVm
YXVsdENvbW1hbmRzKCk7CisgICAgaWYgKG1fc3VwcG9ydHNTZWVraW5nID09IGNsaWVudCgpLnN1
cHBvcnRzU2Vla2luZygpICYmIG1fY3VycmVudENvbW1hbmRzID09IHN1cHBvcnRlZENvbW1hbmRz
KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGNvbW1hbmRJbmZvQXJyYXkgPSBhZG9wdENG
KENGQXJyYXlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN1cHBvcnRlZENvbW1h
bmRzLnNpemUoKSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOworICAgIGZvciAoYXV0byBwbGF0
Zm9ybUNvbW1hbmQgOiBzdXBwb3J0ZWRDb21tYW5kcykgeworICAgICAgICBpZiAoaXNTZWVrQ29t
bWFuZChwbGF0Zm9ybUNvbW1hbmQpICYmICFjbGllbnQoKS5zdXBwb3J0c1NlZWtpbmcoKSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgYXV0byBjb21tYW5kSW5mb0FycmF5ID0gYWRvcHRD
RihDRkFycmF5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzaXplb2Yoc3VwcG9y
dGVkQ29tbWFuZHMpIC8gc2l6ZW9mKE1STWVkaWFSZW1vdGVDb21tYW5kKSwgJmtDRlR5cGVBcnJh
eUNhbGxCYWNrcykpOworICAgICAgICBhdXRvIGNvbW1hbmQgPSBtZWRpYVJlbW90ZUNvbW1hbmRG
b3JQbGF0Zm9ybUNvbW1hbmQocGxhdGZvcm1Db21tYW5kKTsKKyAgICAgICAgQVNTRVJUKGNvbW1h
bmQpOworICAgICAgICBpZiAoIWNvbW1hbmQpCisgICAgICAgICAgICBjb250aW51ZTsKIAotICAg
IGZvciAoYXV0byBjb21tYW5kIDogc3VwcG9ydGVkQ29tbWFuZHMpIHsKICAgICAgICAgYXV0byBj
b21tYW5kSW5mbyA9IGFkb3B0Q0YoTVJNZWRpYVJlbW90ZUNvbW1hbmRJbmZvQ3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQpKTsKLSAgICAgICAgTVJNZWRpYVJlbW90ZUNvbW1hbmRJbmZvU2V0Q29t
bWFuZChjb21tYW5kSW5mby5nZXQoKSwgY29tbWFuZCk7CisgICAgICAgIE1STWVkaWFSZW1vdGVD
b21tYW5kSW5mb1NldENvbW1hbmQoY29tbWFuZEluZm8uZ2V0KCksIGNvbW1hbmQudmFsdWUoKSk7
CiAgICAgICAgIE1STWVkaWFSZW1vdGVDb21tYW5kSW5mb1NldEVuYWJsZWQoY29tbWFuZEluZm8u
Z2V0KCksIHRydWUpOwogICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoY29tbWFuZEluZm9BcnJh
eS5nZXQoKSwgY29tbWFuZEluZm8uZ2V0KCkpOwogICAgIH0KIAotICAgIGF1dG8gc2Vla0NvbW1h
bmRJbmZvID0gYWRvcHRDRihNUk1lZGlhUmVtb3RlQ29tbWFuZEluZm9DcmVhdGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCkpOwotICAgIE1STWVkaWFSZW1vdGVDb21tYW5kSW5mb1NldENvbW1hbmQoc2Vl
a0NvbW1hbmRJbmZvLmdldCgpLCBNUk1lZGlhUmVtb3RlQ29tbWFuZFNlZWtUb1BsYXliYWNrUG9z
aXRpb24pOwotICAgIE1STWVkaWFSZW1vdGVDb21tYW5kSW5mb1NldEVuYWJsZWQoc2Vla0NvbW1h
bmRJbmZvLmdldCgpLCBjbGllbnQoKS5zdXBwb3J0c1NlZWtpbmcoKSk7Ci0gICAgQ0ZBcnJheUFw
cGVuZFZhbHVlKGNvbW1hbmRJbmZvQXJyYXkuZ2V0KCksIHNlZWtDb21tYW5kSW5mby5nZXQoKSk7
Ci0KICAgICBNUk1lZGlhUmVtb3RlU2V0U3VwcG9ydGVkQ29tbWFuZHMoY29tbWFuZEluZm9BcnJh
eS5nZXQoKSwgTVJNZWRpYVJlbW90ZUdldExvY2FsT3JpZ2luKCksIG51bGxwdHIsIG51bGxwdHIp
OworICAgIG1fY3VycmVudENvbW1hbmRzID0gc3VwcG9ydGVkQ29tbWFuZHM7CisgICAgbV9zdXBw
b3J0c1NlZWtpbmcgPSBjbGllbnQoKS5zdXBwb3J0c1NlZWtpbmcoKTsKIH0KIAogUmVtb3RlQ29t
bWFuZExpc3RlbmVyTWFjOjpSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMoUmVtb3RlQ29tbWFuZExp
c3RlbmVyQ2xpZW50JiBjbGllbnQpCkBAIC03OSw3ICsxMzksNyBAQCBSZW1vdGVDb21tYW5kTGlz
dGVuZXJNYWM6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYyhSZW1vdGVDb21tYW5kTGlzdGVuZXJD
bGllbnQmCiAgICAgaWYgKCFpc01lZGlhUmVtb3RlRnJhbWV3b3JrQXZhaWxhYmxlKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIHVwZGF0ZVN1cHBvcnRlZENvbW1hbmRzKCk7CisgICAgc2NoZWR1
bGVTdXBwb3J0ZWRDb21tYW5kc1VwZGF0ZSgpOwogCiAgICAgYXV0byB3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKCp0aGlzKTsKICAgICBtX2NvbW1hbmRIYW5kbGVyID0gTVJNZWRpYVJlbW90ZUFkZEFz
eW5jQ29tbWFuZEhhbmRsZXJCbG9jayheKE1STWVkaWFSZW1vdGVDb21tYW5kIGNvbW1hbmQsIENG
RGljdGlvbmFyeVJlZiBvcHRpb25zLCB2b2lkKF5jb21wbGV0aW9uKShDRkFycmF5UmVmKSkgewpA
QCAtODgsNiArMTQ4LDcgQEAgUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjOjpSZW1vdGVDb21tYW5k
TGlzdGVuZXJNYWMoUmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50JgogCiAgICAgICAgIFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgcGxhdGZvcm1Db21tYW5k
IHsgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5vQ29tbWFuZCB9OwogICAgICAgICBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6UmVtb3RlQ29tbWFuZEFyZ3VtZW50IGFyZ3VtZW50IHsgMCB9OworICAgICAg
ICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29tbWFuZEFyZ3VtZW50KiBhcmd1bWVudFB0
ciA9IG51bGxwdHI7CiAgICAgICAgIE1STWVkaWFSZW1vdGVDb21tYW5kSGFuZGxlclN0YXR1cyBz
dGF0dXMgPSBNUk1lZGlhUmVtb3RlQ29tbWFuZEhhbmRsZXJTdGF0dXNTdWNjZXNzOwogCiAgICAg
ICAgIHN3aXRjaCAoY29tbWFuZCkgewpAQCAtMTI4LDE2ICsxODksMzcgQEAgUmVtb3RlQ29tbWFu
ZExpc3RlbmVyTWFjOjpSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMoUmVtb3RlQ29tbWFuZExpc3Rl
bmVyQ2xpZW50JgogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBDRk51bWJlckdldFZhbHVl
KHBvc2l0aW9uUmVmLCBrQ0ZOdW1iZXJEb3VibGVUeXBlLCAmYXJndW1lbnQuYXNEb3VibGUpOwor
ICAgICAgICAgICAgYXJndW1lbnRQdHIgPSAmYXJndW1lbnQ7CiAgICAgICAgICAgICBwbGF0Zm9y
bUNvbW1hbmQgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2Vla1RvUGxheWJhY2tQb3NpdGlvbkNv
bW1hbmQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIE1STWVk
aWFSZW1vdGVDb21tYW5kU2tpcEZvcndhcmQ6CisgICAgICAgIGNhc2UgTVJNZWRpYVJlbW90ZUNv
bW1hbmRTa2lwQmFja3dhcmQ6CisgICAgICAgICAgICBpZiAoIWNsaWVudC5zdXBwb3J0c1NlZWtp
bmcoKSkgeworICAgICAgICAgICAgICAgIHN0YXR1cyA9IE1STWVkaWFSZW1vdGVDb21tYW5kSGFu
ZGxlclN0YXR1c0NvbW1hbmRGYWlsZWQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGlmIChhdXRvIHBvc2l0aW9uUmVmID0gc3RhdGljX2Nhc3Q8
Q0ZOdW1iZXJSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKG9wdGlvbnMsIGtNUk1lZGlhUmVtb3Rl
T3B0aW9uU2tpcEludGVydmFsKSkpIHsKKyAgICAgICAgICAgICAgICBDRk51bWJlckdldFZhbHVl
KHBvc2l0aW9uUmVmLCBrQ0ZOdW1iZXJEb3VibGVUeXBlLCAmYXJndW1lbnQuYXNEb3VibGUpOwor
ICAgICAgICAgICAgICAgIGFyZ3VtZW50UHRyID0gJmFyZ3VtZW50OworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBwbGF0Zm9ybUNvbW1hbmQgPSAoY29tbWFuZCA9PSBNUk1lZGlhUmVtb3Rl
Q29tbWFuZFNraXBGb3J3YXJkKSA/IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTa2lwRm9yd2FyZENv
bW1hbmQgOiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEJhY2t3YXJkQ29tbWFuZDsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1STWVkaWFSZW1vdGVDb21tYW5kTmV4dFRyYWNr
OgorICAgICAgICAgICAgcGxhdGZvcm1Db21tYW5kID0gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5l
eHRUcmFja0NvbW1hbmQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNUk1lZGlh
UmVtb3RlQ29tbWFuZFByZXZpb3VzVHJhY2s6CisgICAgICAgICAgICBwbGF0Zm9ybUNvbW1hbmQg
PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UHJldmlvdXNUcmFja0NvbW1hbmQ7CisgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIExPRyhNZWRpYSwgIlJlbW90
ZUNvbW1hbmRMaXN0ZW5lck1hYzo6UmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjIC0gY29tbWFuZCAl
dSBub3Qgc3VwcG9ydGVkISIsIGNvbW1hbmQpOwogICAgICAgICAgICAgc3RhdHVzID0gTVJNZWRp
YVJlbW90ZUNvbW1hbmRIYW5kbGVyU3RhdHVzQ29tbWFuZEZhaWxlZDsKICAgICAgICAgfTsKIAog
ICAgICAgICBpZiAod2Vha1RoaXMgJiYgc3RhdHVzICE9IE1STWVkaWFSZW1vdGVDb21tYW5kSGFu
ZGxlclN0YXR1c0NvbW1hbmRGYWlsZWQpCi0gICAgICAgICAgICB3ZWFrVGhpcy0+bV9jbGllbnQu
ZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKHBsYXRmb3JtQ29tbWFuZCwgJmFyZ3VtZW50
KTsKKyAgICAgICAgICAgIHdlYWtUaGlzLT5tX2NsaWVudC5kaWRSZWNlaXZlUmVtb3RlQ29udHJv
bENvbW1hbmQocGxhdGZvcm1Db21tYW5kLCBhcmd1bWVudFB0cik7CiAKICAgICAgICAgY29tcGxl
dGlvbigoX19icmlkZ2UgQ0ZBcnJheVJlZilAW0Aoc3RhdHVzKV0pOwogICAgIH0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbQppbmRl
eCA2MmRjYjMwNmE4OTljYThiYTQyODQ5MmY5Mzc2MTBmNjhhOWZlNDUzLi4wYzc5YmZmZWQ1YmVk
Yzc3OWEyYzk4MTIzZjI4ZTcyMzY2MDU0YzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbQpAQCAtMTQ3OSw2ICsxNDc5LDE2IEBA
IHN0YXRpYyBXZWJDb3JlOjpFZGl0YWJsZUxpbmtCZWhhdmlvciB0b0VkaXRhYmxlTGlua0JlaGF2
aW9yKF9XS0VkaXRhYmxlTGlua0JlaGF2CiAgICAgX3ByZWZlcmVuY2VzLT5zZXRQaXRjaENvcnJl
Y3Rpb25BbGdvcml0aG0ocGl0Y2hDb3JyZWN0aW9uQWxnb3JpdGhtKTsKIH0KIAorLSAoQk9PTClf
bWVkaWFTZXNzaW9uRW5hYmxlZAoreworICAgIHJldHVybiBfcHJlZmVyZW5jZXMtPm1lZGlhU2Vz
c2lvbkVuYWJsZWQoKTsKK30KKworLSAodm9pZClfc2V0TWVkaWFTZXNzaW9uRW5hYmxlZDooQk9P
TCltZWRpYVNlc3Npb25FbmFibGVkCit7CisgICAgX3ByZWZlcmVuY2VzLT5zZXRNZWRpYVNlc3Np
b25FbmFibGVkKG1lZGlhU2Vzc2lvbkVuYWJsZWQpOworfQorCiBAZW5kCiAKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXNQcml2YXRl
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZh
dGUuaAppbmRleCBmMDY5MWZkNTc1MDRmM2NhODExZTc0YjBkMGEzOWUzZDc4YThkNDExLi43NjY2
OTYwMDhmZTJiYjRhZDNmZjYyMTNkMjViMzdiZmZlZGMyYmQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaApA
QCAtMTcwLDYgKzE3MCw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS1BpdGNoQ29y
cmVjdGlvbkFsZ29yaXRobSkgewogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0U3Bl
ZWNoUmVjb2duaXRpb25FbmFibGVkOikgQk9PTCBfc3BlZWNoUmVjb2duaXRpb25FbmFibGVkIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiBAcHJv
cGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuYWJs
ZWQ6KSBCT09MIF9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuYWJsZWQgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCBzZXR0ZXI9X3NldFBpdGNoQ29ycmVjdGlvbkFsZ29yaXRobTopIF9XS1BpdGNoQ29ycmVj
dGlvbkFsZ29yaXRobSBfcGl0Y2hDb3JyZWN0aW9uQWxnb3JpdGhtIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CitAcHJvcGVydHkgKG5vbmF0b21p
Yywgc2V0dGVyPV9zZXRNZWRpYVNlc3Npb25FbmFibGVkOikgQk9PTCBfbWVkaWFTZXNzaW9uRW5h
YmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkp
OwogCiAjaWYgIVRBUkdFVF9PU19JUEhPTkUKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9
X3NldFdlYkdMRW5hYmxlZDopIEJPT0wgX3dlYkdMRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKDEwLjEzLjQpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCAxNzA1ZTdjYjgyZmY4YmRmNmM1ODEwNGJkMTQ2NjE3MjFiMWNkYWM0Li5lMDFi
NDdjY2RkMTNkMTA5OWY5MGJhOTRiNmM5MDI3MDQ1YzkwNGM4IDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMjEtMDIt
MDQgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW01h
Y10gQ29ubmVjdCBNZWRpYVNlc3Npb24gd2l0aCBNZWRpYVJlbW90ZSBhbmQgTm93UGxheWluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNDMxCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NDAwMDM2Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvTWVkaWFTZXNzaW9uLm1tOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6Ok1lZGlhU2Vzc2lvblRlc3Q6OndlYlZpZXcpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
TWVkaWFTZXNzaW9uVGVzdDo6d2ViVmlld1BpZCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpN
ZWRpYVNlc3Npb25UZXN0OjpnZXROb3dQbGF5aW5nQ2xpZW50KToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6Ok1lZGlhU2Vzc2lvblRlc3Q6OmdldE5vd1BsYXlpbmdDbGllbnRQaWQpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uVGVzdDo6bG9hZFBhZ2VBbmRCZWNvbWVOb3dQ
bGF5aW5nKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvblRlc3Q6OnJ1blNj
cmlwdFdpdGhVc2VyR2VzdHVyZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Np
b25UZXN0OjpwbGF5KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvblRlc3Q6
OnBhdXNlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvblRlc3Q6OnNlbmRN
ZWRpYVJlbW90ZUNvbW1hbmQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9u
VGVzdDo6c2VuZE1lZGlhUmVtb3RlU2Vla0NvbW1hbmQpOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6TWVkaWFTZXNzaW9uVGVzdDo6bGlzdGVuRm9yRXZlbnRNZXNzYWdlcyk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25UZXN0OjpldmVudExpc3RlbmVyV2FzQ2FsbGVkKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvblRlc3Q6OndhaXRGb3JFdmVudExp
c3RlbmVyVG9CZUNhbGxlZCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25U
ZXN0OjpsaXN0ZW5Gb3JTZXNzaW9uSGFuZGxlck1lc3NhZ2VzKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6Ok1lZGlhU2Vzc2lvblRlc3Q6OnNlc3Npb25IYW5kbGVyV2FzQ2FsbGVkKToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvblRlc3Q6OndhaXRGb3JTZXNzaW9uSGFuZGxl
clRvQmVDYWxsZWQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uVGVzdDo6
Z2V0U3VwcG9ydGVkQ29tbWFuZHMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL21lZGlhLXJlbW90ZS5o
dG1sOiBBZGRlZC4KKwogMjAyMS0wMS0yNSAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgW2V3c10gQ29tbWl0IFF1ZXVlIHNob3VsZCByZXRyeSB0aGUgYnVp
bGQgd2hlbiB1cGRhdGUtd29ya2luZy1kaXJlY3Rvcnkgc3RlcCBmYWlscwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBiN2ZiZjg1MjYyMjc5ODdkYjk1ZWQ5NjFkMTQ0ZDhhMjIyYjFlOTI0Li5j
MGFlNjE2MGYwZWE4YTk3NDg2M2NlZTc2Mzc4YjE5MjgyNjFmNDFkIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtNTEsMTEgKzUxLDEzIEBACiAJCTA3NDkyQjNCMURGOEIxNEMwMDYzM0RFMSAv
KiBFbnVtZXJhdGVNZWRpYURldmljZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDc0OTJCM0ExREY4QUUyRDAwNjMzREUxIC8qIEVudW1lcmF0ZU1l
ZGlhRGV2aWNlcy5jcHAgKi87IH07CiAJCTA3NDkyQjNDMURGOEI4NjYwMDYzM0RFMSAvKiBlbnVt
ZXJhdGVNZWRpYURldmljZXMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwNzQ5MkIzOTFERjhBREE0MDA2MzNERTEgLyogZW51bWVyYXRl
TWVkaWFEZXZpY2VzLmh0bWwgKi87IH07CiAJCTA3NDk5NDQyMUVBNTAzNEIwMDBEQTQ0RSAvKiBn
ZXRVc2VyTWVkaWEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0QTQxMEY0RDE5QUY3QkVGMDAyRUJBQjUgLyogZ2V0VXNlck1lZGlhLmh0
bWwgKi87IH07Ci0JCTA3NDk5NDUyMUVBNTAzNEIwMDBEQTQ0RSAvKiBnZXRVc2VyTWVkaWEyLmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDFCQUY0RTIyNUFDOURCODAwRDgyRjMyIC8qIGdldFVzZXJNZWRpYTIuaHRtbCAqLzsgfTsKIAkJ
MDc0OTk0NDIxRUE1MDM0QjAwMERBNDRGIC8qIG9uZGV2aWNlY2hhbmdlLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE0MTBGNEQxOUFG
N0JFRjAwMkVCQUI2IC8qIG9uZGV2aWNlY2hhbmdlLmh0bWwgKi87IH07CiAJCTA3NDk5NDQyMUVB
NTAzNEIwMDBEQTQ1RSAvKiBnZXRVc2VyTWVkaWFBdWRpb1ZpZGVvQ2FwdHVyZS5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBNDEwRjRE
MTlBRjdCRUYwMDJFQkFDNSAvKiBnZXRVc2VyTWVkaWFBdWRpb1ZpZGVvQ2FwdHVyZS5odG1sICov
OyB9OworCQkwNzQ5OTQ1MjFFQTUwMzRCMDAwREE0NEUgLyogZ2V0VXNlck1lZGlhMi5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQkFG
NEUyMjVBQzlEQjgwMEQ4MkYzMiAvKiBnZXRVc2VyTWVkaWEyLmh0bWwgKi87IH07CiAJCTA3NkU1
MDdGMUY0NTEzRDYwMDZFOUY1QSAvKiBMb2dnaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NkU1MDdFMUY0NTAzMUUwMDZFOUY1QSAvKiBMb2dn
aW5nLmNwcCAqLzsgfTsKIAkJMDc3QTVBRjMyMzA2MzhBNjAwQTcxMDVDIC8qIEFjY2Vzc2liaWxp
dHlUZXN0UGx1Z2luLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDc0NjY0NTgyMkZGNjMwNTAwRTM0NTFBIC8qIEFjY2Vzc2liaWxpdHlUZXN0UGx1Z2lu
Lm1tICovOyB9OworCQkwNzk0NzQwRDI1Q0EwQkRFMDBDNTk3RUIgLyogTWVkaWFTZXNzaW9uLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5NDc0MEMy
NUNBMEJERTAwQzU5N0VCIC8qIE1lZGlhU2Vzc2lvbi5tbSAqLzsgfTsKKwkJMDc5NDc0MkQyNUNC
MzNGRDAwQzU5N0VCIC8qIG1lZGlhLXJlbW90ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3OTQ3NDJDMjVDQjMzQjAwMEM1OTdFQiAv
KiBtZWRpYS1yZW1vdGUuaHRtbCAqLzsgfTsKIAkJMDc5OUMzNDkxRUJBMkQ3QjAwM0I3NTMyIC8q
IFVzZXJNZWRpYURpc2FibGVkLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDdFREVGQUMxRUI5NDAwQzAwRDQzMjkyIC8qIFVzZXJNZWRpYURpc2FibGVk
Lm1tICovOyB9OwogCQkwNzk5QzM0QjFFQkEzMzAxMDAzQjc1MzIgLyogZGlzYWJsZUdldFVzZXJN
ZWRpYS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3OTlDMzRBMUVCQTMyRjQwMDNCNzUzMiAvKiBkaXNhYmxlR2V0VXNlck1lZGlhLmh0
bWwgKi87IH07CiAJCTA3QzA0NkNBMUU0MjYyQTgwMDcyMDFFNyAvKiBDQVJpbmdCdWZmZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDMDQ2Qzkx
RTQyNTczRTAwNzIwMUU3IC8qIENBUmluZ0J1ZmZlci5jcHAgKi87IH07CkBAIC0xNDI5LDcgKzE0
MzEsNiBAQAogCQkJCTFBN0U4QjM2MTgxMjBCMkYwMEFFQjc0QSAvKiBGcmFnbWVudE5hdmlnYXRp
b24uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlGNDc3Mjg5OTFFNEFFM0MxMDA3QUJG
NkEgLyogZnVsbC1wYWdlLWNvbnRlbnRlZGl0YWJsZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
LAogCQkJCUY0RTBBMjhCMjExRTRBMkIwMEFGN0M3RiAvKiBmdWxsLXBhZ2UtZHJvcHpvbmUuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLywKLQkJCQlDREI0Nzc2MjI1NTY4RTI3MDBGRjVEMkEgLyog
ZnVsbC1zY3JlZW4tc2Nyb2xsLXBvc2l0aW9uLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJ
CQkJRjRGNDA1QkMxRDRDMEQxQzAwN0E5NzA3IC8qIGZ1bGwtc2l6ZS1hdXRvcGxheWluZy12aWRl
by13aXRoLWF1ZGlvLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJQ0Q3OEUxMUUxREI3
RUUyQTAwMTRBMkRFIC8qIEZ1bGxzY3JlZW5EZWxlZ2F0ZS5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovLAogCQkJCTNGQkQxQjRBMUQzRDY2QUIwMEU2RDZGQSAvKiBGdWxsc2NyZWVuTGF5b3V0Q29u
c3RyYWludHMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKQEAgLTE1NTgsNiArMTU1OSw3IEBA
CiAJCQkJQUQ1N0FDMjIxREE3NDY2RTAwRkYxQkRFIC8qIG1hbnktaWZyYW1lcy5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovLAogCQkJCTc3NzJFQ0UxMjJGRTA2QzYwMDA5QTc5OSAvKiBtYW55LXNh
bWUtb3JpZ2luLWlmcmFtZXMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlDRDgzOTRE
RjIzMkFGN0MwMDAxNDk0OTUgLyogbWVkaWEtbG9hZGluZy5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovLAorCQkJCTA3OTQ3NDJEMjVDQjMzRkQwMEM1OTdFQiAvKiBtZWRpYS1yZW1vdGUuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlDREEzMTU5QTFFRDU0OEYxMDA5RjYwRDMgLyogTWVk
aWFQbGF5YmFja1NsZWVwQXNzZXJ0aW9uLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJ
Q0RDOTQ0MkYxRUYyMDVENjAwNTlDM0M0IC8qIG1lZGlhc3RyZWFtdHJhY2stZGV0YWNoZWQuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlFMTIyMERDQTE1NUIyOEFBMDAxM0UyRkMgLyog
TWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLywKQEAgLTE3MjEsNiArMTcyMyw4IEBACiAJCTA3NDkyQjNBMURGOEFFMkQw
MDYzM0RFMSAvKiBFbnVtZXJhdGVNZWRpYURldmljZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRW51bWVyYXRlTWVkaWFEZXZpY2VzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMDc2NkREMUYxQTVBRDUyMDAwMjNFM0JCIC8qIFBlbmRpbmdBUElS
ZXF1ZXN0VVJMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBlbmRp
bmdBUElSZXF1ZXN0VVJMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2RTUw
N0UxRjQ1MDMxRTAwNkU5RjVBIC8qIExvZ2dpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTG9nZ2luZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTA3OTQ3NDBDMjVDQTBCREUwMEM1OTdFQiAvKiBNZWRpYVNlc3Npb24ubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZWRpYVNlc3Npb24ubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTA3OTQ3NDJDMjVDQjMzQjAwMEM1OTdFQiAvKiBtZWRpYS1yZW1v
dGUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJtZWRpYS1yZW1vdGUuaHRtbCI7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3OTlDMzRBMUVCQTMyRjQwMDNCNzUzMiAv
KiBkaXNhYmxlR2V0VXNlck1lZGlhLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBk
aXNhYmxlR2V0VXNlck1lZGlhLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3
QzA0NkM5MUU0MjU3M0UwMDcyMDFFNyAvKiBDQVJpbmdCdWZmZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ0FSaW5nQnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMDdDQzdERkQyMjY2MzMwODAwRTM5MTgxIC8qIE1lZGlhQnVmZmVyaW5n
UG9saWN5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVkaWFC
dWZmZXJpbmdQb2xpY3kubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMzU1LDYg
KzMzNTksNyBAQAogCQkJCTk1QjZCM0I2MjUxRUJGMkYwMEZDNDM4MiAvKiBNZWRpYURvY3VtZW50
Lm1tICovLAogCQkJCUNEMDM3MEUyMjRBNDRCN0EwMEJBM0NBRSAvKiBNZWRpYUxvYWRpbmcubW0g
Ki8sCiAJCQkJMDdFRjc2RDQyNTQwRkMwNjAwNTNFRDUzIC8qIE1lZGlhTXV0ZWRTdGF0ZS5tbSAq
LywKKwkJCQkwNzk0NzQwQzI1Q0EwQkRFMDBDNTk3RUIgLyogTWVkaWFTZXNzaW9uLm1tICovLAog
CQkJCTUxQkU5RTY1MjM3NjA4OTUwMEI0RTExNyAvKiBNZWRpYVR5cGUubW0gKi8sCiAJCQkJNTE2
NUZFMDMyMDFFRTYxNzAwOUY3RUMzIC8qIE1lc3NhZ2VQb3J0UHJvdmlkZXJzLm1tICovLAogCQkJ
CTUxQ0QxQzZBMUIzOENFMzYwMDE0MkNBNSAvKiBNb2RhbEFsZXJ0cy5tbSAqLywKQEAgLTM4Mjks
NyArMzgzNCw2IEBACiAJCQkJRjQzRTNCQzAyMERBREI4MDAwQTRFN0VEIC8qIGZpeGVkLW5hdi1i
YXIuaHRtbCAqLywKIAkJCQk5MzU3NUM1NTFEMzAzNjZFMDAwRDYwNEQgLyogZm9jdXMtaW5wdXRz
Lmh0bWwgKi8sCiAJCQkJRjQ2MTI4RDgyMTFFNDk2MzAwRDlGQURCIC8qIGZ1bGwtcGFnZS1kcm9w
em9uZS5odG1sICovLAotCQkJCUNEQjQ3NzYxMjU1Njg5NEIwMEZGNUQyQSAvKiBmdWxsLXNjcmVl
bi1zY3JvbGwtcG9zaXRpb24uaHRtbCAqLywKIAkJCQlGNEY0MDVCQTFENEMwQ0Y4MDA3QTk3MDcg
LyogZnVsbC1zaXplLWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCAqLywKIAkJCQlD
RDc4RTExQjFEQjdFQTM2MDAxNEEyREUgLyogRnVsbHNjcmVlbkRlbGVnYXRlLmh0bWwgKi8sCiAJ
CQkJM0ZCRDFCNDkxRDM5RDFEQjAwRTZENkZBIC8qIEZ1bGxzY3JlZW5MYXlvdXRDb25zdHJhaW50
cy5odG1sICovLApAQCAtMzkxOCw2ICszOTIyLDcgQEAKIAkJCQk0NkM1MTlFMzFEMzU2Mjk2MDBE
QUE1MUEgLyogTG9jYWxTdG9yYWdlTnVsbEVudHJpZXMubG9jYWxzdG9yYWdlICovLAogCQkJCTQ2
QzUxOUU0MUQzNTYyOTYwMERBQTUxQSAvKiBMb2NhbFN0b3JhZ2VOdWxsRW50cmllcy5sb2NhbHN0
b3JhZ2Utc2htICovLAogCQkJCTdBNkEyQzcxMURDQ0ZCMDIwMEMwRDA4NSAvKiBMb2NhbFN0b3Jh
Z2VRdWlya0VuYWJsZWQuaHRtbCAqLywKKwkJCQkwNzk0NzQyQzI1Q0IzM0IwMDBDNTk3RUIgLyog
bWVkaWEtcmVtb3RlLmh0bWwgKi8sCiAJCQkJOUI1OUYxMjkyMDM0MDg1NDAwOUU2M0Q1IC8qIG1z
by1saXN0LWNvbXBhdC1tb2RlLmh0bWwgKi8sCiAJCQkJOUJDRDQxMTkyMDZENUVENzAwMUQ3MUJF
IC8qIG1zby1saXN0LW9uLWg0Lmh0bWwgKi8sCiAJCQkJOUJGMzU2Q0MyMDJENDRGMjAwRjcxMTYw
IC8qIG1zby1saXN0Lmh0bWwgKi8sCkBAIC01Mjc4LDcgKzUyODMsNiBAQAogCQkJCUNENzhFMTFE
MURCN0VBNjYwMDE0QTJERSAvKiBGdWxsc2NyZWVuRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywK
IAkJCQlDREIyMTNCRDI0RUY1MjI4MDBGREUzMDEgLyogRnVsbHNjcmVlbkZvY3VzLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJQ0RFNzdEMjUyNUE2NTkxQzAwRDQxMTVFIC8qIEZ1bGxzY3JlZW5Qb2lu
dGVyTGVhdmUubW0gaW4gU291cmNlcyAqLywKLQkJCQlDREI0Nzc2MDI1NTY4ODY4MDBGRjVEMkEg
LyogRnVsbFNjcmVlblNjcm9sbFBvc2l0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RCRkND
NDUxQTlGRjQ1MzAwQTdCNjkxIC8qIEZ1bGxzY3JlZW5ab29tSW5pdGlhbEZyYW1lLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJODNEQjc5NjkxRUY2M0IzQzAwQkZBNUU1IC8qIEZ1bmN0aW9uLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUY4MUE0MTFBRTYwMDQ0N0M0QyAvKiBHZW9sb2NhdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTUzNzksNiArNTM4Myw3IEBACiAJCQkJQ0QwMzcwRTMy
NEE0NEQ5NjAwQkEzQ0FFIC8qIE1lZGlhTG9hZGluZy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3
RUY3NkQ1MjU0MEZDMDYwMDUzRUQ1MyAvKiBNZWRpYU11dGVkU3RhdGUubW0gaW4gU291cmNlcyAq
LywKIAkJCQlDREEzMTU5ODFFRDUzNjUxMDA5RjYwRDMgLyogTWVkaWFQbGF5YmFja1NsZWVwQXNz
ZXJ0aW9uLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMDc5NDc0MEQyNUNBMEJERTAwQzU5N0VCIC8q
IE1lZGlhU2Vzc2lvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQzk0NDJFMUVGMUZDMDgwMDU5
QzNDNCAvKiBNZWRpYVN0cmVhbVRyYWNrRGV0YWNoZWQubW0gaW4gU291cmNlcyAqLywKIAkJCQk1
MUJFOUU2NjIzNzYwODlGMDBCNEUxMTcgLyogTWVkaWFUeXBlLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0NDRTdFQzUxQTQxMUE3RTAwNDQ3QzRDIC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJl
c291cmNlTG9hZERlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL01lZGlhU2Vzc2lvbi5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTWVkaWFTZXNzaW9uLm1tCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjgyZGRkMGQ5MTU2YjE0MjkzYTA5MTJlOWE5YWMyZDE4OGViODM3NmYKLS0tIC9kZXYvbnVsbAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL01lZGlhU2Vzc2lvbi5t
bQpAQCAtMCwwICsxLDM3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisj
aWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoTUVESUFfU0VTU0lPTikKKworI2ltcG9ydCAiUGxh
dGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3QuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZp
ZXcuaCIKKyNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgorI2ltcG9ydCA8
V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQv
V0tXZWJWaWV3UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dlYlZpZXdQcml2YXRlLmg+Cisj
aW1wb3J0IDxwYWwvc3BpL21hYy9NZWRpYVJlbW90ZVNQSS5oPgorI2ltcG9ydCA8d3RmL0Z1bmN0
aW9uLmg+CisjaW1wb3J0IDx3dGYvSGFzaFNldC5oPgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CisjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1N0
cmluZ0hhc2guaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitTT0ZUX0xJTktf
UFJJVkFURV9GUkFNRVdPUksoTWVkaWFSZW1vdGUpCisKK1NPRlRfTElOSyhNZWRpYVJlbW90ZSwg
TVJNZWRpYVJlbW90ZVNlbmRDb21tYW5kVG9BcHAsIEJvb2xlYW4sIChNUk1lZGlhUmVtb3RlQ29t
bWFuZCBjb21tYW5kLCBDRkRpY3Rpb25hcnlSZWYgb3B0aW9ucywgTVJPcmlnaW5SZWYgb3JpZ2lu
LCBDRlN0cmluZ1JlZiBhcHBEaXNwbGF5SUQsIE1SU2VuZENvbW1hbmRBcHBPcHRpb25zIGFwcE9w
dGlvbnMsIGRpc3BhdGNoX3F1ZXVlX3QgcmVwbHlRLCB2b2lkKF5jb21wbGV0aW9uKShNUlNlbmRD
b21tYW5kRXJyb3IgZXJyLCBDRkFycmF5UmVmIGhhbmRsZXJSZXR1cm5TdGF0dXNlcykpLCAoY29t
bWFuZCwgb3B0aW9ucywgb3JpZ2luLCBhcHBEaXNwbGF5SUQsIGFwcE9wdGlvbnMsIHJlcGx5USwg
Y29tcGxldGlvbikpOworI2RlZmluZSBNUk1lZGlhUmVtb3RlU2VuZENvbW1hbmRUb0FwcCBzb2Z0
TGlua01STWVkaWFSZW1vdGVTZW5kQ29tbWFuZFRvQXBwCisKK1NPRlRfTElOSyhNZWRpYVJlbW90
ZSwgTVJNZWRpYVJlbW90ZUdldExvY2FsT3JpZ2luLCBNUk9yaWdpblJlZiwgKCksICgpKTsKKyNk
ZWZpbmUgTVJNZWRpYVJlbW90ZUdldExvY2FsT3JpZ2luIHNvZnRMaW5rTVJNZWRpYVJlbW90ZUdl
dExvY2FsT3JpZ2luCisKK1NPRlRfTElOSyhNZWRpYVJlbW90ZSwgTVJNZWRpYVJlbW90ZUdldFN1
cHBvcnRlZENvbW1hbmRzRm9yT3JpZ2luLCB2b2lkLCAoTVJPcmlnaW5SZWYgb3JpZ2luLCBkaXNw
YXRjaF9xdWV1ZV90IHF1ZXVlLCB2b2lkKF5jb21wbGV0aW9uKShDRkFycmF5UmVmIGNvbW1hbmRz
KSksIChvcmlnaW4sIHF1ZXVlLCBjb21wbGV0aW9uKSk7CisjZGVmaW5lIE1STWVkaWFSZW1vdGVH
ZXRTdXBwb3J0ZWRDb21tYW5kc0Zvck9yaWdpbiBzb2Z0TGlua01STWVkaWFSZW1vdGVHZXRTdXBw
b3J0ZWRDb21tYW5kc0Zvck9yaWdpbgorCitTT0ZUX0xJTksoTWVkaWFSZW1vdGUsIE1STWVkaWFS
ZW1vdGVHZXROb3dQbGF5aW5nQ2xpZW50LCB2b2lkLCAoZGlzcGF0Y2hfcXVldWVfdCBxdWV1ZSwg
dm9pZCheY29tcGxldGlvbikoTVJOb3dQbGF5aW5nQ2xpZW50UmVmLCBDRkVycm9yUmVmKSksIChx
dWV1ZSwgY29tcGxldGlvbikpCisjZGVmaW5lIE1STWVkaWFSZW1vdGVHZXROb3dQbGF5aW5nQ2xp
ZW50IHNvZnRMaW5rTVJNZWRpYVJlbW90ZUdldE5vd1BsYXlpbmdDbGllbnQKKworU09GVF9MSU5L
KE1lZGlhUmVtb3RlLCBNUk5vd1BsYXlpbmdDbGllbnRHZXRQcm9jZXNzSWRlbnRpZmllciwgcGlk
X3QsIChNUk5vd1BsYXlpbmdDbGllbnRSZWYgY2xpZW50KSwgKGNsaWVudCkpCisjZGVmaW5lIE1S
Tm93UGxheWluZ0NsaWVudEdldFByb2Nlc3NJZGVudGlmaWVyIHNvZnRMaW5rTVJOb3dQbGF5aW5n
Q2xpZW50R2V0UHJvY2Vzc0lkZW50aWZpZXIKKworU09GVF9MSU5LX0NPTlNUQU5UKE1lZGlhUmVt
b3RlLCBrTVJNZWRpYVJlbW90ZU9wdGlvblNraXBJbnRlcnZhbCwgQ0ZTdHJpbmdSZWYpCisjZGVm
aW5lIGtNUk1lZGlhUmVtb3RlT3B0aW9uU2tpcEludGVydmFsIGdldGtNUk1lZGlhUmVtb3RlT3B0
aW9uU2tpcEludGVydmFsKCkKKworU09GVF9MSU5LX0NPTlNUQU5UKE1lZGlhUmVtb3RlLCBrTVJN
ZWRpYVJlbW90ZU9wdGlvblBsYXliYWNrUG9zaXRpb24sIENGU3RyaW5nUmVmKQorI2RlZmluZSBr
TVJNZWRpYVJlbW90ZU9wdGlvblBsYXliYWNrUG9zaXRpb24gZ2V0a01STWVkaWFSZW1vdGVPcHRp
b25QbGF5YmFja1Bvc2l0aW9uKCkKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitjbGFz
cyBNZWRpYVNlc3Npb25UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworcHVibGljOgorICAg
IHZvaWQgU2V0VXAoKSBmaW5hbAorICAgIHsKKyAgICAgICAgX2NvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgICAgICBbX2Nv
bmZpZ3VyYXRpb24gc2V0TWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjazpX
S0F1ZGlvdmlzdWFsTWVkaWFUeXBlQXVkaW9dOworCisgICAgICAgIF93ZWJWaWV3ID0gYWRvcHRO
UyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAz
MDAsIDMwMCkgY29uZmlndXJhdGlvbjpfY29uZmlndXJhdGlvbi5nZXQoKSBhZGRUb1dpbmRvdzpZ
RVNdKTsKKworICAgICAgICBXS1ByZWZlcmVuY2VzICpwcmVmZXJlbmNlcyA9IFtfd2ViVmlldyBj
b25maWd1cmF0aW9uXS5wcmVmZXJlbmNlczsKKyAgICAgICAgcHJlZmVyZW5jZXMuX21lZGlhU2Vz
c2lvbkVuYWJsZWQgPSBZRVM7CisKKyAgICAgICAgX21lc3NhZ2VIYW5kbGVycyA9IGFkb3B0TlMo
W1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgIH0KKworICAgIHZvaWQgVGVhckRv
d24oKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgW193ZWJWaWV3IGNsZWFyTWVzc2FnZUhhbmRs
ZXJzOl9tZXNzYWdlSGFuZGxlcnMuZ2V0KCldOworICAgIH0KKworICAgIFRlc3RXS1dlYlZpZXcq
IHdlYlZpZXcoKSB7IHJldHVybiBfd2ViVmlldy5nZXQoKTsgfQorCisgICAgcGlkX3Qgd2ViVmll
d1BpZCgpIHsgcmV0dXJuIFtfd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdOyB9CisKKyAg
ICBSZXRhaW5QdHI8TVJOb3dQbGF5aW5nQ2xpZW50UmVmPiBnZXROb3dQbGF5aW5nQ2xpZW50KCkK
KyAgICB7CisgICAgICAgIGJvb2wgZ290Tm93UGxheWluZyA9IGZhbHNlOworICAgICAgICBSZXRh
aW5QdHI8TVJOb3dQbGF5aW5nQ2xpZW50UmVmPiBub3dQbGF5aW5nQ2xpZW50OworICAgICAgICBN
Uk1lZGlhUmVtb3RlR2V0Tm93UGxheWluZ0NsaWVudChkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBbJl0gKE1STm93UGxheWluZ0NsaWVudFJlZiBwbGF5ZXIsIENGRXJyb3JSZWYgZXJyb3IpIHsK
KyAgICAgICAgICAgIGlmICghZXJyb3IgJiYgcGxheWVyKQorICAgICAgICAgICAgICAgIG5vd1Bs
YXlpbmdDbGllbnQgPSBwbGF5ZXI7CisgICAgICAgICAgICBnb3ROb3dQbGF5aW5nID0gdHJ1ZTsK
KyAgICAgICAgfSk7CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZ290Tm93UGxh
eWluZyk7CisgICAgICAgIHJldHVybiBub3dQbGF5aW5nQ2xpZW50OworICAgIH0KKworICAgIHBp
ZF90IGdldE5vd1BsYXlpbmdDbGllbnRQaWQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE1STm93
UGxheWluZ0NsaWVudEdldFByb2Nlc3NJZGVudGlmaWVyKGdldE5vd1BsYXlpbmdDbGllbnQoKS5n
ZXQoKSk7CisgICAgfQorCisgICAgdm9pZCBsb2FkUGFnZUFuZEJlY29tZU5vd1BsYXlpbmcoY29u
c3QgU3RyaW5nJiBwYWdlTmFtZSkKKyAgICB7CisgICAgICAgIFtfd2ViVmlldyBzeW5jaHJvbm91
c2x5TG9hZFRlc3RQYWdlTmFtZWQ6cGFnZU5hbWVdOworCisgICAgICAgIGJvb2wgY2FucGxheXRo
cm91Z2ggPSBmYWxzZTsKKyAgICAgICAgW3dlYlZpZXcoKSBwZXJmb3JtQWZ0ZXJSZWNlaXZpbmdN
ZXNzYWdlOkAiY2FucGxheXRocm91Z2ggZXZlbnQiIGFjdGlvbjpbJl0geworICAgICAgICAgICAg
Y2FucGxheXRocm91Z2ggPSB0cnVlOworICAgICAgICB9XTsKKyAgICAgICAgcnVuU2NyaXB0V2l0
aFVzZXJHZXN0dXJlKCJsb2FkKCkiKTsKKyAgICAgICAgVXRpbDo6cnVuKCZjYW5wbGF5dGhyb3Vn
aCk7CisKKyAgICAgICAgcGxheSgpOworICAgICAgICBwYXVzZSgpOworICAgICAgICBBU1NFUlRf
RVEod2ViVmlld1BpZCgpLCBnZXROb3dQbGF5aW5nQ2xpZW50UGlkKCkpOworICAgIH0KKworICAg
IHZvaWQgcnVuU2NyaXB0V2l0aFVzZXJHZXN0dXJlKGNvbnN0IFN0cmluZyYgc2NyaXB0KQorICAg
IHsKKyAgICAgICAgYm9vbCBjb21wbGV0ZSA9IGZhbHNlOworICAgICAgICBbX3dlYlZpZXcgZXZh
bHVhdGVKYXZhU2NyaXB0OnNjcmlwdCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkLCBOU0Vycm9y
ICopIHsgY29tcGxldGUgPSB0cnVlOyB9XTsKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZjb21wbGV0ZSk7CisgICAgfQorCisgICAgdm9pZCBwbGF5KCkKKyAgICB7CisgICAgICAg
IGJvb2wgcGxheWluZyA9IGZhbHNlOworICAgICAgICBbX3dlYlZpZXcgcGVyZm9ybUFmdGVyUmVj
ZWl2aW5nTWVzc2FnZTpAInBsYXkgZXZlbnQiIGFjdGlvbjpbJl0geyBwbGF5aW5nID0gdHJ1ZTsg
fV07CisgICAgICAgIHJ1blNjcmlwdFdpdGhVc2VyR2VzdHVyZSgiYXVkaW8ucGxheSgpIik7Cisg
ICAgICAgIFV0aWw6OnJ1bigmcGxheWluZyk7CisgICAgfQorCisgICAgdm9pZCBwYXVzZSgpCisg
ICAgeworICAgICAgICBib29sIHBhdXNlZCA9IGZhbHNlOworICAgICAgICBbX3dlYlZpZXcgcGVy
Zm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAInBhdXNlIGV2ZW50IiBhY3Rpb246WyZdIHsgcGF1
c2VkID0gdHJ1ZTsgfV07CisgICAgICAgIHJ1blNjcmlwdFdpdGhVc2VyR2VzdHVyZSgiYXVkaW8u
cGF1c2UoKSIpOworICAgICAgICBVdGlsOjpydW4oJnBhdXNlZCk7CisgICAgfQorCisgICAgYm9v
bCBzZW5kTWVkaWFSZW1vdGVDb21tYW5kKE1STWVkaWFSZW1vdGVDb21tYW5kIGNvbW1hbmQsIENG
RGljdGlvbmFyeVJlZiBvcHRpb25zID0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIGJvb2wgY29t
cGxldGVkID0gZmFsc2U7CisgICAgICAgIGJvb2wgc3VjY2VzczsKKworICAgICAgICBNUk1lZGlh
UmVtb3RlU2VuZENvbW1hbmRUb0FwcChjb21tYW5kLCBvcHRpb25zLCBOVUxMLCBOVUxMLCBzdGF0
aWNfY2FzdDxNUlNlbmRDb21tYW5kQXBwT3B0aW9ucz4oMCksIE5VTEwsIFsmXSAoTVJTZW5kQ29t
bWFuZEVycm9yIGVycm9yLCBDRkFycmF5UmVmKSB7CisgICAgICAgICAgICBzdWNjZXNzID0gIWVy
cm9yOworICAgICAgICAgICAgY29tcGxldGVkID0gdHJ1ZTsKKyAgICAgICAgfSk7CisgICAgICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmY29tcGxldGVkKTsKKworICAgICAgICByZXR1cm4g
c3VjY2VzczsKKyAgICB9CisKKyAgICBib29sIHNlbmRNZWRpYVJlbW90ZVNlZWtDb21tYW5kKE1S
TWVkaWFSZW1vdGVDb21tYW5kIGNvbW1hbmQsIGRvdWJsZSBpbnRlcnZhbCkKKyAgICB7CisgICAg
ICAgIENGU3RyaW5nUmVmIHNlZWtJbnRlcnZhbCA9IChjb21tYW5kID09IE1STWVkaWFSZW1vdGVD
b21tYW5kU2Vla1RvUGxheWJhY2tQb3NpdGlvbikgPyBrTVJNZWRpYVJlbW90ZU9wdGlvblBsYXli
YWNrUG9zaXRpb24gOiBrTVJNZWRpYVJlbW90ZU9wdGlvblNraXBJbnRlcnZhbDsKKyAgICAgICAg
TlNEaWN0aW9uYXJ5ICpvcHRpb25zID0gQHsoX19icmlkZ2UgTlNTdHJpbmcgKilzZWVrSW50ZXJ2
YWwgOiBAKGludGVydmFsKX07CisgICAgICAgIHJldHVybiBzZW5kTWVkaWFSZW1vdGVDb21tYW5k
KGNvbW1hbmQsIChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpb3B0aW9ucyk7CisgICAgfQorCisg
ICAgdm9pZCBsaXN0ZW5Gb3JFdmVudE1lc3NhZ2VzKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxjb25z
dCBjaGFyKj4gZXZlbnRzKQorICAgIHsKKyAgICAgICAgZm9yIChhdXRvKiBldmVudCA6IGV2ZW50
cykgeworICAgICAgICAgICAgYXV0byBldmVudE1lc3NhZ2UgPSBtYWtlU3RyaW5nKGV2ZW50LCAi
IGV2ZW50Iik7CisgICAgICAgICAgICBbX21lc3NhZ2VIYW5kbGVycyBhZGRPYmplY3Q6ZXZlbnRN
ZXNzYWdlXTsKKyAgICAgICAgICAgIFt3ZWJWaWV3KCkgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVz
c2FnZTpldmVudE1lc3NhZ2UgYWN0aW9uOlt0aGlzLCBldmVudE1lc3NhZ2UgPSBXVEZNb3ZlKGV2
ZW50TWVzc2FnZSldIHsKKyAgICAgICAgICAgICAgICBfZXZlbnRMaXN0ZW5lcnNDYWxsZWQuYWRk
KGV2ZW50TWVzc2FnZSk7CisgICAgICAgICAgICB9XTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGJvb2wgZXZlbnRMaXN0ZW5lcldhc0NhbGxlZChjb25zdCBTdHJpbmcmIGV2ZW50KQorICAgIHsK
KyAgICAgICAgcmV0dXJuIF9ldmVudExpc3RlbmVyc0NhbGxlZC5jb250YWlucyhtYWtlU3RyaW5n
KGV2ZW50LCAiIGV2ZW50IikpOworICAgIH0KKworICAgIHZvaWQgd2FpdEZvckV2ZW50TGlzdGVu
ZXJUb0JlQ2FsbGVkKGNvbnN0IFN0cmluZyYgZXZlbnQpCisgICAgeworICAgICAgICBpbnQgdHJp
ZXMgPSAwOworICAgICAgICBkbyB7CisgICAgICAgICAgICBpZiAoZXZlbnRMaXN0ZW5lcldhc0Nh
bGxlZChldmVudCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgVXRpbDo6
c2xlZXAoMC4xKTsKKyAgICAgICAgfSB3aGlsZSAoKyt0cmllcyA8PSA1MCk7CisKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIHZvaWQgbGlzdGVuRm9yU2Vzc2lvbkhhbmRsZXJNZXNzYWdl
cyhzdGQ6OmluaXRpYWxpemVyX2xpc3Q8Y29uc3QgY2hhcio+IGhhbmRsZXJzKQorICAgIHsKKyAg
ICAgICAgZm9yIChhdXRvKiBoYW5kbGVyIDogaGFuZGxlcnMpIHsKKyAgICAgICAgICAgIGF1dG8g
aGFuZGxlck1lc3NhZ2UgPSBtYWtlU3RyaW5nKGhhbmRsZXIsICIgaGFuZGxlciIpOworICAgICAg
ICAgICAgW19tZXNzYWdlSGFuZGxlcnMgYWRkT2JqZWN0OmhhbmRsZXJNZXNzYWdlXTsKKyAgICAg
ICAgICAgIFt3ZWJWaWV3KCkgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpoYW5kbGVyTWVz
c2FnZSBhY3Rpb246W3RoaXMsIGhhbmRsZXJNZXNzYWdlID0gV1RGTW92ZShoYW5kbGVyTWVzc2Fn
ZSldIHsKKyAgICAgICAgICAgICAgICBfbWVkaWFTZXNzaW9uSGFuZGxlcnNDYWxsZWQuYWRkKGhh
bmRsZXJNZXNzYWdlKTsKKyAgICAgICAgICAgIH1dOworICAgICAgICB9CisgICAgfQorCisgICAg
Ym9vbCBzZXNzaW9uSGFuZGxlcldhc0NhbGxlZChjb25zdCBTdHJpbmcmIGhhbmRsZXIpCisgICAg
eworICAgICAgICByZXR1cm4gX21lZGlhU2Vzc2lvbkhhbmRsZXJzQ2FsbGVkLmNvbnRhaW5zKG1h
a2VTdHJpbmcoaGFuZGxlciwgIiBoYW5kbGVyIikpOworICAgIH0KKworICAgIHZvaWQgd2FpdEZv
clNlc3Npb25IYW5kbGVyVG9CZUNhbGxlZChjb25zdCBTdHJpbmcmIGhhbmRsZXIpCisgICAgewor
ICAgICAgICBpbnQgdHJpZXMgPSAwOworICAgICAgICBkbyB7CisgICAgICAgICAgICBpZiAoc2Vz
c2lvbkhhbmRsZXJXYXNDYWxsZWQoaGFuZGxlcikpCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgVXRpbDo6c2xlZXAoMC4xKTsKKyAgICAgICAgfSB3aGlsZSAoKyt0cmllcyA8
PSA1MCk7CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJldGFpblB0cjxOU0FycmF5
PiBnZXRTdXBwb3J0ZWRDb21tYW5kcygpCisgICAgeworICAgICAgICBib29sIGNvbXBsZXRlZCA9
IGZhbHNlOworICAgICAgICBSZXRhaW5QdHI8TlNBcnJheT4gcmVzdWx0OworCisgICAgICAgIE1S
TWVkaWFSZW1vdGVHZXRTdXBwb3J0ZWRDb21tYW5kc0Zvck9yaWdpbihNUk1lZGlhUmVtb3RlR2V0
TG9jYWxPcmlnaW4oKSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgWyZdIChDRkFycmF5UmVm
IGNvbW1hbmRzKSB7CisgICAgICAgICAgICByZXN1bHQgPSAoX19icmlkZ2UgTlNBcnJheSAqKWNv
bW1hbmRzOworICAgICAgICAgICAgY29tcGxldGVkID0gdHJ1ZTsKKyAgICAgICAgfSk7CisKKyAg
ICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZjb21wbGV0ZWQpOworCisgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgfQorCitwcml2YXRlOgorICAgIFJldGFpblB0cjxXS1dlYlZpZXdD
b25maWd1cmF0aW9uPiBfY29uZmlndXJhdGlvbjsKKyAgICBSZXRhaW5QdHI8VGVzdFdLV2ViVmll
dz4gX3dlYlZpZXc7CisKKyAgICBIYXNoU2V0PFN0cmluZz4gX21lZGlhU2Vzc2lvbkhhbmRsZXJz
Q2FsbGVkOworICAgIEhhc2hTZXQ8U3RyaW5nPiBfZXZlbnRMaXN0ZW5lcnNDYWxsZWQ7CisgICAg
UmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBfbWVzc2FnZUhhbmRsZXJzOworfTsKKworVEVTVF9G
KE1lZGlhU2Vzc2lvblRlc3QsIE9ubHlPbmVIYW5kbGVyKQoreworICAgIGxvYWRQYWdlQW5kQmVj
b21lTm93UGxheWluZygibWVkaWEtcmVtb3RlIik7CisKKyAgICBbd2ViVmlldygpIG9iamVjdEJ5
RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJzZXRFbXB0eUFjdGlvbkhhbmRsZXJzKFsgJ3BsYXknIF0p
Il07CisKKyAgICBsaXN0ZW5Gb3JTZXNzaW9uSGFuZGxlck1lc3NhZ2VzKHsgInBsYXkiLCAicGF1
c2UiLCAic2Vla3RvIiwgInNlZWtmb3J3YXJkIiwgInNlZWtiYWNrd2FyZCIsICJwcmV2aW91c3Ry
YWNrIiwgIm5leHR0cmFjayIgfSk7CisgICAgbGlzdGVuRm9yRXZlbnRNZXNzYWdlcyh7ICJwbGF5
IiwgInBhdXNlIiwgInNlZWtlZCIgfSk7CisKKyAgICBzdGF0aWMgVmVjdG9yPE1STWVkaWFSZW1v
dGVDb21tYW5kPiByZWdpc3RlcmVkQ29tbWFuZHMgPSB7IE1STWVkaWFSZW1vdGVDb21tYW5kUGxh
eSB9OworICAgIGF1dG8gY3VycmVudENvbW1hbmRzID0gZ2V0U3VwcG9ydGVkQ29tbWFuZHMoKTsK
KyAgICBmb3IgKE1SQ29tbWFuZEluZm8gKmNvbW1hbmQgaW4gY3VycmVudENvbW1hbmRzLmdldCgp
KSB7CisgICAgICAgIGlmICghY29tbWFuZC5lbmFibGVkKQorICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIAorICAgICAgICBBU1NFUlRfVFJVRShyZWdpc3RlcmVkQ29tbWFuZHMuY29udGFp
bnMoY29tbWFuZC5jb21tYW5kKSk7CisgICAgfQorCisgICAgQVNTRVJUX1RSVUUoc2VuZE1lZGlh
UmVtb3RlQ29tbWFuZChNUk1lZGlhUmVtb3RlQ29tbWFuZFBsYXkpKTsKKyAgICB3YWl0Rm9yU2Vz
c2lvbkhhbmRsZXJUb0JlQ2FsbGVkKCJwbGF5Iik7CisgICAgQVNTRVJUX1RSVUUoc2Vzc2lvbkhh
bmRsZXJXYXNDYWxsZWQoInBsYXkiKSk7CisgICAgQVNTRVJUX0ZBTFNFKGV2ZW50TGlzdGVuZXJX
YXNDYWxsZWQoInBsYXkiKSk7CisKKyAgICAvLyBUaGUgbWVkaWEgc2Vzc2lvbiBvbmx5IHJlZ2lz
dGVyZWQgZm9yIFBsYXksIGJ1dCBubyBvdGhlciBjb21tYW5kcyBzaG91bGQgcmVhY2ggSFRNTE1l
ZGlhRWxlbWVudC4KKyAgICBBU1NFUlRfVFJVRShzZW5kTWVkaWFSZW1vdGVTZWVrQ29tbWFuZChN
Uk1lZGlhUmVtb3RlQ29tbWFuZFNraXBGb3J3YXJkLCAxKSk7CisgICAgQVNTRVJUX0ZBTFNFKHNl
c3Npb25IYW5kbGVyV2FzQ2FsbGVkKCJzZWVrZm9yd2FyZCIpKTsKKyAgICBBU1NFUlRfRkFMU0Uo
ZXZlbnRMaXN0ZW5lcldhc0NhbGxlZCgic2Vla2VkIikpOworCisgICAgQVNTRVJUX1RSVUUoc2Vu
ZE1lZGlhUmVtb3RlU2Vla0NvbW1hbmQoTVJNZWRpYVJlbW90ZUNvbW1hbmRTa2lwQmFja3dhcmQs
IDEwKSk7CisgICAgQVNTRVJUX0ZBTFNFKHNlc3Npb25IYW5kbGVyV2FzQ2FsbGVkKCJzZWVrYmFj
a3dhcmQiKSk7CisgICAgQVNTRVJUX0ZBTFNFKGV2ZW50TGlzdGVuZXJXYXNDYWxsZWQoInNlZWtl
ZCIpKTsKKworICAgIEFTU0VSVF9UUlVFKHNlbmRNZWRpYVJlbW90ZVNlZWtDb21tYW5kKE1STWVk
aWFSZW1vdGVDb21tYW5kU2Vla1RvUGxheWJhY2tQb3NpdGlvbiwgNikpOworICAgIEFTU0VSVF9G
QUxTRShzZXNzaW9uSGFuZGxlcldhc0NhbGxlZCgic2Vla3RvIikpOworICAgIEFTU0VSVF9GQUxT
RShldmVudExpc3RlbmVyV2FzQ2FsbGVkKCJzZWVrZWQiKSk7CisKKyAgICBBU1NFUlRfVFJVRShz
ZW5kTWVkaWFSZW1vdGVDb21tYW5kKE1STWVkaWFSZW1vdGVDb21tYW5kTmV4dFRyYWNrKSk7Cisg
ICAgQVNTRVJUX0ZBTFNFKHNlc3Npb25IYW5kbGVyV2FzQ2FsbGVkKCJuZXh0dHJhY2siKSk7CisK
KyAgICBBU1NFUlRfVFJVRShzZW5kTWVkaWFSZW1vdGVDb21tYW5kKE1STWVkaWFSZW1vdGVDb21t
YW5kUHJldmlvdXNUcmFjaykpOworICAgIEFTU0VSVF9GQUxTRShzZXNzaW9uSGFuZGxlcldhc0Nh
bGxlZCgicHJldmlvdXN0cmFjayIpKTsKK30KKworVEVTVF9GKE1lZGlhU2Vzc2lvblRlc3QsIFJl
bW90ZUNvbW1hbmRzKQoreworICAgIGxvYWRQYWdlQW5kQmVjb21lTm93UGxheWluZygibWVkaWEt
cmVtb3RlIik7CisKKyAgICBbd2ViVmlldygpIG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6
QCJzZXRFbXB0eUFjdGlvbkhhbmRsZXJzKFsgJ3BsYXknLCAncGF1c2UnLCAnc2Vla3RvJywgJ3Nl
ZWtmb3J3YXJkJywgJ3NlZWtiYWNrd2FyZCcsICdwcmV2aW91c3RyYWNrJywgJ25leHR0cmFjaycg
XSkiXTsKKworICAgIGxpc3RlbkZvclNlc3Npb25IYW5kbGVyTWVzc2FnZXMoeyAicGxheSIsICJw
YXVzZSIsICJzZWVrdG8iLCAic2Vla2ZvcndhcmQiLCAic2Vla2JhY2t3YXJkIiwgInByZXZpb3Vz
dHJhY2siLCAibmV4dHRyYWNrIiB9KTsKKyAgICBsaXN0ZW5Gb3JFdmVudE1lc3NhZ2VzKHsgInBs
YXkiLCAicGF1c2UiLCAic2Vla2VkIiB9KTsKKworICAgIHN0YXRpYyBWZWN0b3I8TVJNZWRpYVJl
bW90ZUNvbW1hbmQ+IHJlZ2lzdGVyZWRDb21tYW5kcyA9IHsgTVJNZWRpYVJlbW90ZUNvbW1hbmRQ
bGF5LCBNUk1lZGlhUmVtb3RlQ29tbWFuZFBhdXNlLCBNUk1lZGlhUmVtb3RlQ29tbWFuZFNlZWtU
b1BsYXliYWNrUG9zaXRpb24sIE1STWVkaWFSZW1vdGVDb21tYW5kU2tpcEZvcndhcmQsIE1STWVk
aWFSZW1vdGVDb21tYW5kU2tpcEJhY2t3YXJkLCBNUk1lZGlhUmVtb3RlQ29tbWFuZFByZXZpb3Vz
VHJhY2ssIE1STWVkaWFSZW1vdGVDb21tYW5kTmV4dFRyYWNrIH07CisgICAgYXV0byBjdXJyZW50
Q29tbWFuZHMgPSBnZXRTdXBwb3J0ZWRDb21tYW5kcygpOworICAgIGZvciAoTVJDb21tYW5kSW5m
byAqY29tbWFuZCBpbiBjdXJyZW50Q29tbWFuZHMuZ2V0KCkpIHsKKyAgICAgICAgaWYgKCFjb21t
YW5kLmVuYWJsZWQpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgCisgICAgICAgIEFT
U0VSVF9UUlVFKHJlZ2lzdGVyZWRDb21tYW5kcy5jb250YWlucyhjb21tYW5kLmNvbW1hbmQpKTsK
KyAgICB9CisKKyAgICBBU1NFUlRfVFJVRShzZW5kTWVkaWFSZW1vdGVDb21tYW5kKE1STWVkaWFS
ZW1vdGVDb21tYW5kUGxheSkpOworICAgIHdhaXRGb3JTZXNzaW9uSGFuZGxlclRvQmVDYWxsZWQo
InBsYXkiKTsKKyAgICBBU1NFUlRfVFJVRShzZXNzaW9uSGFuZGxlcldhc0NhbGxlZCgicGxheSIp
KTsKKyAgICBBU1NFUlRfRkFMU0UoZXZlbnRMaXN0ZW5lcldhc0NhbGxlZCgicGxheSIpKTsKKwor
ICAgIEFTU0VSVF9UUlVFKHNlbmRNZWRpYVJlbW90ZUNvbW1hbmQoTVJNZWRpYVJlbW90ZUNvbW1h
bmRQYXVzZSkpOworICAgIHdhaXRGb3JTZXNzaW9uSGFuZGxlclRvQmVDYWxsZWQoInBhdXNlIik7
CisgICAgQVNTRVJUX1RSVUUoc2Vzc2lvbkhhbmRsZXJXYXNDYWxsZWQoInBhdXNlIikpOworICAg
IEFTU0VSVF9GQUxTRShldmVudExpc3RlbmVyV2FzQ2FsbGVkKCJwYXVzZSIpKTsKKworICAgIEFT
U0VSVF9UUlVFKHNlbmRNZWRpYVJlbW90ZVNlZWtDb21tYW5kKE1STWVkaWFSZW1vdGVDb21tYW5k
U2tpcEZvcndhcmQsIDEpKTsKKyAgICB3YWl0Rm9yU2Vzc2lvbkhhbmRsZXJUb0JlQ2FsbGVkKCJz
ZWVrZm9yd2FyZCIpOworICAgIEFTU0VSVF9UUlVFKHNlc3Npb25IYW5kbGVyV2FzQ2FsbGVkKCJz
ZWVrZm9yd2FyZCIpKTsKKyAgICBBU1NFUlRfRkFMU0UoZXZlbnRMaXN0ZW5lcldhc0NhbGxlZCgi
c2Vla2VkIikpOworCisgICAgQVNTRVJUX1RSVUUoc2VuZE1lZGlhUmVtb3RlU2Vla0NvbW1hbmQo
TVJNZWRpYVJlbW90ZUNvbW1hbmRTa2lwQmFja3dhcmQsIDEwKSk7CisgICAgd2FpdEZvclNlc3Np
b25IYW5kbGVyVG9CZUNhbGxlZCgic2Vla2JhY2t3YXJkIik7CisgICAgQVNTRVJUX1RSVUUoc2Vz
c2lvbkhhbmRsZXJXYXNDYWxsZWQoInNlZWtiYWNrd2FyZCIpKTsKKyAgICBBU1NFUlRfRkFMU0Uo
ZXZlbnRMaXN0ZW5lcldhc0NhbGxlZCgic2Vla2VkIikpOworCisgICAgQVNTRVJUX1RSVUUoc2Vu
ZE1lZGlhUmVtb3RlU2Vla0NvbW1hbmQoTVJNZWRpYVJlbW90ZUNvbW1hbmRTZWVrVG9QbGF5YmFj
a1Bvc2l0aW9uLCA2KSk7CisgICAgd2FpdEZvclNlc3Npb25IYW5kbGVyVG9CZUNhbGxlZCgic2Vl
a3RvIik7CisgICAgQVNTRVJUX1RSVUUoc2Vzc2lvbkhhbmRsZXJXYXNDYWxsZWQoInNlZWt0byIp
KTsKKyAgICBBU1NFUlRfRkFMU0UoZXZlbnRMaXN0ZW5lcldhc0NhbGxlZCgic2Vla2VkIikpOwor
CisgICAgQVNTRVJUX1RSVUUoc2VuZE1lZGlhUmVtb3RlQ29tbWFuZChNUk1lZGlhUmVtb3RlQ29t
bWFuZE5leHRUcmFjaykpOworICAgIHdhaXRGb3JTZXNzaW9uSGFuZGxlclRvQmVDYWxsZWQoIm5l
eHR0cmFjayIpOworICAgIEFTU0VSVF9UUlVFKHNlc3Npb25IYW5kbGVyV2FzQ2FsbGVkKCJuZXh0
dHJhY2siKSk7CisKKyAgICBBU1NFUlRfVFJVRShzZW5kTWVkaWFSZW1vdGVDb21tYW5kKE1STWVk
aWFSZW1vdGVDb21tYW5kUHJldmlvdXNUcmFjaykpOworICAgIHdhaXRGb3JTZXNzaW9uSGFuZGxl
clRvQmVDYWxsZWQoInByZXZpb3VzdHJhY2siKTsKKyAgICBBU1NFUlRfVFJVRShzZXNzaW9uSGFu
ZGxlcldhc0NhbGxlZCgicHJldmlvdXN0cmFjayIpKTsKKworICAgIC8vIFVucmVnaXN0ZXIgYWN0
aW9uIGhhbmRsZXJzLCBzdXBwb3J0ZWQgY29tbWFuZHMgc2hvdWxkIGdvIHRvIEhUTUxNZWRpYUVs
ZW1lbnQuCisgICAgW3dlYlZpZXcoKSBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiY2xl
YXJBY3Rpb25IYW5kbGVycygpIl07CisKKyAgICBBU1NFUlRfVFJVRShzZW5kTWVkaWFSZW1vdGVD
b21tYW5kKE1STWVkaWFSZW1vdGVDb21tYW5kUGxheSkpOworICAgIHdhaXRGb3JFdmVudExpc3Rl
bmVyVG9CZUNhbGxlZCgicGxheSIpOworICAgIEFTU0VSVF9UUlVFKGV2ZW50TGlzdGVuZXJXYXND
YWxsZWQoInBsYXkiKSk7CisKKyAgICBBU1NFUlRfVFJVRShzZW5kTWVkaWFSZW1vdGVDb21tYW5k
KE1STWVkaWFSZW1vdGVDb21tYW5kUGF1c2UpKTsKKyAgICB3YWl0Rm9yRXZlbnRMaXN0ZW5lclRv
QmVDYWxsZWQoInBsYXkiKTsKKyAgICBBU1NFUlRfVFJVRShldmVudExpc3RlbmVyV2FzQ2FsbGVk
KCJwYXVzZSIpKTsKKworICAgIEFTU0VSVF9UUlVFKHNlbmRNZWRpYVJlbW90ZVNlZWtDb21tYW5k
KE1STWVkaWFSZW1vdGVDb21tYW5kU2tpcEZvcndhcmQsIDEpKTsKKyAgICB3YWl0Rm9yRXZlbnRM
aXN0ZW5lclRvQmVDYWxsZWQoInNlZWtlZCIpOworICAgIEFTU0VSVF9UUlVFKGV2ZW50TGlzdGVu
ZXJXYXNDYWxsZWQoInNlZWtlZCIpKTsKKworICAgIEFTU0VSVF9UUlVFKHNlbmRNZWRpYVJlbW90
ZVNlZWtDb21tYW5kKE1STWVkaWFSZW1vdGVDb21tYW5kU2tpcEJhY2t3YXJkLCAxMCkpOworICAg
IHdhaXRGb3JFdmVudExpc3RlbmVyVG9CZUNhbGxlZCgic2Vla2VkIik7CisgICAgQVNTRVJUX1RS
VUUoZXZlbnRMaXN0ZW5lcldhc0NhbGxlZCgic2Vla2VkIikpOworCisgICAgQVNTRVJUX1RSVUUo
c2VuZE1lZGlhUmVtb3RlU2Vla0NvbW1hbmQoTVJNZWRpYVJlbW90ZUNvbW1hbmRTZWVrVG9QbGF5
YmFja1Bvc2l0aW9uLCA2KSk7CisgICAgd2FpdEZvckV2ZW50TGlzdGVuZXJUb0JlQ2FsbGVkKCJz
ZWVrZWQiKTsKKyAgICBBU1NFUlRfVFJVRShldmVudExpc3RlbmVyV2FzQ2FsbGVkKCJzZWVrZWQi
KSk7Cit9CisKK30KKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKE1FRElBX1NF
U1NJT04pCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L21lZGlhLXJlbW90ZS5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9tZWRpYS1yZW1vdGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYzk5M2M3Y2Q0MDFhZmYzMmNmMjMyZWRi
Yzg4M2VjZGM3OWJiMzVmCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9tZWRpYS1yZW1vdGUuaHRtbApAQCAtMCwwICsxLDEzOSBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorICAgICNldmVudHNsb2cgewor
ICAgICAgICBmb250LXNpemU6IDEwcHg7IAorICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtICgz
MjBweCkpOworICAgICAgICBvdmVyZmxvdy15OiBzY3JvbGw7CisgICAgICAgIGJvcmRlcjogMXB4
IHNvbGlkIHJnYmEoMTQ3LCAxMjgsIDEwOCwgMC4yNSk7CisgICAgfQorPC9zdHlsZT4KKyAgICA8
c2NyaXB0PgorCisgICAgICAgIGxldCBwbGF5bGlzdCA9IHsKKyAgICAgICAgICAgIGN1cnJlbnQ6
IDAsCisgICAgICAgICAgICBtZXRhZGF0YTogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgdXJsOiAndmlkZW8td2l0aC1hdWRpby5tcDQnLAorICAgICAgICAgICAgICAg
ICAgICB0aXRsZTogJ0JpcCBCb3AgV2l0aCBBdWRpbycsCisgICAgICAgICAgICAgICAgICAgIGFy
dGlzdDogJ1RoZSBCaXAgQm9wIEF1dGhvcnMnLAorICAgICAgICAgICAgICAgICAgICBhbGJ1bTog
J1dlYktpdCBHcmVhdGVzdCBIaXRzJywKKyAgICAgICAgICAgICAgICAgICAgYXJ0d29yazogWwor
CisgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIHVybDogJ3ZpZGVvLXdpdGhvdXQtYXVkaW8ubXA0
JywKKyAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICdCaXAgQm9wIFdpdGhvdXQgQXVkaW8nLAor
ICAgICAgICAgICAgICAgICAgICBhcnRpc3Q6ICdUaGUgQmlwIEJvcCBBdXRob3JzJywKKyAgICAg
ICAgICAgICAgICAgICAgYWxidW06ICdXZWJLaXQgT3JpZ2luYWwgVGVzdCBDb250ZW50JywKKyAg
ICAgICAgICAgICAgICAgICAgYXJ0d29yazogWworCisgICAgICAgICAgICAgICAgICAgIF0sCisg
ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIF0sCisgICAgICAgIH07CisKKyAgICAgICAg
ZnVuY3Rpb24gc2V0TWV0YWRhdGEoZGF0YSkKKyAgICAgICAgeworICAgICAgICAgICAgbmF2aWdh
dG9yLm1lZGlhU2Vzc2lvbi5tZXRhZGF0YSA9IG5ldyBNZWRpYU1ldGFkYXRhKGRhdGEpOworICAg
ICAgICAgICAgcG9zdE1lc3NhZ2UoJ3NldCBtZXRhZGF0YScpCisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBzZXRQbGF5bGlzdE1ldGFkYXRhKGluZGV4KQorICAgICAgICB7CisgICAgICAg
ICAgICBzZXRNZXRhZGF0YShwbGF5bGlzdC5tZXRhZGF0YVtpbmRleF0pOworICAgICAgICAKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNsZWFyQWN0aW9uSGFuZGxlcnMoKQorICAgICAg
ICB7CisgICAgICAgICAgICBzZXRFbXB0eUFjdGlvbkhhbmRsZXJzKFtdKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIHNldEVtcHR5QWN0aW9uSGFuZGxlcnMoaGFuZGxlcnMpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGNvbnN0IGFjdGlvbnMgPSB7CisgICAgICAgICAgICAgICAgJ3Bs
YXknIDogKCkgPT4geyBwb3N0TWVzc2FnZSgncGxheSBoYW5kbGVyJyk7IH0sCisKKyAgICAgICAg
ICAgICAgICAncGF1c2UnIDogKCkgPT4geyBwb3N0TWVzc2FnZSgncGF1c2UgaGFuZGxlcicpIH0s
CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgJ3NlZWt0bycgOiAoZGV0YWlscykg
PT4geyBwb3N0TWVzc2FnZSgnc2Vla3RvIGhhbmRsZXInKSB9LAorCisgICAgICAgICAgICAgICAg
J3NlZWtmb3J3YXJkJyA6IChkZXRhaWxzKSA9PiB7IHBvc3RNZXNzYWdlKCdzZWVrZm9yd2FyZCBo
YW5kbGVyJykgfSwKKworICAgICAgICAgICAgICAgICdzZWVrYmFja3dhcmQnIDogKGRldGFpbHMp
ID0+IHsgcG9zdE1lc3NhZ2UoJ3NlZWtiYWNrd2FyZCBoYW5kbGVyJykgfSwgCisKKyAgICAgICAg
ICAgICAgICAncHJldmlvdXN0cmFjaycgOiAoKSA9PiB7IHBvc3RNZXNzYWdlKCdwcmV2aW91c3Ry
YWNrIGhhbmRsZXInKSB9LCAKKworICAgICAgICAgICAgICAgICduZXh0dHJhY2snIDogKCkgPT4g
eyBwb3N0TWVzc2FnZSgnbmV4dHRyYWNrIGhhbmRsZXInKSB9LCAKKyAgICAgICAgICAgIH07CisK
KyAgICAgICAgICAgIE9iamVjdC5rZXlzKGFjdGlvbnMpLmZvckVhY2goYWN0aW9uID0+IHsgIG5h
dmlnYXRvci5tZWRpYVNlc3Npb24uc2V0QWN0aW9uSGFuZGxlcihhY3Rpb24sIG51bGwpOyB9KTsK
KworICAgICAgICAgICAgaGFuZGxlcnMuZm9yRWFjaChoYW5kbGVyID0+IHsKKyAgICAgICAgICAg
ICAgICBpZiAoIWFjdGlvbnNbaGFuZGxlcl0pIHsKKyAgICAgICAgICAgICAgICAgICAgbG9nKGBh
c2tlZCB0byByZWdpc3RlciBoYW5kbGVyIGZvciB1bmtub3duIGFjdGlvbiAnJHtoYW5kbGVyfSdg
KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIGxvZyhgcmVnaXN0ZXJpbmcgJyR7aGFuZGxlcn0nIGhhbmRsZXJgKTsKKyAg
ICAgICAgICAgICAgICBuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLnNldEFjdGlvbkhhbmRsZXIoaGFu
ZGxlciwgYWN0aW9uc1toYW5kbGVyXSk7IAorICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBwb3N0TWVzc2FnZShtZXNzYWdlKQorICAgICAgICB7CisgICAgICAg
ICAgICBsb2coYCR7bWVzc2FnZX1gKQorICAgICAgICAgICAgaWYgKHdpbmRvdy53ZWJraXQpCisg
ICAgICAgICAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIu
cG9zdE1lc3NhZ2UobWVzc2FnZSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBwb3N0
RXZlbnQoZXZ0KSAKKyAgICAgICAgeworICAgICAgICAgICAgcG9zdE1lc3NhZ2UoYCR7ZXZ0LnR5
cGV9IGV2ZW50YCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGZ1bmN0aW9uIGxvYWQo
KQorICAgICAgICB7CisgICAgICAgICAgICBsZXQgc3JjID0gcGxheWxpc3QubWV0YWRhdGFbMF0u
dXJsOworICAgICAgICAgICAgaWYgKCF3aW5kb3cud2Via2l0KQorICAgICAgICAgICAgICAgIHNy
YyA9IGAuLi9XZWJLaXRMZWdhY3kvaW9zLyR7c3JjfWA7CisgICAgICAgICAgICBhdWRpby5zcmMg
PSBzcmM7CisgICAgICAgICAgICBhdWRpby5sb2FkKCk7CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIGZ1bmN0aW9uIGxvZyhtc2cpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxldCBldmVu
dExvZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdldmVudHNsb2cnKQorICAgICAgICAgICAg
bGV0IG5vdGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgICAgIG5v
dGUuaW5uZXJIVE1MID0gbXNnOworICAgICAgICAgICAgZXZlbnRMb2cuaW5zZXJ0QmVmb3JlKG5v
dGUsIGV2ZW50TG9nLmZpcnN0Q2hpbGQpOworICAgICAgICB9CisKKyAgICAgICAgCisgICAgICAg
IHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgZXZ0ID0+IHsKKyAgICAgICAgICAgIGF1
ZGlvID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2F1ZGlvJylbMF07CisgICAgICAg
ICAgICBhdWRpby5hZGRFdmVudExpc3RlbmVyKCdjYW5wbGF5dGhyb3VnaCcsIHBvc3RFdmVudCk7
CisgICAgICAgICAgICBhdWRpby5hZGRFdmVudExpc3RlbmVyKCdwbGF5JywgcG9zdEV2ZW50KTsK
KyAgICAgICAgICAgIGF1ZGlvLmFkZEV2ZW50TGlzdGVuZXIoJ3BhdXNlJywgcG9zdEV2ZW50KTsK
KyAgICAgICAgICAgIGF1ZGlvLmFkZEV2ZW50TGlzdGVuZXIoJ3NlZWtlZCcsIHBvc3RFdmVudCk7
CisgICAgICAgIH0sIGZhbHNlKTsKKworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cisg
ICAgPGF1ZGlvIGNvbnRyb2xzPiA8L2F1ZGlvPgorICAgIDxicj4KKyAgICA8YnV0dG9uIG9uY2xp
Y2s9InNldEVtcHR5QWN0aW9uSGFuZGxlcnMoWydwbGF5JywncGF1c2UnLCdzZWVrdG8nXSkiPkVt
cHR5IFBsYXksIFBhdXNlLCBTZWVrVG88L2J1dHRvbj4KKyAgICA8YnI+CisgICAgPGJ1dHRvbiBv
bmNsaWNrPSJzZXRFbXB0eUFjdGlvbkhhbmRsZXJzKFsncGxheScsJ3BhdXNlJywnc2Vla2Zvcndh
cmQnLCdzZWVrYmFja3dhcmQnXSkiPkVtcHR5IFBsYXksIFBhdXNlLCBTZWVrIEZvcndhcmQsIFNl
ZWsgQmFja3dhcmQ8L2J1dHRvbj4KKyAgICA8YnI+CisgICAgPGJ1dHRvbiBvbmNsaWNrPSJsb2Fk
KCkiPkxvYWQ8L2J1dHRvbj4KKyAgICA8YnI+CisgICAgPGJ1dHRvbiBvbmNsaWNrPSJzZXRQbGF5
bGlzdE1ldGFkYXRhKDApIj5TZXQgTWV0YWRhdGEgMTwvYnV0dG9uPjxidXR0b24gb25jbGljaz0i
c2V0UGxheWxpc3RNZXRhZGF0YSgxKSI+U2V0IE1ldGFkYXRhIDI8L2J1dHRvbj4KKyAgICA8YnI+
CisgICAgPGRpdiBpZD0nZXZlbnRzbG9nJz48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419338</attachid>
            <date>2021-02-04 16:45:33 -0800</date>
            <delta_ts>2021-02-04 17:38:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221431-20210204164533.patch</filename>
            <type>text/plain</type>
            <size>93972</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDY1NTU5N2Y2NWVlNjhi
MzU4NTk2MzFmZjU2MjljMzNiZmE0YTliOC4uY2M4OTA1ZGZkZWQwZTg0N2Q2MzEwZmFiNjUyMzg4
YThhMTc1ZmQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisyMDIxLTAyLTA0ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIENvbm5l
Y3QgTWVkaWFTZXNzaW9uIHdpdGggTWVkaWFSZW1vdGUgYW5kIE5vd1BsYXlpbmcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTQzMQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNzQwMDAzNjM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUm91dGUgYWxsIHJlbW90ZSBjb250cm9sIGNvbW1hbmRzIHRvIG5h
dmlnYXRvci5tZWRpYVNlc3Npb24gd2hlbiBpdCBoYXMgYW55IAorICAgICAgICByZWdpc3RlcmVk
IGFjdGlvbiBoYW5kbGVycywgYW5kIHBhc3MgbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5tZXRhZGF0
YSB0byBOb3dQbGF5aW5nLgorCisgICAgICAgIFRlc3RlZCBieSBuZXcgQVBJIHRlc3RzIGluIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTWVkaWFTZXNzaW9uLm1tLgorCisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFJbWFnZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFJbWFnZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
SW1hZ2U6OmRlY29kZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRh
ZGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYU1ldGFkYXRhOjpzZXRUaXRsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYU1ldGFkYXRhOjpzZXRBcnRpc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFNZXRhZGF0YTo6c2V0QWxidW0pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFN
ZXRhZGF0YTo6c2V0QXJ0d29yayk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVk
aWFNZXRhZGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFNZXRhZGF0YTo6dGl0bGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFNZXRhZGF0YTo6YXJ0aXN0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhTWV0YWRhdGE6OmFsYnVtIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhTWV0YWRhdGE6OmFydHdvcmsgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFNZXRhZGF0YTo6bWV0YWRhdGEgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
ZXNzaW9uL01lZGlhTWV0YWRhdGFJbml0Lmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYU1ldGFk
YXRhSW5pdDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhTWV0YWRhdGFJ
bml0OjpkZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpuZXh0TG9nSWRlbnRpZmllcik6CisgICAgICAgIChX
ZWJDb3JlOjpsb2dDaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6OmxvZ0NsYXNzTmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUNvbW1hbmRGb3JNZWRpYVNlc3Npb25BY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uOjpNZWRpYVNlc3Npb24pOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTZXNzaW9uOjpzZXRNZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVNlc3Npb246OnNldFBsYXliYWNrU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
ZXNzaW9uOjpzZXRBY3Rpb25IYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lv
bjo6c2V0UG9zaXRpb25TdGF0ZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVk
aWFTZXNzaW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb246Omhhc0FjdGl2ZUFj
dGlvbkhhbmRsZXJzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6bG9n
Z2VyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6bG9nSWRlbnRpZmll
ciBjb25zdCk6CisgICAgICAgIChXVEY6OkxvZ0FyZ3VtZW50PFdlYkNvcmU6Ok1lZGlhU2Vzc2lv
blBsYXliYWNrU3RhdGU+Ojp0b1N0cmluZyk6CisgICAgICAgIChXVEY6OkxvZ0FyZ3VtZW50PFdl
YkNvcmU6Ok1lZGlhU2Vzc2lvbkFjdGlvbj46OnRvU3RyaW5nKToKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmRpZFJlY2VpdmVS
ZW1vdGVDb250cm9sQ29tbWFuZCk6CisgICAgICAgICogaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OmRpZFJlY2VpdmVS
ZW1vdGVDb250cm9sQ29tbWFuZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNz
aW9uOjpub3dQbGF5aW5nSW5mbyBjb25zdCk6CisgICAgICAgICogaHRtbC9NZWRpYUVsZW1lbnRT
ZXNzaW9uLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3Rl
Q29tbWFuZExpc3RlbmVyOjpzY2hlZHVsZVN1cHBvcnRlZENvbW1hbmRzVXBkYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6YWRkU3VwcG9ydGVkQ29tbWFuZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVDb21tYW5kTGlzdGVuZXI6OnJlbW92ZVN1cHBvcnRl
ZENvbW1hbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmg6CisgICAgICAgIChXZWJD
b3JlOjpOb3dQbGF5aW5nSW5mbzo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9Q
bGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RW51bWVy
YXRpb25Ub1N0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNl
c3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6
YWRkU3VwcG9ydGVkQ29tbWFuZCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXI6OnJlbW92ZVN1cHBvcnRlZENvbW1hbmQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2NoZWR1bGVTZXNzaW9uU3RhdHVzVXBk
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2Vzc2lv
bkNhblByb2R1Y2VBdWRpb0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9u
TWFuYWdlckNvY29hOjphZGRTdXBwb3J0ZWRDb21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6cmVtb3ZlU3VwcG9ydGVkQ29tbWFuZCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJbmZvKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvTWVkaWFSZW1vdGVTb2Z0TGluay5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL01lZGlhUmVtb3RlU29mdExpbmsuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om1lZGlhUmVt
b3RlQ29tbWFuZEZvclBsYXRmb3JtQ29tbWFuZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVD
b21tYW5kTGlzdGVuZXJNYWM6OmRlZmF1bHRDb21tYW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpp
c1NlZWtDb21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lck1h
Yzo6dXBkYXRlU3VwcG9ydGVkQ29tbWFuZHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlQ29t
bWFuZExpc3RlbmVyTWFjOjpSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMpOgorCiAyMDIxLTAyLTA0
ICBKdWxpYW4gR29uemFsZXogIDxqdWxpYW5fYV9nb256YWxlekBhcHBsZS5jb20+CiAKICAgICAg
ICAgTnVsbCBkZXJlZmVyZW5jZSBpbiBEb2N1bWVudExvYWRlcjo6Y29tbWl0RGF0YSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFM
L0NoYW5nZUxvZwppbmRleCAwOWIxMGNhMTI3OWQ5YjgxNTY2ZGE4ZmZhMmUwMWU0NWQ1MGI3YmZh
Li5hNmY2YzJjZmQwYjVjMTFjZTcwZTEyOTc3OGZjMjEwZGUxMWU1MjQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0wMi0wNCAgRXJpYyBDYXJsc29uICA8ZXJpYy5j
YXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWFjXSBDb25uZWN0IE1lZGlhU2Vzc2lvbiB3
aXRoIE1lZGlhUmVtb3RlIGFuZCBOb3dQbGF5aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE0MzEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc0
MDAwMzYzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcGFsL3NwaS9tYWMvTWVkaWFSZW1vdGVTUEkuaDoKKwogMjAyMS0wMi0wMSAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIERpc2FibGUgaW50ZXJz
dGl0aWFsIGV2ZW50cyBvbiBBVlBsYXllckl0ZW0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDc5M2YzNGE3MzdlMzhl
YjZjMWMxOTI4NGIyYTQ3Y2EwNjQ5MzAyMjkuLmRhYWNmODY3OGRiMGIxYzI0NTEzMjZkMjQ2ODg1
MGY5MTViZDVhZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDItMDQgIEVyaWMg
Q2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW01hY10gQ29ubmVj
dCBNZWRpYVNlc3Npb24gd2l0aCBNZWRpYVJlbW90ZSBhbmQgTm93UGxheWluZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNDMxCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS83NDAwMDM2Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgYSBwcml2YXRlIHByZWZlcmVuY2Ugc28gdGhlIG5ldyBNZWRp
YVNlc3Npb24gQVBJIHRlc3QgY2FuIGVuYWJsZSB0aGUgZmVhdHVyZS4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbToKKyAgICAgICAgKC1bV0tQcmVmZXJl
bmNlcyBfbWVkaWFTZXNzaW9uRW5hYmxlZF0pOgorICAgICAgICAoLVtXS1ByZWZlcmVuY2VzIF9z
ZXRNZWRpYVNlc3Npb25FbmFibGVkOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tQcmVmZXJlbmNlc1ByaXZhdGUuaDoKKwogMjAyMS0wMi0wNCAgSnVsaWFuIEdvbnphbGV6ICA8
anVsaWFuX2FfZ29uemFsZXpAYXBwbGUuY29tPgogCiAgICAgICAgIE51bGwgZGVyZWZlcmVuY2Ug
aW4gRG9jdW1lbnRMb2FkZXI6OmNvbW1pdERhdGEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNlc3Npb24vTWVkaWFJbWFnZS5oCmluZGV4IGFmMTE5NWVhZDBmYjIwMGYyYjVh
YWFhZjA2Yjc4MGMyNjFlMmRhZGQuLjQ5MzI0MDBhMDJmODc2OWQxOTQ4OWNkMzhhMmRhODAzYTQ4
MWMyNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01l
ZGlhSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRp
YUltYWdlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzMsOCArMzMsMzMgQEAgc3RydWN0IE1lZGlhSW1hZ2UgewogICAgIFN0cmluZyBz
cmM7CiAgICAgU3RyaW5nIHNpemVzOwogICAgIFN0cmluZyB0eXBlOworCisgICAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxNZWRpYUltYWdlPiBkZWNvZGUoRGVjb2Rl
ciYpOwogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gaW5saW5lIHZvaWQgTWVkaWFJbWFn
ZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBzcmMg
PDwgc2l6ZXMgPDwgdHlwZTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIE9w
dGlvbmFsPE1lZGlhSW1hZ2U+IE1lZGlhSW1hZ2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
eworICAgIFN0cmluZyBzcmM7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzcmMpKQorICAgICAg
ICByZXR1cm4geyB9OworCisgICAgU3RyaW5nIHNpemVzOworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoc2l6ZXMpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgU3RyaW5nIHR5cGU7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZSh0eXBlKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJl
dHVybiBNZWRpYUltYWdlIHsgV1RGTW92ZShzcmMpLCBXVEZNb3ZlKHNpemVzKSwgV1RGTW92ZSh0
eXBlKSB9OworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU0VTU0lPTikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5j
cHAKaW5kZXggYTZmNDQ5YzQyNjBmY2ZiN2NhNDZjMDZkMTk4ZWM3ZTY1NjI4MWQ5ZC4uZjZmZjMx
ZmIwOGRkNDk4MWEzYmNlOTAzOTJiZGJkMmNkYTVmY2RiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjQsMjUgKzY0
LDI4IEBAIHZvaWQgTWVkaWFNZXRhZGF0YTo6cmVzZXRNZWRpYVNlc3Npb24oKQogCiB2b2lkIE1l
ZGlhTWV0YWRhdGE6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7Ci0gICAgaWYgKG1f
dGl0bGUgPT0gdGl0bGUpCisgICAgaWYgKG1fbWV0YWRhdGEudGl0bGUgPT0gdGl0bGUpCiAgICAg
ICAgIHJldHVybjsKLSAgICBtX3RpdGxlID0gdGl0bGU7CisKKyAgICBtX21ldGFkYXRhLnRpdGxl
ID0gdGl0bGU7CiAgICAgbWV0YWRhdGFVcGRhdGVkKCk7CiB9CiAKIHZvaWQgTWVkaWFNZXRhZGF0
YTo6c2V0QXJ0aXN0KGNvbnN0IFN0cmluZyYgYXJ0aXN0KQogewotICAgIGlmIChtX2FydGlzdCA9
PSBhcnRpc3QpCisgICAgaWYgKG1fbWV0YWRhdGEuYXJ0aXN0ID09IGFydGlzdCkKICAgICAgICAg
cmV0dXJuOwotICAgIG1fYXJ0aXN0ID0gYXJ0aXN0OworCisgICAgbV9tZXRhZGF0YS5hcnRpc3Qg
PSBhcnRpc3Q7CiAgICAgbWV0YWRhdGFVcGRhdGVkKCk7CiB9CiAKIHZvaWQgTWVkaWFNZXRhZGF0
YTo6c2V0QWxidW0oY29uc3QgU3RyaW5nJiBhbGJ1bSkKIHsKLSAgICBpZiAobV9hbGJ1bSA9PSBh
bGJ1bSkKKyAgICBpZiAobV9tZXRhZGF0YS5hbGJ1bSA9PSBhbGJ1bSkKICAgICAgICAgcmV0dXJu
OwotICAgIG1fYWxidW0gPSBhbGJ1bTsKKworICAgIG1fbWV0YWRhdGEuYWxidW0gPSBhbGJ1bTsK
ICAgICBtZXRhZGF0YVVwZGF0ZWQoKTsKIH0KIApAQCAtOTcsNyArMTAwLDcgQEAgRXhjZXB0aW9u
T3I8dm9pZD4gTWVkaWFNZXRhZGF0YTo6c2V0QXJ0d29yayhTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBWZWMKICAgICAgICAgcmVzb2x2ZWRBcnR3b3JrLnVuY2hlY2tlZEFwcGVuZChN
ZWRpYUltYWdlIHsgcmVzb2x2ZWRTcmMuc3RyaW5nKCksIGltYWdlLnNpemVzLCBpbWFnZS50eXBl
IH0pOwogICAgIH0KIAotICAgIG1fYXJ0d29yayA9IFdURk1vdmUocmVzb2x2ZWRBcnR3b3JrKTsK
KyAgICBtX21ldGFkYXRhLmFydHdvcmsgPSBXVEZNb3ZlKHJlc29sdmVkQXJ0d29yayk7CiAgICAg
bWV0YWRhdGFVcGRhdGVkKCk7CiAgICAgcmV0dXJuIHsgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuaAppbmRleCAyNjRlZWNj
YTk1MGIyMmVhNDUzYjcxZTQyZGZhODA0NjBhOTc2YmNhLi4zMGUwOTNkNmQyN2RkYjc0MTUyODFl
ZThiNWQxMDA0ZWZjZmFhNWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShN
RURJQV9TRVNTSU9OKQogCisjaW5jbHVkZSAiTWVkaWFNZXRhZGF0YUluaXQuaCIKICNpbmNsdWRl
ICJNZWRpYVNlc3Npb24uaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CkBAIC0zNCwxMCArMzUsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIERvY3VtZW50OwotY2xhc3MgTWVkaWFTZXNzaW9uOwogc3RydWN0IE1lZGlhSW1hZ2U7
Ci1zdHJ1Y3QgTWVkaWFNZXRhZGF0YUluaXQ7CisKK3VzaW5nIE1lZGlhU2Vzc2lvbk1ldGFkYXRh
ID0gTWVkaWFNZXRhZGF0YUluaXQ7CiAKIGNsYXNzIE1lZGlhTWV0YWRhdGEgOiBwdWJsaWMgUmVm
Q291bnRlZDxNZWRpYU1ldGFkYXRhPiB7CiBwdWJsaWM6CkBAIC00NywyNyArNDcsMjYgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0TWVkaWFTZXNzaW9uKE1lZGlhU2Vzc2lvbiYpOwogICAgIHZvaWQg
cmVzZXRNZWRpYVNlc3Npb24oKTsKIAotICAgIGNvbnN0IFN0cmluZyYgdGl0bGUoKSBjb25zdCB7
IHJldHVybiBtX3RpdGxlOyB9CisgICAgY29uc3QgU3RyaW5nJiB0aXRsZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbWV0YWRhdGEudGl0bGU7IH0KICAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZyYp
OwogCi0gICAgY29uc3QgU3RyaW5nJiBhcnRpc3QoKSBjb25zdCB7IHJldHVybiBtX2FydGlzdDsg
fQorICAgIGNvbnN0IFN0cmluZyYgYXJ0aXN0KCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5h
cnRpc3Q7IH0KICAgICB2b2lkIHNldEFydGlzdChjb25zdCBTdHJpbmcmKTsKIAotICAgIGNvbnN0
IFN0cmluZyYgYWxidW0oKSBjb25zdCB7IHJldHVybiBtX2FsYnVtOyB9CisgICAgY29uc3QgU3Ry
aW5nJiBhbGJ1bSgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRhdGEuYWxidW07IH0KICAgICB2b2lk
IHNldEFsYnVtKGNvbnN0IFN0cmluZyYpOwogCi0gICAgY29uc3QgVmVjdG9yPE1lZGlhSW1hZ2U+
JiBhcnR3b3JrKCkgY29uc3QgeyByZXR1cm4gbV9hcnR3b3JrOyB9CisgICAgY29uc3QgVmVjdG9y
PE1lZGlhSW1hZ2U+JiBhcnR3b3JrKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5hcnR3b3Jr
OyB9CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0QXJ0d29yayhTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiwgVmVjdG9yPE1lZGlhSW1hZ2U+JiYpOwogCisgICAgY29uc3QgTWVkaWFTZXNzaW9uTWV0
YWRhdGEmIG1ldGFkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YTsgfQorCiBwcml2YXRl
OgogICAgIE1lZGlhTWV0YWRhdGEoKTsKICAgICB2b2lkIG1ldGFkYXRhVXBkYXRlZCgpOwogCiAg
ICAgV2Vha1B0cjxNZWRpYVNlc3Npb24+IG1fc2Vzc2lvbjsKLSAgICBTdHJpbmcgbV90aXRsZTsK
LSAgICBTdHJpbmcgbV9hcnRpc3Q7Ci0gICAgU3RyaW5nIG1fYWxidW07Ci0gICAgVmVjdG9yPE1l
ZGlhSW1hZ2U+IG1fYXJ0d29yazsKKyAgICBNZWRpYVNlc3Npb25NZXRhZGF0YSBtX21ldGFkYXRh
OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Np
b24vTWVkaWFNZXRhZGF0YUluaXQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNz
aW9uL01lZGlhTWV0YWRhdGFJbml0LmgKaW5kZXggMDEyZWMyZDA5NWY5M2JiZmUyOGEzOGQ2M2Fh
ZWE0MjEyNmFiNTZlNS4uNjY5ZGVmZmEyZDY5NDA4NWYwOGYxMGRmMWI5MTZlZjQ0ZTg4NWUwZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRh
ZGF0YUluaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRp
YU1ldGFkYXRhSW5pdC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTM2LDggKzM2LDM3IEBAIHN0cnVjdCBNZWRpYU1ldGFkYXRhSW5pdCB7
CiAgICAgU3RyaW5nIGFydGlzdDsKICAgICBTdHJpbmcgYWxidW07CiAgICAgVmVjdG9yPE1lZGlh
SW1hZ2U+IGFydHdvcms7CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29k
ZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9w
dGlvbmFsPE1lZGlhTWV0YWRhdGFJbml0PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAordGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gaW5saW5lIHZvaWQgTWVkaWFNZXRhZGF0YUluaXQ6OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgdGl0bGUgPDwgYXJ0aXN0
IDw8IGFsYnVtIDw8IGFydHdvcms7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGlu
ZSBPcHRpb25hbDxNZWRpYU1ldGFkYXRhSW5pdD4gTWVkaWFNZXRhZGF0YUluaXQ6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFN0cmluZyB0aXRsZTsKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHRpdGxlKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIFN0cmluZyBhcnRpc3Q7
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhcnRpc3QpKQorICAgICAgICByZXR1cm4geyB9Owor
CisgICAgU3RyaW5nIGFsYnVtOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWxidW0pKQorICAg
ICAgICByZXR1cm4geyB9OworCisgICAgVmVjdG9yPE1lZGlhSW1hZ2U+IGFydHdvcms7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShhcnR3b3JrKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAg
IHJldHVybiBNZWRpYU1ldGFkYXRhSW5pdCB7IFdURk1vdmUodGl0bGUpLCBXVEZNb3ZlKGFydGlz
dCksIFdURk1vdmUoYWxidW0pLCBXVEZNb3ZlKGFydHdvcmspIH07Cit9CisKIH0KIAogI2VuZGlm
IC8vIEVOQUJMRShNRURJQV9TRVNTSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAKaW5kZXggMWFiNjIyNDgzMmVlZmExMjky
ZjEzODYxM2I0MWYwNzcwOTk2MjNjZS4uYTNiNWE5MGYwNDdkZjdlODlhMzc1NTU3MDRiYzNmZWU3
NWVlMTIwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24v
TWVkaWFTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lv
bi9NZWRpYVNlc3Npb24uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDExICsyOCw1MyBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NF
U1NJT04pCiAKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFNZXRhZGF0YS5o
IgogI2luY2x1ZGUgIk5hdmlnYXRvci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBjb25zdCB2b2lkKiBu
ZXh0TG9nSWRlbnRpZmllcigpCit7CisgICAgc3RhdGljIHVpbnQ2NF90IGxvZ0lkZW50aWZpZXIg
PSBjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpOworICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PGNvbnN0IHZvaWQqPigrK2xvZ0lkZW50aWZpZXIpOworfQorCitzdGF0aWMgV1RGTG9n
Q2hhbm5lbCYgbG9nQ2hhbm5lbCgpIHsgcmV0dXJuIExvZ01lZGlhOyB9CitzdGF0aWMgY29uc3Qg
Y2hhciogbG9nQ2xhc3NOYW1lKCkgeyByZXR1cm4gIk1lZGlhU2Vzc2lvbiI7IH0KKworc3RhdGlj
IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgcGxhdGZvcm1D
b21tYW5kRm9yTWVkaWFTZXNzaW9uQWN0aW9uKE1lZGlhU2Vzc2lvbkFjdGlvbiBhY3Rpb24pCit7
CisgICAgc3RhdGljIGNvbnN0IGF1dG8gY29tbWFuZE1hcCA9IG1ha2VOZXZlckRlc3Ryb3llZChb
XSB7CisgICAgICAgIHN0cnVjdCBNYXBFbnRyeSB7CisgICAgICAgICAgICBNZWRpYVNlc3Npb25B
Y3Rpb24gYWN0aW9uOworICAgICAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNv
bnRyb2xDb21tYW5kVHlwZSBjb21tYW5kOworICAgICAgICB9OworICAgICAgICBzdGF0aWMgY29u
c3QgTWFwRW50cnkgZW50cmllc1tdID0geworICAgICAgICAgICAgeyBNZWRpYVNlc3Npb25BY3Rp
b246OlBsYXksIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5Q29tbWFuZCB9LAorICAgICAgICAg
ICAgeyBNZWRpYVNlc3Npb25BY3Rpb246OlBhdXNlLCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGF1
c2VDb21tYW5kIH0sCisgICAgICAgICAgICB7IE1lZGlhU2Vzc2lvbkFjdGlvbjo6U2Vla2Zvcndh
cmQsIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTa2lwRm9yd2FyZENvbW1hbmQgfSwKKyAgICAgICAg
ICAgIHsgTWVkaWFTZXNzaW9uQWN0aW9uOjpTZWVrYmFja3dhcmQsIFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpTa2lwQmFja3dhcmRDb21tYW5kIH0sCisgICAgICAgICAgICB7IE1lZGlhU2Vzc2lvbkFj
dGlvbjo6UHJldmlvdXN0cmFjaywgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5leHRUcmFja0NvbW1h
bmQgfSwKKyAgICAgICAgICAgIHsgTWVkaWFTZXNzaW9uQWN0aW9uOjpOZXh0dHJhY2ssIFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpQcmV2aW91c1RyYWNrQ29tbWFuZCB9LAorICAgICAgICAgICAgeyBN
ZWRpYVNlc3Npb25BY3Rpb246OlN0b3AsIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTdG9wQ29tbWFu
ZCB9LAorICAgICAgICAgICAgeyBNZWRpYVNlc3Npb25BY3Rpb246OlNlZWt0bywgUGxhdGZvcm1N
ZWRpYVNlc3Npb246OlNlZWtUb1BsYXliYWNrUG9zaXRpb25Db21tYW5kIH0sCisgICAgICAgIH07
CisKKyAgICAgICAgSGFzaE1hcDxNZWRpYVNlc3Npb25BY3Rpb24sIFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIFdURjo6SW50SGFzaDxNZWRpYVNlc3Npb25B
Y3Rpb24+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPE1lZGlhU2Vzc2lvbkFjdGlvbj4+IG1h
cDsKKyAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IGVudHJpZXMpCisgICAgICAgICAgICBtYXAu
YWRkKGVudHJ5LmFjdGlvbiwgZW50cnkuY29tbWFuZCk7CisgICAgICAgIHJldHVybiBtYXA7Cisg
ICAgfSgpKTsKKworICAgIGF1dG8gaXQgPSBjb21tYW5kTWFwLmdldCgpLmZpbmQoYWN0aW9uKTsK
KyAgICBpZiAoaXQgIT0gY29tbWFuZE1hcC5nZXQoKS5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGl0
LT52YWx1ZTsKKworICAgIHJldHVybiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9Db21tYW5kOwor
fQorCiBSZWY8TWVkaWFTZXNzaW9uPiBNZWRpYVNlc3Npb246OmNyZWF0ZShOYXZpZ2F0b3ImIG5h
dmlnYXRvcikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVNlc3Npb24obmF2aWdh
dG9yKSk7CkBAIC00MSwxMiArODMsMTggQEAgUmVmPE1lZGlhU2Vzc2lvbj4gTWVkaWFTZXNzaW9u
OjpjcmVhdGUoTmF2aWdhdG9yJiBuYXZpZ2F0b3IpCiBNZWRpYVNlc3Npb246Ok1lZGlhU2Vzc2lv
bihOYXZpZ2F0b3ImIG5hdmlnYXRvcikKICAgICA6IG1fbmF2aWdhdG9yKG1ha2VXZWFrUHRyKG5h
dmlnYXRvcikpCiB7CisgICAgbV9sb2dnZXIgPSBtYWtlUmVmUHRyKERvY3VtZW50OjpzaGFyZWRM
b2dnZXIoKSk7CisgICAgbV9sb2dJZGVudGlmaWVyID0gbmV4dExvZ0lkZW50aWZpZXIoKTsKKwor
ICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CiB9CiAKIE1lZGlhU2Vzc2lvbjo6fk1lZGlh
U2Vzc2lvbigpID0gZGVmYXVsdDsKIAogdm9pZCBNZWRpYVNlc3Npb246OnNldE1ldGFkYXRhKFJl
ZlB0cjxNZWRpYU1ldGFkYXRhPiYmIG1ldGFkYXRhKQogeworICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUik7CisKICAgICBpZiAobV9tZXRhZGF0YSkKICAgICAgICAgbV9tZXRhZGF0YS0+cmVz
ZXRNZWRpYVNlc3Npb24oKTsKICAgICBtX21ldGFkYXRhID0gV1RGTW92ZShtZXRhZGF0YSk7CkBA
IC02MCw2ICsxMDgsOCBAQCB2b2lkIE1lZGlhU2Vzc2lvbjo6c2V0UGxheWJhY2tTdGF0ZShNZWRp
YVNlc3Npb25QbGF5YmFja1N0YXRlIHN0YXRlKQogICAgIGlmIChtX3BsYXliYWNrU3RhdGUgPT0g
c3RhdGUpCiAgICAgICAgIHJldHVybjsKIAorICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwg
c3RhdGUpOworCiAgICAgYXV0byBjdXJyZW50UG9zaXRpb24gPSB0aGlzLT5jdXJyZW50UG9zaXRp
b24oKTsKICAgICBpZiAobV9wb3NpdGlvblN0YXRlICYmIGN1cnJlbnRQb3NpdGlvbikgewogICAg
ICAgICBtX3Bvc2l0aW9uU3RhdGUtPnBvc2l0aW9uID0gKmN1cnJlbnRQb3NpdGlvbjsKQEAgLTcw
LDEwICsxMjAsMTggQEAgdm9pZCBNZWRpYVNlc3Npb246OnNldFBsYXliYWNrU3RhdGUoTWVkaWFT
ZXNzaW9uUGxheWJhY2tTdGF0ZSBzdGF0ZSkKIAogdm9pZCBNZWRpYVNlc3Npb246OnNldEFjdGlv
bkhhbmRsZXIoTWVkaWFTZXNzaW9uQWN0aW9uIGFjdGlvbiwgUmVmUHRyPE1lZGlhU2Vzc2lvbkFj
dGlvbkhhbmRsZXI+JiYgaGFuZGxlcikKIHsKLSAgICBpZiAoaGFuZGxlcikKKyAgICBpZiAoaGFu
ZGxlcikgeworICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJhZGRpbmcgIiwgYWN0
aW9uKTsKICAgICAgICAgbV9hY3Rpb25IYW5kbGVycy5zZXQoYWN0aW9uLCBoYW5kbGVyKTsKLSAg
ICBlbHNlCi0gICAgICAgIG1fYWN0aW9uSGFuZGxlcnMucmVtb3ZlKGFjdGlvbik7CisgICAgICAg
IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmFkZFN1cHBvcnRl
ZENvbW1hbmQocGxhdGZvcm1Db21tYW5kRm9yTWVkaWFTZXNzaW9uQWN0aW9uKGFjdGlvbikpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChtX2FjdGlvbkhhbmRsZXJzLmNvbnRhaW5zKGFjdGlv
bikpIHsKKyAgICAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInJlbW92aW5nICIs
IGFjdGlvbik7CisgICAgICAgICAgICBtX2FjdGlvbkhhbmRsZXJzLnJlbW92ZShhY3Rpb24pOwor
ICAgICAgICB9CisgICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFu
YWdlcigpLnJlbW92ZVN1cHBvcnRlZENvbW1hbmQocGxhdGZvcm1Db21tYW5kRm9yTWVkaWFTZXNz
aW9uQWN0aW9uKGFjdGlvbikpOworICAgIH0KKyAgICAKICAgICBhY3Rpb25IYW5kbGVyc1VwZGF0
ZWQoKTsKIH0KIApAQCAtODksNiArMTQ3LDggQEAgUmVmUHRyPE1lZGlhU2Vzc2lvbkFjdGlvbkhh
bmRsZXI+IE1lZGlhU2Vzc2lvbjo6aGFuZGxlckZvckFjdGlvbihNZWRpYVNlc3Npb25BY3QKIAog
RXhjZXB0aW9uT3I8dm9pZD4gTWVkaWFTZXNzaW9uOjpzZXRQb3NpdGlvblN0YXRlKE9wdGlvbmFs
PE1lZGlhUG9zaXRpb25TdGF0ZT4mJiBzdGF0ZSkKIHsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5U
SUZJRVIpOworCiAgICAgaWYgKCFzdGF0ZSkgewogICAgICAgICBtX3Bvc2l0aW9uU3RhdGUgPSBX
VEY6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5oCmluZGV4IDNmNjRmM2IwMjQ2ODRl
NGY3ZWM2NDQ4N2I0MTdmNWVkMTczYTc5MDkuLjRmNGJlNDc3MjY0NDA4NmI3N2Q2MWQ5ZjViMDgy
M2ExNWQwNTA1NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNz
aW9uL01lZGlhU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNz
aW9uL01lZGlhU2Vzc2lvbi5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDEwICsyNywxNCBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NF
U1NJT04pCiAKKyNpbmNsdWRlICJKU01lZGlhUG9zaXRpb25TdGF0ZS5oIgorI2luY2x1ZGUgIkpT
TWVkaWFTZXNzaW9uQWN0aW9uLmgiCisjaW5jbHVkZSAiSlNNZWRpYVNlc3Npb25QbGF5YmFja1N0
YXRlLmgiCiAjaW5jbHVkZSAiTWVkaWFQb3NpdGlvblN0YXRlLmgiCiAjaW5jbHVkZSAiTWVkaWFT
ZXNzaW9uQWN0aW9uLmgiCiAjaW5jbHVkZSAiTWVkaWFTZXNzaW9uQWN0aW9uSGFuZGxlci5oIgog
I2luY2x1ZGUgIk1lZGlhU2Vzc2lvblBsYXliYWNrU3RhdGUuaCIKKyNpbmNsdWRlIDx3dGYvTG9n
Z2VyLmg+CiAjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KICNpbmNsdWRlIDx3dGYvT3B0
aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CkBAIC01NywxMyArNjEsMTggQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPGRvdWJsZT4gY3VycmVudFBvc2l0
aW9uKCkgY29uc3Q7CiAKICAgICB2b2lkIG1ldGFkYXRhVXBkYXRlZCgpOworCiAgICAgdm9pZCBh
Y3Rpb25IYW5kbGVyc1VwZGF0ZWQoKTsKICAgICBib29sIGhhc0FjdGlvbkhhbmRsZXIoTWVkaWFT
ZXNzaW9uQWN0aW9uKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8TWVkaWFTZXNz
aW9uQWN0aW9uSGFuZGxlcj4gaGFuZGxlckZvckFjdGlvbihNZWRpYVNlc3Npb25BY3Rpb24pIGNv
bnN0OworICAgIGJvb2wgaGFzQWN0aXZlQWN0aW9uSGFuZGxlcnMoKSBjb25zdCB7IHJldHVybiAh
bV9hY3Rpb25IYW5kbGVycy5pc0VtcHR5KCk7IH0KIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBN
ZWRpYVNlc3Npb24oTmF2aWdhdG9yJik7CiAKKyAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNv
bnN0IHsgcmV0dXJuICptX2xvZ2dlci5nZXQoKTsgfQorICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7IH0KKwogICAgIFdlYWtQdHI8
TmF2aWdhdG9yPiBtX25hdmlnYXRvcjsKICAgICBSZWZQdHI8TWVkaWFNZXRhZGF0YT4gbV9tZXRh
ZGF0YTsKICAgICBNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRlIG1fcGxheWJhY2tTdGF0ZSB7IE1l
ZGlhU2Vzc2lvblBsYXliYWNrU3RhdGU6Ok5vbmUgfTsKQEAgLTcxLDYgKzgwLDIwIEBAIHByaXZh
dGU6CiAgICAgT3B0aW9uYWw8ZG91YmxlPiBtX2xhc3RSZXBvcnRlZFBvc2l0aW9uOwogICAgIE1v
bm90b25pY1RpbWUgbV90aW1lQXRMYXN0UG9zaXRpb25VcGRhdGU7CiAgICAgSGFzaE1hcDxNZWRp
YVNlc3Npb25BY3Rpb24sIFJlZlB0cjxNZWRpYVNlc3Npb25BY3Rpb25IYW5kbGVyPiwgV1RGOjpJ
bnRIYXNoPE1lZGlhU2Vzc2lvbkFjdGlvbj4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8TWVk
aWFTZXNzaW9uQWN0aW9uPj4gbV9hY3Rpb25IYW5kbGVyczsKKyAgICBSZWZQdHI8Y29uc3QgTG9n
Z2VyPiBtX2xvZ2dlcjsKKyAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7Cit9OworCit9
CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBMb2dBcmd1bWVudDxXZWJD
b3JlOjpNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRlPiB7CisgICAgc3RhdGljIFN0cmluZyB0b1N0
cmluZyhXZWJDb3JlOjpNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRlIHN0YXRlKSB7IHJldHVybiBj
b252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhzdGF0ZSk7IH0KK307CisKK3RlbXBsYXRlPD4gc3Ry
dWN0IExvZ0FyZ3VtZW50PFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkFjdGlvbj4geworICAgIHN0YXRp
YyBTdHJpbmcgdG9TdHJpbmcoV2ViQ29yZTo6TWVkaWFTZXNzaW9uQWN0aW9uIGFjdGlvbikgeyBy
ZXR1cm4gY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoYWN0aW9uKTsgfQogfTsKIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL01lZGlhUmVtb3RlU1BJLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvTWVkaWFSZW1vdGVTUEkuaAppbmRleCA2
NTE1YzBkNzZmMDVkYTAwNjE4MGEyYTU3NTEzZWYyZTY0NWM4MWU0Li5lODg1YWJiYjg5Y2NiYWQ1
YTk4MjE2YmYwMjllODFlOWY0YWIyZGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3NwaS9tYWMvTWVkaWFSZW1vdGVTUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L3NwaS9tYWMvTWVkaWFSZW1vdGVTUEkuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw2ICszMiwxMiBAQAogCiAjZWxzZQogCitAaW50
ZXJmYWNlIE1SQ29tbWFuZEluZm8gOiBOU09iamVjdAorQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5KSBNUk1lZGlhUmVtb3RlQ29tbWFuZCBjb21tYW5kOworQHByb3BlcnR5IChub25hdG9t
aWMsIHJlYWRvbmx5LCBnZXR0ZXI9aXNFbmFibGVkKSBCT09MIGVuYWJsZWQ7CitAcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHksIG51bGxhYmxlLCBjb3B5KSBOU0RpY3Rpb25hcnkgKm9wdGlv
bnM7CitAZW5kCisKIGVudW0gewogICAgIE1STWVkaWFSZW1vdGVDb21tYW5kUGxheSwKICAgICBN
Uk1lZGlhUmVtb3RlQ29tbWFuZFBhdXNlLApAQCAtOTIsNiArOTgsOCBAQCBlbnVtIHsKIHR5cGVk
ZWYgdWludDMyX3QgTVJOb3dQbGF5aW5nQ2xpZW50VmlzaWJpbGl0eTsKIAogdHlwZWRlZiB1aW50
MzJfdCBNUk1lZGlhUmVtb3RlRXJyb3I7Cit0eXBlZGVmIHVpbnQzMl90IE1SU2VuZENvbW1hbmRB
cHBPcHRpb25zOwordHlwZWRlZiB1aW50MzJfdCBNUlNlbmRDb21tYW5kRXJyb3I7CiB0eXBlZGVm
IHN0cnVjdCBfTVJPcmlnaW4gKk1ST3JpZ2luUmVmOwogdHlwZWRlZiBzdHJ1Y3QgX01STWVkaWFS
ZW1vdGVDb21tYW5kSW5mbyAqTVJNZWRpYVJlbW90ZUNvbW1hbmRJbmZvUmVmOwogdHlwZWRlZiB2
b2lkICpNUk5vd1BsYXlpbmdDbGllbnRSZWY7CkBAIC0xMDMsOCArMTExLDEwIEBAIFdURl9FWFRF
Uk5fQ19CRUdJTgogCiB2b2lkKiBNUk1lZGlhUmVtb3RlQWRkQXN5bmNDb21tYW5kSGFuZGxlckJs
b2NrKE1STWVkaWFSZW1vdGVBc3luY0NvbW1hbmRIYW5kbGVyQmxvY2spOwogdm9pZCBNUk1lZGlh
UmVtb3RlUmVtb3ZlQ29tbWFuZEhhbmRsZXJCbG9jayh2b2lkICpvYnNlcnZlcik7Ci12b2lkIE1S
TWVkaWFSZW1vdGVTZXRTdXBwb3J0ZWRDb21tYW5kcyhDRkFycmF5UmVmIGNvbW1hbmRzLCBNUk9y
aWdpblJlZiwgZGlzcGF0Y2hfcXVldWVfdCByZXBseVEsIHZvaWQoXmNvbXBsZXRpb24pKE1STWVk
aWFSZW1vdGVFcnJvciBlcnIpKTsKK3ZvaWQgTVJNZWRpYVJlbW90ZVNldFN1cHBvcnRlZENvbW1h
bmRzKENGQXJyYXlSZWYsIE1ST3JpZ2luUmVmLCBkaXNwYXRjaF9xdWV1ZV90LCB2b2lkKF5jb21w
bGV0aW9uKShNUk1lZGlhUmVtb3RlRXJyb3IpKTsKK3ZvaWQgTVJNZWRpYVJlbW90ZUdldFN1cHBv
cnRlZENvbW1hbmRzRm9yT3JpZ2luKE1ST3JpZ2luUmVmLCBkaXNwYXRjaF9xdWV1ZV90LCB2b2lk
KF5jb21wbGV0aW9uKShDRkFycmF5UmVmKSk7CiB2b2lkIE1STWVkaWFSZW1vdGVTZXROb3dQbGF5
aW5nVmlzaWJpbGl0eShNUk9yaWdpblJlZiwgTVJOb3dQbGF5aW5nQ2xpZW50VmlzaWJpbGl0eSk7
CitCb29sZWFuIE1STWVkaWFSZW1vdGVTZW5kQ29tbWFuZFRvQXBwKE1STWVkaWFSZW1vdGVDb21t
YW5kLCBDRkRpY3Rpb25hcnlSZWYsIE1ST3JpZ2luUmVmLCBDRlN0cmluZ1JlZiwgTVJTZW5kQ29t
bWFuZEFwcE9wdGlvbnMsIGRpc3BhdGNoX3F1ZXVlX3QsIHZvaWQoXmNvbXBsZXRpb24pKE1SU2Vu
ZENvbW1hbmRFcnJvciwgQ0ZBcnJheVJlZikpOwogCiAjcHJhZ21hIG1hcmsgLSBNUk9yaWdpbgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggZmE2YzI5ZjRiNGJhZmY0MWI3MDhmMjIwYjc2MGZjOTJlZTQyZDBhMS4uYmQzYmMxNjBk
OGJhZjQ3YjQxNjIyODgwNzc2NTYwMmI1ZDJiNDQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM5LDYgKzEzOSwxMCBAQAog
CQkwNzdBRjE0MzE4RjRCMUJCMDAwMUVENjEgLyogU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1h
Yy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc3QUYx
NDExOEY0QjFCQjAwMDFFRDYxIC8qIFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVNYWMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwNzdCNjQxMzFC
OTRGMTJFMDAzRTlBRDUgLyogTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3N0I2NDExMUI5NEYxMkUw
MDNFOUFENSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3N0I2NDE3MUI5NUY3MDMwMDNF
OUFENSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc3QjY0MTUxQjk1RjcwMzAwM0U5QUQ1IC8qIE1lZGlh
UGxheWJhY2tUYXJnZXRNb2NrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJMDc4Mjg5NDgyNUMyM0ZFNTAwQTdCQTAzIC8qIE1lZGlhTWV0YWRhdGEu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERERFQTJE
MjUzOENFMDQwMEExMzAwQyAvKiBNZWRpYU1ldGFkYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMDc4Mjg5NEEyNUMzNkZDRjAwQTdCQTAzIC8q
IE1lZGlhU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0REREVBMjMyNTM4Q0Q4MDAwQTEzMDBDIC8qIE1lZGlhU2Vzc2lvbi5oICovOyB9Owor
CQkwNzgyODk0QjI1QzM2RkVEMDBBN0JBMDMgLyogTWVkaWFJbWFnZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0REREVBMzIyNTM4Q0UzNTAwQTEzMDBD
IC8qIE1lZGlhSW1hZ2UuaCAqLzsgfTsKKwkJMDc4Mjg5NEMyNUMzNzAwQjAwQTdCQTAzIC8qIE1l
ZGlhTWV0YWRhdGFJbml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRERERUEzMDI1MzhDRTFFMDBBMTMwMEMgLyogTWVkaWFNZXRhZGF0YUluaXQuaCAq
LzsgfTsKIAkJMDc4MzIyODUxODAxM0VEODAwOTk5RTBDIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3Vy
Y2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3ODMy
MjgzMTgwMTNFRDgwMDk5OUUwQyAvKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmggKi87IH07CiAJ
CTA3ODQ2MzQzMTQ1QjE1MUEwMEE1OERGMSAvKiBKU1RyYWNrRXZlbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3ODQ2MzQxMTQ1QjE1MUEwMEE1OERG
MSAvKiBKU1RyYWNrRXZlbnQuaCAqLzsgfTsKIAkJMDc4NDYzODUxNDVCMUI4RTAwQTU4REYxIC8q
IEpTVHJhY2tDdXN0b20uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3ODQ2Mzg0MTQ1QjFCOEUwMEE1OERGMSAvKiBKU1RyYWNrQ3VzdG9tLmggKi87IH07
CkBAIC0zMzcwMiwxMCArMzM3MDYsMTMgQEAKIAkJCQlFNDQ2MTNBRDBDRDYzMzEwMDBGQURBNzUg
LyogTWVkaWFFcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEUxOTU5MjIwQTM5REFCQTAwMjIw
RkU1IC8qIE1lZGlhRmVhdHVyZU5hbWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwN0E2RDFFQzE0
OTExMzc3MDAwNTFEMEMgLyogTWVkaWFGcmFnbWVudFVSSVBhcnNlci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMDc4Mjg5NEIyNUMzNkZFRDAwQTdCQTAzIC8qIE1lZGlhSW1hZ2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNERjRCNzFBMUUwMUQzRDAwMEUyMzVBMiAvKiBNZWRpYUtleVNlc3Npb25UeXBl
LmlkbCBpbiBIZWFkZXJzICovLAogCQkJCUNERjRCNzI4MUUwM0M1NzMwMEUyMzVBMiAvKiBNZWRp
YUtleXNSZXF1aXJlbWVudC5pZGwgaW4gSGVhZGVycyAqLywKIAkJCQlDREY0QjcxODFFMDFDQjkx
MDBFMjM1QTIgLyogTWVkaWFLZXlzUmVzdHJpY3Rpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
OEVBODAwRTBBMTk1MTZFMDBBOEVGNUYgLyogTWVkaWFMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJ
CQkwNzgyODk0ODI1QzIzRkU1MDBBN0JBMDMgLyogTWVkaWFNZXRhZGF0YS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMDc4Mjg5NEMyNUMzNzAwQjAwQTdCQTAzIC8qIE1lZGlhTWV0YWRhdGFJbml0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1RUJCODkzMTFDNzc3N0ZGMDBDNjVENDEgLyogTWVkaWFQYXls
b2FkLmggaW4gSGVhZGVycyAqLywKIAkJCQkwN0UzREZEMTFBOUU3ODY1MDA3NjRDQTggLyogTWVk
aWFQbGF5YmFja1RhcmdldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc5MjE2NTUxQUE1NjBBQTAw
QTNDMDQ5IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRDbGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAt
MzM3NDYsNiArMzM3NTMsNyBAQAogCQkJCTFCMTI0RDhEMUQzODBCNzAwMEVDREZCMCAvKiBNZWRp
YVNhbXBsZUFWRk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQkVBRUFEMTlEOTJCNkMwMEJF
QkE4OCAvKiBNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTE3RDI3NUUxRUFDNTc5ODAwQkYwMUU3IC8qIE1lZGlhU2VsZWN0aW9uT3B0aW9uLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwNzgyODk0QTI1QzM2RkNGMDBBN0JBMDMgLyogTWVkaWFTZXNzaW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0MTZFQ0FFNTI1QjU4Q0M0MDBCMzREQTUgLyogTWVkaWFTZXNz
aW9uR3JvdXBJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREE5NTkzRjI0MTJCQUUw
MDA5MTBFRUYgLyogTWVkaWFTZXNzaW9uSGVscGVySU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MTQ0NjBBMjI0MTI5OTQ1MDA4MTRCRTcgLyogTWVkaWFTZXNzaW9uSWRlbnRpZmllci5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBh
NmE1NGE2MTE0NTVlNGJmYTk5ZTg2ZjYwM2M1MjkwZGY3MDBkMTA5Li4xNTI2NjkyMzdkM2VjMDRl
ZTc1ODRlZGIxOTUzMDQ1ZWQ5NmFmZDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LTIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC03NTA1LDYgKzc1MDUsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVt
bwogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgY29tbWFuZCk7CiAKICAgICBVc2VyR2Vz
dHVyZUluZGljYXRvciByZW1vdGVDb250cm9sVXNlckdlc3R1cmUoUHJvY2Vzc2luZ1VzZXJHZXN0
dXJlLCAmZG9jdW1lbnQoKSk7CisgICAgZG91YmxlIG9mZnNldCA9IDEwOwogICAgIHN3aXRjaCAo
Y29tbWFuZCkgewogICAgIGNhc2UgUGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXlDb21tYW5kOgog
ICAgICAgICBwbGF5KCk7CkBAIC03NTI2LDYgKzc1MjcsMTYgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjpkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246
OlJlbW8KICAgICBjYXNlIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRTZWVraW5nRm9yd2FyZENv
bW1hbmQ6CiAgICAgICAgIGVuZFNjYW5uaW5nKCk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
UGxhdGZvcm1NZWRpYVNlc3Npb246OlNraXBGb3J3YXJkQ29tbWFuZDoKKyAgICAgICAgaWYgKGFy
Z3VtZW50KQorICAgICAgICAgICAgb2Zmc2V0ID0gYXJndW1lbnQtPmFzRG91YmxlOworICAgICAg
ICBoYW5kbGVTZWVrVG9QbGF5YmFja1Bvc2l0aW9uKG9mZnNldCk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgUGxhdGZvcm1NZWRpYVNlc3Npb246OlNraXBCYWNrd2FyZENvbW1hbmQ6CisgICAg
ICAgIGlmIChhcmd1bWVudCkKKyAgICAgICAgICAgIG9mZnNldCA9IGFyZ3VtZW50LT5hc0RvdWJs
ZTsKKyAgICAgICAgaGFuZGxlU2Vla1RvUGxheWJhY2tQb3NpdGlvbigwIC0gb2Zmc2V0KTsKKyAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2Vla1RvUGxheWJh
Y2tQb3NpdGlvbkNvbW1hbmQ6CiAgICAgICAgIEFTU0VSVChhcmd1bWVudCk7CiAgICAgICAgIGlm
IChhcmd1bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50
U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3Bw
CmluZGV4IDU4ZDQyZWNlNDEyNmQ5YzZiMzQxODgwYzBkYTcwMzNhNDkwY2UwNWMuLjRhZWJiZDZh
ZDc4ZjU4ZjMyOTA1M2UwNzJmZDUwYjFmZTdjNDIwYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE0LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NCw2ICs1NCwxMiBAQAogI2luY2x1ZGUgIlNvdXJj
ZUJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAorI2lmIEVO
QUJMRShNRURJQV9TRVNTSU9OKQorI2luY2x1ZGUgIk1lZGlhTWV0YWRhdGEuaCIKKyNpbmNsdWRl
ICJNZWRpYVNlc3Npb24uaCIKKyNpbmNsdWRlICJOYXZpZ2F0b3JNZWRpYVNlc3Npb24uaCIKKyNl
bmRpZgorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlICJBdWRpb1Nlc3Npb24u
aCIKICNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKQEAgLTEwMjEsNiArMTAy
Nyw3MCBAQCBib29sIE1lZGlhRWxlbWVudFNlc3Npb246OmFsbG93c1BsYXliYWNrQ29udHJvbHNG
b3JBdXRvcGxheWluZ0F1ZGlvKCkgY29uc3QKICAgICByZXR1cm4gcGFnZSAmJiBwYWdlLT5hbGxv
d3NQbGF5YmFja0NvbnRyb2xzRm9yQXV0b3BsYXlpbmdBdWRpbygpOwogfQogCisjaWYgRU5BQkxF
KE1FRElBX1NFU1NJT04pCit2b2lkIE1lZGlhRWxlbWVudFNlc3Npb246OmRpZFJlY2VpdmVSZW1v
dGVDb250cm9sQ29tbWFuZChSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgY29tbWFuZFR5cGUsIGNv
bnN0IFJlbW90ZUNvbW1hbmRBcmd1bWVudCogYXJndW1lbnQpCit7CisgICAgYXV0byogd2luZG93
ID0gbV9lbGVtZW50LmRvY3VtZW50KCkuZG9tV2luZG93KCk7CisgICAgYXV0byogc2Vzc2lvbiA9
IHdpbmRvdyA/ICZOYXZpZ2F0b3JNZWRpYVNlc3Npb246Om1lZGlhU2Vzc2lvbih3aW5kb3ctPm5h
dmlnYXRvcigpKSA6IG51bGxwdHI7CisgICAgaWYgKCFzZXNzaW9uIHx8ICFzZXNzaW9uLT5oYXNB
Y3RpdmVBY3Rpb25IYW5kbGVycygpKSB7CisgICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpk
aWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoY29tbWFuZFR5cGUsIGFyZ3VtZW50KTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE1lZGlhU2Vzc2lvbkFjdGlvbkRldGFpbHMgYWN0
aW9uRGV0YWlsczsKKyAgICBzd2l0Y2ggKGNvbW1hbmRUeXBlKSB7CisgICAgY2FzZSBOb0NvbW1h
bmQ6CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFBsYXlDb21tYW5kOgorICAgICAgICBhY3Rp
b25EZXRhaWxzLmFjdGlvbiA9IE1lZGlhU2Vzc2lvbkFjdGlvbjo6UGxheTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBQYXVzZUNvbW1hbmQ6CisgICAgICAgIGFjdGlvbkRldGFpbHMuYWN0aW9u
ID0gTWVkaWFTZXNzaW9uQWN0aW9uOjpQYXVzZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBT
dG9wQ29tbWFuZDoKKyAgICAgICAgYWN0aW9uRGV0YWlscy5hY3Rpb24gPSBNZWRpYVNlc3Npb25B
Y3Rpb246OlN0b3A7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVG9nZ2xlUGxheVBhdXNlQ29t
bWFuZDoKKyAgICAgICAgYWN0aW9uRGV0YWlscy5hY3Rpb24gPSBtX2VsZW1lbnQucGF1c2VkKCkg
PyBNZWRpYVNlc3Npb25BY3Rpb246OlBsYXkgOiBNZWRpYVNlc3Npb25BY3Rpb246OlBhdXNlOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFNlZWtUb1BsYXliYWNrUG9zaXRpb25Db21tYW5kOgor
ICAgICAgICBBU1NFUlQoYXJndW1lbnQpOworICAgICAgICBpZiAoIWFyZ3VtZW50KQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBhY3Rpb25EZXRhaWxzLmFjdGlvbiA9IE1lZGlhU2Vzc2lv
bkFjdGlvbjo6U2Vla3RvOworICAgICAgICBhY3Rpb25EZXRhaWxzLnNlZWtUaW1lID0gYXJndW1l
bnQtPmFzRG91YmxlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNraXBGb3J3YXJkQ29tbWFu
ZDoKKyAgICAgICAgaWYgKGFyZ3VtZW50KQorICAgICAgICAgICAgYWN0aW9uRGV0YWlscy5zZWVr
T2Zmc2V0ID0gYXJndW1lbnQtPmFzRG91YmxlOworICAgICAgICBhY3Rpb25EZXRhaWxzLmFjdGlv
biA9IE1lZGlhU2Vzc2lvbkFjdGlvbjo6U2Vla2ZvcndhcmQ7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgU2tpcEJhY2t3YXJkQ29tbWFuZDoKKyAgICAgICAgaWYgKGFyZ3VtZW50KQorICAgICAg
ICAgICAgYWN0aW9uRGV0YWlscy5zZWVrT2Zmc2V0ID0gYXJndW1lbnQtPmFzRG91YmxlOworICAg
ICAgICBhY3Rpb25EZXRhaWxzLmFjdGlvbiA9IE1lZGlhU2Vzc2lvbkFjdGlvbjo6U2Vla2JhY2t3
YXJkOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE5leHRUcmFja0NvbW1hbmQ6CisgICAgICAg
IGFjdGlvbkRldGFpbHMuYWN0aW9uID0gTWVkaWFTZXNzaW9uQWN0aW9uOjpOZXh0dHJhY2s7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgUHJldmlvdXNUcmFja0NvbW1hbmQ6CisgICAgICAgIGFj
dGlvbkRldGFpbHMuYWN0aW9uID0gTWVkaWFTZXNzaW9uQWN0aW9uOjpQcmV2aW91c3RyYWNrOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEJlZ2luU2Vla2luZ0JhY2t3YXJkQ29tbWFuZDoKKyAg
ICBjYXNlIEVuZFNlZWtpbmdCYWNrd2FyZENvbW1hbmQ6CisgICAgY2FzZSBCZWdpblNlZWtpbmdG
b3J3YXJkQ29tbWFuZDoKKyAgICBjYXNlIEVuZFNlZWtpbmdGb3J3YXJkQ29tbWFuZDoKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAKKyAg
ICBpZiAoYXV0byBoYW5kbGVyID0gc2Vzc2lvbi0+aGFuZGxlckZvckFjdGlvbihhY3Rpb25EZXRh
aWxzLmFjdGlvbikpCisgICAgICAgIGhhbmRsZXItPmhhbmRsZUV2ZW50KGFjdGlvbkRldGFpbHMp
OworICAgIGVsc2UKKyAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiSWdub3Jpbmcg
Y29tbWFuZCwgbm8gYWN0aW9uIGhhbmRsZXIgcmVnaXN0ZXJlZCBmb3IgIiwgYWN0aW9uRGV0YWls
cy5hY3Rpb24pOworfQorI2VuZGlmCisKIE9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvPiBNZWRpYUVs
ZW1lbnRTZXNzaW9uOjpub3dQbGF5aW5nSW5mbygpIGNvbnN0CiB7CiAgICAgYXV0byogcGFnZSA9
IG1fZWxlbWVudC5kb2N1bWVudCgpLnBhZ2UoKTsKQEAgLTEwMzIsNyArMTEwMiwxOSBAQCBPcHRp
b25hbDxOb3dQbGF5aW5nSW5mbz4gTWVkaWFFbGVtZW50U2Vzc2lvbjo6bm93UGxheWluZ0luZm8o
KSBjb25zdAogICAgIGlmICghc3RkOjppc2Zpbml0ZShjdXJyZW50VGltZSkgfHwgIXN1cHBvcnRz
U2Vla2luZykKICAgICAgICAgY3VycmVudFRpbWUgPSBNZWRpYVBsYXllcjo6aW52YWxpZFRpbWUo
KTsKIAotICAgIHJldHVybiBOb3dQbGF5aW5nSW5mbyB7IG1fZWxlbWVudC5tZWRpYVNlc3Npb25U
aXRsZSgpLCBtX2VsZW1lbnQuc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKCksIGR1cmF0aW9u
LCBjdXJyZW50VGltZSwgc3VwcG9ydHNTZWVraW5nLCBtX2VsZW1lbnQubWVkaWFTZXNzaW9uVW5p
cXVlSWRlbnRpZmllcigpLCBpc1BsYXlpbmcsIGFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2li
aWxpdHkgfTsKKyAgICBTdHJpbmcgdGl0bGU7CisgICAgU3RyaW5nIGFydGlzdDsKKyAgICBTdHJp
bmcgYWxidW07CisgICAgYXV0byogd2luZG93ID0gbV9lbGVtZW50LmRvY3VtZW50KCkuZG9tV2lu
ZG93KCk7CisgICAgYXV0byogc2Vzc2lvbk1ldGFkYXRhID0gd2luZG93ID8gTmF2aWdhdG9yTWVk
aWFTZXNzaW9uOjptZWRpYVNlc3Npb24od2luZG93LT5uYXZpZ2F0b3IoKSkubWV0YWRhdGEoKSA6
IG51bGxwdHI7CisgICAgaWYgKHNlc3Npb25NZXRhZGF0YSkgeworICAgICAgICB0aXRsZSA9IHNl
c3Npb25NZXRhZGF0YS0+dGl0bGUoKTsKKyAgICAgICAgYXJ0aXN0ID0gc2Vzc2lvbk1ldGFkYXRh
LT5hcnRpc3QoKTsKKyAgICAgICAgYWxidW0gPSBzZXNzaW9uTWV0YWRhdGEtPmFsYnVtKCk7Cisg
ICAgfSBlbHNlCisgICAgICAgIHRpdGxlID0gbV9lbGVtZW50Lm1lZGlhU2Vzc2lvblRpdGxlKCk7
CisKKyAgICByZXR1cm4gTm93UGxheWluZ0luZm8geyBXVEZNb3ZlKHRpdGxlKSwgV1RGTW92ZShh
cnRpc3QpLCBXVEZNb3ZlKGFsYnVtKSwgbV9lbGVtZW50LnNvdXJjZUFwcGxpY2F0aW9uSWRlbnRp
ZmllcigpLCBkdXJhdGlvbiwgY3VycmVudFRpbWUsIHN1cHBvcnRzU2Vla2luZywgbV9lbGVtZW50
Lm1lZGlhU2Vzc2lvblVuaXF1ZUlkZW50aWZpZXIoKSwgaXNQbGF5aW5nLCBhbGxvd3NOb3dQbGF5
aW5nQ29udHJvbHNWaXNpYmlsaXR5IH07CiB9CiAKIHZvaWQgTWVkaWFFbGVtZW50U2Vzc2lvbjo6
dXBkYXRlTWVkaWFVc2FnZUlmQ2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhRWxlbWVudFNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVt
ZW50U2Vzc2lvbi5oCmluZGV4IDFhYjQ2MmY0NDYxYTQ0ZmNjZWNlZDlmYmQxMjNiNmU3NTJiNzc0
MjMuLmQ3MWU0ZGJiNGYwM2M0MzZlZjM0ZWM5NGNlZTQ3MDJhZWEyYTAxYmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTc0LDYgKzE3NCwxMCBAQCBw
dWJsaWM6CiAgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gIk1lZGlhRWxlbWVudFNlc3Npb24iOyB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShNRURJQV9T
RVNTSU9OKQorICAgIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFJlbW90ZUNv
bnRyb2xDb21tYW5kVHlwZSwgY29uc3QgUmVtb3RlQ29tbWFuZEFyZ3VtZW50KiA9IG51bGxwdHIp
IGZpbmFsOworI2VuZGlmCisKIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJB
Q0tfVEFSR0VUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggNjcwMWEyZGUwNzQw
Mjg0MzVhNGJmNzM2YmZiNmZmMjlhMDQ4ZmRiNS4uMWFkNDNmZTUzNmFkM2NhY2JkMmM0ZTdlMDRi
MTUwMjY3ZTllOGIwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC0xMDEsNyAr
MTAxLDYgQEAgY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKIGNsYXNzIEhUTUxWaWRlb0VsZW1lbnQ7
CiBjbGFzcyBIaXRUZXN0UmVzdWx0OwogY2xhc3MgSW50UmVjdDsKLWNsYXNzIE1lZGlhU2Vzc2lv
bk1ldGFkYXRhOwogY2xhc3MgTmF2aWdhdGlvbkFjdGlvbjsKIGNsYXNzIE5vZGU7CiBjbGFzcyBQ
YWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExp
c3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5l
ci5jcHAKaW5kZXggYWYzNGQ1MGQzYTVhOGE2NWU1YmM5NWU4Nzc1MzFhN2FiZjQ0Nzk2Ny4uNWIy
YTkxZjJjNWI0ODBmZmY1Y2Q4NDIyOTYzMTIyNTg0ODUxNWNmZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDQgKzM3LDI1IEBA
IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDb21tYW5kTGlzdGVuZXI+IFJlbW90ZUNvbW1hbmRMaXN0
ZW5lcjo6Y3JlYXRlKFJlbW90ZUNvbW1hCiAKICNlbmRpZgogCit2b2lkIFJlbW90ZUNvbW1hbmRM
aXN0ZW5lcjo6c2NoZWR1bGVTdXBwb3J0ZWRDb21tYW5kc1VwZGF0ZSgpCit7CisgICAgaWYgKCFt
X3VwZGF0ZUNvbW1hbmRzVGFzay5oYXNQZW5kaW5nVGFzaygpKSB7CisgICAgICAgIG1fdXBkYXRl
Q29tbWFuZHNUYXNrLnNjaGVkdWxlVGFzayhbdGhpc10gKCkgIHsKKyAgICAgICAgICAgIHVwZGF0
ZVN1cHBvcnRlZENvbW1hbmRzKCk7CisgICAgICAgIH0pOworICAgIH0KK30KKwordm9pZCBSZW1v
dGVDb21tYW5kTGlzdGVuZXI6OmFkZFN1cHBvcnRlZENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Np
b246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21tYW5kKQoreworICAgIG1fcmVnaXN0ZXJl
ZENvbW1hbmRzLmFkZChjb21tYW5kKTsKKyAgICBzY2hlZHVsZVN1cHBvcnRlZENvbW1hbmRzVXBk
YXRlKCk7Cit9CisKK3ZvaWQgUmVtb3RlQ29tbWFuZExpc3RlbmVyOjpyZW1vdmVTdXBwb3J0ZWRD
b21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgY29t
bWFuZCkKK3sKKyAgICBtX3JlZ2lzdGVyZWRDb21tYW5kcy5yZW1vdmUoY29tbWFuZCk7CisgICAg
c2NoZWR1bGVTdXBwb3J0ZWRDb21tYW5kc1VwZGF0ZSgpOworfQorCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5oCmluZGV4IDJiNDM0YWVmNmU3
NWVhMzUwYzg4ODVmMGVlZjcwYzU5NmUwMTFlOTcuLjY3YWNiYWE4NjRkMTE2YmYwMjMxMWIxNDM0
ODgwMzRiYTA2Yzk2YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlbW90
ZUNvbW1hbmRMaXN0ZW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlbW90ZUNv
bW1hbmRMaXN0ZW5lci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgUmVtb3RlQ29tbWFuZExpc3Rl
bmVyX2gKICNkZWZpbmUgUmVtb3RlQ29tbWFuZExpc3RlbmVyX2gKIAorI2luY2x1ZGUgIkRlZmVy
cmFibGVUYXNrLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Npb24uaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtNDUsMTIgKzQ2LDIwIEBAIHB1YmxpYzoKICAgICBSZW1vdGVDb21t
YW5kTGlzdGVuZXIoUmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50JiBjbGllbnQpIDogbV9jbGll
bnQoY2xpZW50KSB7IH0KICAgICB2aXJ0dWFsIH5SZW1vdGVDb21tYW5kTGlzdGVuZXIoKSA9IGRl
ZmF1bHQ7CiAKKyAgICB2b2lkIGFkZFN1cHBvcnRlZENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Np
b246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSk7CisgICAgdm9pZCByZW1vdmVTdXBwb3J0ZWRD
b21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUpOwog
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTdXBwb3J0ZWRDb21tYW5kcygpIHsgfQorICAgIHZvaWQg
c2NoZWR1bGVTdXBwb3J0ZWRDb21tYW5kc1VwZGF0ZSgpOwogCiAgICAgUmVtb3RlQ29tbWFuZExp
c3RlbmVyQ2xpZW50JiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQogCiBwcm90
ZWN0ZWQ6CiAgICAgUmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50JiBtX2NsaWVudDsKKworICAg
IHVzaW5nIFJlbW90ZUNvbW1hbmRzU2V0ID0gSGFzaFNldDxQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlLCBXVEY6OkludEhhc2g8UGxhdGZvcm1NZWRpYVNlc3Np
b246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8
UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZT4+OworICAgIFJl
bW90ZUNvbW1hbmRzU2V0IG1fcmVnaXN0ZXJlZENvbW1hbmRzOworCisgICAgRGVmZXJyYWJsZVRh
c2s8VGltZXI+IG1fdXBkYXRlQ29tbWFuZHNUYXNrOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmgKaW5kZXggNjdlOTFlMjJkZjhmMDBk
YjQ0NTgyZTk4MGZiNjIyYThhMDc4OTBlNS4uNzU0ODI3YWE2MGYyOTUwN2RlMzE3YWJkYzc3Mjdm
MWExOGY0ZGJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93
UGxheWluZ0luZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5
aW5nSW5mby5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTMyLDYgKzMyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgTm93
UGxheWluZ0luZm8gewogICAgIFN0cmluZyB0aXRsZTsKKyAgICBTdHJpbmcgYXJ0aXN0OworICAg
IFN0cmluZyBhbGJ1bTsKICAgICBTdHJpbmcgc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyOwog
ICAgIGRvdWJsZSBkdXJhdGlvbiB7IDAgfTsKICAgICBkb3VibGUgY3VycmVudFRpbWUgeyAwIH07
CkBAIC01NSw2ICs1NywxNCBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUgT3B0aW9u
YWw8Tm93UGxheWluZ0luZm8+IE5vd1BsYXlpbmdJbmZvOjpkZWNvZGUoRAogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUodGl0bGUpKQogICAgICAgICByZXR1cm4geyB9OwogCisgICAgU3RyaW5nIGFy
dGlzdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFydGlzdCkpCisgICAgICAgIHJldHVybiB7
IH07CisKKyAgICBTdHJpbmcgYWxidW07CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhbGJ1bSkp
CisgICAgICAgIHJldHVybiB7IH07CisKICAgICBTdHJpbmcgc291cmNlQXBwbGljYXRpb25JZGVu
dGlmaWVyOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc291cmNlQXBwbGljYXRpb25JZGVudGlm
aWVyKSkKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTgzLDcgKzkzLDcgQEAgdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gaW5saW5lIE9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvPiBOb3dQbGF5aW5nSW5m
bzo6ZGVjb2RlKEQKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFsbG93c05vd1BsYXlpbmdDb250
cm9sc1Zpc2liaWxpdHkpKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIE5vd1Bs
YXlpbmdJbmZvIHsgV1RGTW92ZSh0aXRsZSksIFdURk1vdmUoc291cmNlQXBwbGljYXRpb25JZGVu
dGlmaWVyKSwgZHVyYXRpb24sIGN1cnJlbnRUaW1lLCBzdXBwb3J0c1NlZWtpbmcsIHVuaXF1ZUlk
ZW50aWZpZXIsIGlzUGxheWluZywgYWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSB9
OworICAgIHJldHVybiBOb3dQbGF5aW5nSW5mbyB7IFdURk1vdmUodGl0bGUpLCBXVEZNb3ZlKGFy
dGlzdCksIFdURk1vdmUoYWxidW0pLCBXVEZNb3ZlKHNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmll
ciksIGR1cmF0aW9uLCBjdXJyZW50VGltZSwgc3VwcG9ydHNTZWVraW5nLCB1bmlxdWVJZGVudGlm
aWVyLCBpc1BsYXlpbmcsIGFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHkgfTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwCmluZGV4IDkyNjlhZDM5M2U2MjA1
OTFjODBiNDIxOGY1OTg0NDU5ZmVmOWZiYTMuLjQzN2M2ZDBhNTE2NjQ1OTBhNDY5YmFkMWJiNTgy
MmMxOTgyZTE5NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bs
YXRmb3JtTWVkaWFTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE0LTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE0LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05Myw2ICs5MywxMCBAQCBTdHJpbmcgY29u
dmVydEVudW1lcmF0aW9uVG9TdHJpbmcoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRy
b2xDb21tYW5kVHlwZQogICAgICAgICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiQmVnaW5TZWVr
aW5nRm9yd2FyZENvbW1hbmQiKSwKICAgICAgICAgTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoIkVu
ZFNlZWtpbmdGb3J3YXJkQ29tbWFuZCIpLAogICAgICAgICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1Q
TCgiU2Vla1RvUGxheWJhY2tQb3NpdGlvbkNvbW1hbmQiKSwKKyAgICAgICAgTUFLRV9TVEFUSUNf
U1RSSU5HX0lNUEwoIlNraXBGb3J3YXJkQ29tbWFuZCIpLAorICAgICAgICBNQUtFX1NUQVRJQ19T
VFJJTkdfSU1QTCgiU2tpcEJhY2t3YXJkQ29tbWFuZCIpLAorICAgICAgICBNQUtFX1NUQVRJQ19T
VFJJTkdfSU1QTCgiTmV4dFRyYWNrQ29tbWFuZCIpLAorICAgICAgICBNQUtFX1NUQVRJQ19TVFJJ
TkdfSU1QTCgiUHJldmlvdXNUcmFja0NvbW1hbmQiKSwKICAgICB9OwogICAgIHN0YXRpY19hc3Nl
cnQoIXN0YXRpY19jYXN0PHNpemVfdD4oUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5vQ29tbWFuZCks
ICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9Db21tYW5kIGlzIG5vdCAwIGFzIGV4cGVjdGVkIik7
CiAgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpQbGF5Q29tbWFuZCkgPT0gMSwgIlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5Q29tbWFu
ZCBpcyBub3QgMSBhcyBleHBlY3RlZCIpOwpAQCAtMTA0LDYgKzEwOCwxMCBAQCBTdHJpbmcgY29u
dmVydEVudW1lcmF0aW9uVG9TdHJpbmcoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRy
b2xDb21tYW5kVHlwZQogICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6QmVnaW5TZWVraW5nRm9yd2FyZENvbW1hbmQpID09IDcsICJQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6QmVnaW5TZWVraW5nRm9yd2FyZENvbW1hbmQgaXMgbm90IDcgYXMg
ZXhwZWN0ZWQiKTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oUGxhdGZv
cm1NZWRpYVNlc3Npb246OkVuZFNlZWtpbmdGb3J3YXJkQ29tbWFuZCkgPT0gOCwgIlBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpFbmRTZWVraW5nRm9yd2FyZENvbW1hbmQgaXMgbm90IDggYXMgZXhwZWN0
ZWQiKTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oUGxhdGZvcm1NZWRp
YVNlc3Npb246OlNlZWtUb1BsYXliYWNrUG9zaXRpb25Db21tYW5kKSA9PSA5LCAiUGxhdGZvcm1N
ZWRpYVNlc3Npb246OlNlZWtUb1BsYXliYWNrUG9zaXRpb25Db21tYW5kIGlzIG5vdCA5IGFzIGV4
cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpTa2lwRm9yd2FyZENvbW1hbmQpID09IDEwLCAiUGxhdGZvcm1NZWRpYVNl
c3Npb246OlNraXBGb3J3YXJkQ29tbWFuZCBpcyBub3QgMTAgYXMgZXhwZWN0ZWQiKTsKKyAgICBz
dGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oUGxhdGZvcm1NZWRpYVNlc3Npb246OlNr
aXBCYWNrd2FyZENvbW1hbmQpID09IDExLCAiUGxhdGZvcm1NZWRpYVNlc3Npb246OlNraXBCYWNr
d2FyZENvbW1hbmQgaXMgbm90IDExIGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydChz
dGF0aWNfY2FzdDxzaXplX3Q+KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOZXh0VHJhY2tDb21tYW5k
KSA9PSAxMiwgIlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOZXh0VHJhY2tDb21tYW5kIGlzIG5vdCAx
MiBhcyBleHBlY3RlZCIpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UHJldmlvdXNUcmFja0NvbW1hbmQpID09IDEzLCAiUGxhdGZv
cm1NZWRpYVNlc3Npb246OlByZXZpb3VzVHJhY2tDb21tYW5kIGlzIG5vdCAxMyBhcyBleHBlY3Rl
ZCIpOwogICAgIEFTU0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+KGNvbW1hbmQpIDwgV1RGX0FSUkFZ
X0xFTkdUSCh2YWx1ZXMpKTsKICAgICByZXR1cm4gdmFsdWVzW3N0YXRpY19jYXN0PHNpemVfdD4o
Y29tbWFuZCldOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UGxhdGZvcm1NZWRpYVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bs
YXRmb3JtTWVkaWFTZXNzaW9uLmgKaW5kZXggYzk4MTIxM2Q1ZTkwNzZlNDJlYjkwZGI0ZjNhMTE1
NmI1MmY0YjYyNi4uZDk1MmZhOTViM2YyNzM3MGU2MGI0YzY5MTJlOTUxYTVkNjhkMGRiMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Np
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vz
c2lvbi5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNC0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMTMwLDkgKzEzMCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIEJlZ2luU2Vla2lu
Z0ZvcndhcmRDb21tYW5kLAogICAgICAgICBFbmRTZWVraW5nRm9yd2FyZENvbW1hbmQsCiAgICAg
ICAgIFNlZWtUb1BsYXliYWNrUG9zaXRpb25Db21tYW5kLAorICAgICAgICBTa2lwRm9yd2FyZENv
bW1hbmQsCisgICAgICAgIFNraXBCYWNrd2FyZENvbW1hbmQsCisgICAgICAgIE5leHRUcmFja0Nv
bW1hbmQsCisgICAgICAgIFByZXZpb3VzVHJhY2tDb21tYW5kLAogICAgIH07CiAgICAgYm9vbCBj
YW5SZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmRzKCkgY29uc3Q7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUmVtb3RlQ29udHJvbENvbW1hbmRUeXBlLCBjb25zdCBS
ZW1vdGVDb21tYW5kQXJndW1lbnQqIGFyZ3VtZW50ID0gbnVsbHB0cik7CisgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChSZW1vdGVDb250cm9sQ29tbWFuZFR5
cGUsIGNvbnN0IFJlbW90ZUNvbW1hbmRBcmd1bWVudCogPSBudWxscHRyKTsKICAgICBib29sIHN1
cHBvcnRzU2Vla2luZygpIGNvbnN0OwogCiAgICAgZW51bSBEaXNwbGF5VHlwZSA6IHVpbnQ4X3Qg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9y
bU1lZGlhU2Vzc2lvbk1hbmFnZXIuaAppbmRleCAxZmNiMzM0MjRmMGI1NWZkMjIwOWI2MzRjZWRk
ZWU4MzljNGQ3ZWQ2Li4yM2RkOTljNmRlZjJmZjRkYWVmODdhMDUwOThiNzc1YTgwN2RjYTEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9y
bU1lZGlhU2Vzc2lvbk1hbmFnZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE1Miw2ICsxNTIsOSBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpc0ludGVycnVwdGVkKCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcnJ1cHRlZDsgfQogICAg
IGJvb2wgaGFzTm9TZXNzaW9uKCkgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIHZvaWQgYWRkU3VwcG9y
dGVkQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBl
KSB7IH07CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZVN1cHBvcnRlZENvbW1hbmQoUGxhdGZvcm1N
ZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSkgeyB9OworCiBwcm90ZWN0ZWQ6
CiAgICAgZnJpZW5kIGNsYXNzIFBsYXRmb3JtTWVkaWFTZXNzaW9uOwogICAgIFBsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EuaAppbmRleCA0MWJh
MmQ1MGM4YWE2YWFiYTk5NjI3NTk1ZWUwNDJkZTQ2YjcyYTJlLi5kOWUzN2FhODM3ZDY1OGE5NzJl
NmJiNDMyNjZjNmNkZDYwZGZhOTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04NCw2
ICs4NCw5IEBAIHByb3RlY3RlZDoKIAogICAgIEdlbmVyaWNUYXNrUXVldWU8VGltZXI+JiB0YXNr
UXVldWUoKSB7IHJldHVybiBtX3Rhc2tRdWV1ZTsgfQogCisgICAgdm9pZCBhZGRTdXBwb3J0ZWRD
b21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUpIGZp
bmFsOworICAgIHZvaWQgcmVtb3ZlU3VwcG9ydGVkQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlKSBmaW5hbDsKKwogcHJpdmF0ZToKICNpZiAhUkVM
RUFTRV9MT0dfRElTQUJMRUQKICAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAiTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hIjsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdl
ckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNz
aW9uTWFuYWdlckNvY29hLm1tCmluZGV4IDA2ZmZmZTcwNDQ2ZTgxYmMxMWJlZTZlM2U5ZDNhODY2
YmY5Mjc3YzcuLmQzNGZjOTBkN2FhOGI2NDA4MDc5YTMxNDg4YWIwMmY4MGI3ZjI4OTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1h
bmFnZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9N
ZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNTMsNiArMTUzLDkgQEAgdm9pZCBNZWRp
YVNlc3Npb25NYW5hZ2VyQ29jb2E6OnByZXBhcmVUb1NlbmRVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdCgpCiB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2NoZWR1bGVTZXNzaW9uU3Rh
dHVzVXBkYXRlKCkKIHsKICAgICBtX3Rhc2tRdWV1ZS5lbnF1ZXVlVGFzayhbdGhpc10gKCkgbXV0
YWJsZSB7CisgICAgICAgIGlmIChtX3JlbW90ZUNvbW1hbmRMaXN0ZW5lcikKKyAgICAgICAgICAg
IG1fcmVtb3RlQ29tbWFuZExpc3RlbmVyLT51cGRhdGVTdXBwb3J0ZWRDb21tYW5kcygpOworCiAg
ICAgICAgIHVwZGF0ZU5vd1BsYXlpbmdJbmZvKCk7CiAKICAgICAgICAgZm9yRWFjaFNlc3Npb24o
W10gKGF1dG8mIHNlc3Npb24pIHsKQEAgLTIzMiwxMCArMjM1LDIzIEBAIHZvaWQgTWVkaWFTZXNz
aW9uTWFuYWdlckNvY29hOjpjbGllbnRDaGFyYWN0ZXJpc3RpY3NDaGFuZ2VkKFBsYXRmb3JtTWVk
aWFTZXNzaW9uCiAKIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpzZXNzaW9uQ2FuUHJv
ZHVjZUF1ZGlvQ2hhbmdlZCgpCiB7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKICAg
ICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25DYW5Qcm9kdWNlQXVkaW9DaGFu
Z2VkKCk7CiAgICAgc2NoZWR1bGVTZXNzaW9uU3RhdHVzVXBkYXRlKCk7CiB9CiAKK3ZvaWQgTWVk
aWFTZXNzaW9uTWFuYWdlckNvY29hOjphZGRTdXBwb3J0ZWRDb21tYW5kKFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgY29tbWFuZCkKK3sKKyAgICBpZiAobV9y
ZW1vdGVDb21tYW5kTGlzdGVuZXIpCisgICAgICAgIG1fcmVtb3RlQ29tbWFuZExpc3RlbmVyLT5h
ZGRTdXBwb3J0ZWRDb21tYW5kKGNvbW1hbmQpOworfQorCit2b2lkIE1lZGlhU2Vzc2lvbk1hbmFn
ZXJDb2NvYTo6cmVtb3ZlU3VwcG9ydGVkQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVt
b3RlQ29udHJvbENvbW1hbmRUeXBlIGNvbW1hbmQpCit7CisgICAgaWYgKG1fcmVtb3RlQ29tbWFu
ZExpc3RlbmVyKQorICAgICAgICBtX3JlbW90ZUNvbW1hbmRMaXN0ZW5lci0+cmVtb3ZlU3VwcG9y
dGVkQ29tbWFuZChjb21tYW5kKTsKK30KKwogdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6
OmNsZWFyTm93UGxheWluZ0luZm8oKQogewogICAgIGlmIChjYW5Mb2FkX01lZGlhUmVtb3RlX01S
TWVkaWFSZW1vdGVTZXROb3dQbGF5aW5nVmlzaWJpbGl0eSgpKQpAQCAtMjYwLDYgKzI3NiwxMiBA
QCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8oYm9vbCBz
ZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbgogCiAgICAgYXV0byBpbmZvID0gYWRvcHRDRihDRkRp
Y3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDQsICZrQ0ZUeXBlRGlj
dGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsK
IAorICAgIGlmICghbm93UGxheWluZ0luZm8uYXJ0aXN0LmlzRW1wdHkoKSkKKyAgICAgICAgQ0ZE
aWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5m
b0FydGlzdCwgbm93UGxheWluZ0luZm8uYXJ0aXN0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwor
CisgICAgaWYgKCFub3dQbGF5aW5nSW5mby5hbGJ1bS5pc0VtcHR5KCkpCisgICAgICAgIENGRGlj
dGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9B
bGJ1bSwgbm93UGxheWluZ0luZm8uYWxidW0uY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisKICAg
ICBpZiAoIW5vd1BsYXlpbmdJbmZvLnRpdGxlLmlzRW1wdHkoKSkKICAgICAgICAgQ0ZEaWN0aW9u
YXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb1RpdGxl
LCBub3dQbGF5aW5nSW5mby50aXRsZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL01lZGlhUmVtb3RlU29mdExpbmsuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9NZWRpYVJlbW90ZVNvZnRMaW5rLmgKaW5kZXgg
OGI1Y2QyM2ZiMDJhYTI2NDY2MGVkZjM4MTRlNzdmYjg2MmZkNTBjOC4uMGFlODNkZDAyMjk5YTJm
OTZiMjE3NzQ4MmIzYzc3MmJiNjkwZDA2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL01lZGlhUmVtb3RlU29mdExpbmsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvTWVkaWFSZW1vdGVTb2Z0TGluay5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU4LDYgKzU4LDE0IEBAIFNPRlRfTElOS19G
VU5DVElPTl9NQVlfRkFJTF9GT1JfSEVBREVSKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBNUk1lZGlh
UmVtb3RlU2V0UGFyCiAjZGVmaW5lIE1STWVkaWFSZW1vdGVTZXRQYXJlbnRBcHBsaWNhdGlvbiBz
b2Z0TGlua19NZWRpYVJlbW90ZV9NUk1lZGlhUmVtb3RlU2V0UGFyZW50QXBwbGljYXRpb24KIFNP
RlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBrTVJNZWRp
YVJlbW90ZU5vd1BsYXlpbmdJbmZvVGl0bGUsIENGU3RyaW5nUmVmKTsKICNkZWZpbmUga01STWVk
aWFSZW1vdGVOb3dQbGF5aW5nSW5mb1RpdGxlIGdldF9NZWRpYVJlbW90ZV9rTVJNZWRpYVJlbW90
ZU5vd1BsYXlpbmdJbmZvVGl0bGUoKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoV2Vi
Q29yZSwgTWVkaWFSZW1vdGUsIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnRpc3QsIENG
U3RyaW5nUmVmKTsKKyNkZWZpbmUga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydGlzdCBn
ZXRfTWVkaWFSZW1vdGVfa01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydGlzdCgpCitTT0ZU
X0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihXZWJDb3JlLCBNZWRpYVJlbW90ZSwga01STWVkaWFS
ZW1vdGVOb3dQbGF5aW5nSW5mb0FsYnVtLCBDRlN0cmluZ1JlZik7CisjZGVmaW5lIGtNUk1lZGlh
UmVtb3RlTm93UGxheWluZ0luZm9BbGJ1bSBnZXRfTWVkaWFSZW1vdGVfa01STWVkaWFSZW1vdGVO
b3dQbGF5aW5nSW5mb0FsYnVtKCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFdlYkNv
cmUsIE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya0RhdGEs
IENGU3RyaW5nUmVmKTsKKyNkZWZpbmUga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdv
cmtEYXRhIGdldF9NZWRpYVJlbW90ZV9rTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29y
a0RhdGEoKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoV2ViQ29yZSwgTWVkaWFSZW1v
dGUsIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrTUlNRVR5cGUsIENGU3RyaW5n
UmVmKTsKKyNkZWZpbmUga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtNSU1FVHlw
ZSBnZXRfTWVkaWFSZW1vdGVfa01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtNSU1F
VHlwZSgpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihXZWJDb3JlLCBNZWRpYVJlbW90
ZSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0R1cmF0aW9uLCBDRlN0cmluZ1JlZik7CiAj
ZGVmaW5lIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9EdXJhdGlvbiBnZXRfTWVkaWFSZW1v
dGVfa01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0R1cmF0aW9uKCkKIFNPRlRfTElOS19DT05T
VEFOVF9GT1JfSEVBREVSKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU5vd1Bs
YXlpbmdJbmZvRWxhcHNlZFRpbWUsIENGU3RyaW5nUmVmKTsKQEAgLTY4LDYgKzc2LDggQEAgU09G
VF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoV2ViQ29yZSwgTWVkaWFSZW1vdGUsIGtNUk1lZGlh
UmVtb3RlT3B0aW9uUGxheWJhY2sKICNkZWZpbmUga01STWVkaWFSZW1vdGVPcHRpb25QbGF5YmFj
a1Bvc2l0aW9uIGdldF9NZWRpYVJlbW90ZV9rTVJNZWRpYVJlbW90ZU9wdGlvblBsYXliYWNrUG9z
aXRpb24oKQogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoV2ViQ29yZSwgTWVkaWFSZW1v
dGUsIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9VbmlxdWVJZGVudGlmaWVyLCBDRlN0cmlu
Z1JlZik7CiAjZGVmaW5lIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9VbmlxdWVJZGVudGlm
aWVyIGdldF9NZWRpYVJlbW90ZV9rTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvVW5pcXVlSWRl
bnRpZmllcigpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihXZWJDb3JlLCBNZWRpYVJl
bW90ZSwga01STWVkaWFSZW1vdGVPcHRpb25Ta2lwSW50ZXJ2YWwsIENGU3RyaW5nUmVmKTsKKyNk
ZWZpbmUga01STWVkaWFSZW1vdGVPcHRpb25Ta2lwSW50ZXJ2YWwgZ2V0X01lZGlhUmVtb3RlX2tN
Uk1lZGlhUmVtb3RlT3B0aW9uU2tpcEludGVydmFsKCkKIAogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihXZWJDb3JlLCBNZWRpYVJlbW90ZSwg
TVJNZWRpYVJlbW90ZUNvcHlQaWNrYWJsZVJvdXRlcywgQ0ZBcnJheVJlZiwgKCksICgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL01lZGlhUmVtb3RlU29mdExpbmsu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTWVkaWFSZW1vdGVTb2Z0TGluay5tbQpp
bmRleCA4NGRhY2I4NTFmOGNmNmMxYmQ2NjdhOTZlN2JjMDlmNzM5MmY5ZDU0Li43M2U3YjIwZDli
ZjU1MjcwNDdhYzM4MTE1MjAwNmYzZTg1MjE1ZTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvTWVkaWFSZW1vdGVTb2Z0TGluay5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvTWVkaWFSZW1vdGVTb2Z0TGluay5tbQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDQsMTEgKzQ0LDE2IEBAIFNP
RlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBNUk1lZGlh
UmVtb3RlU2V0Tm93UGxheWluZ0luCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShXZWJD
b3JlLCBNZWRpYVJlbW90ZSwgTVJNZWRpYVJlbW90ZVNldE5vd1BsYXlpbmdBcHBsaWNhdGlvblBs
YXliYWNrU3RhdGVGb3JPcmlnaW4sIHZvaWQsIChNUk9yaWdpblJlZiBvcmlnaW4sIE1SUGxheWJh
Y2tTdGF0ZSBwbGF5YmFja1N0YXRlLCBkaXNwYXRjaF9xdWV1ZV90IHJlcGx5USwgdm9pZCheY29t
cGxldGlvbikoTVJNZWRpYVJlbW90ZUVycm9yKSksIChvcmlnaW4sIHBsYXliYWNrU3RhdGUsIHJl
cGx5USwgY29tcGxldGlvbikpCiBTT0ZUX0xJTktfRlVOQ1RJT05fTUFZX0ZBSUxfRk9SX1NPVVJD
RShXZWJDb3JlLCBNZWRpYVJlbW90ZSwgTVJNZWRpYVJlbW90ZVNldFBhcmVudEFwcGxpY2F0aW9u
LCB2b2lkLCAoTVJPcmlnaW5SZWYgb3JpZ2luLCBDRlN0cmluZ1JlZiBwYXJlbnRBcHBEaXNwbGF5
SUQpLCAob3JpZ2luLCBwYXJlbnRBcHBEaXNwbGF5SUQpKQogU09GVF9MSU5LX0NPTlNUQU5UX0ZP
Ul9TT1VSQ0UoV2ViQ29yZSwgTWVkaWFSZW1vdGUsIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0lu
Zm9UaXRsZSwgQ0ZTdHJpbmdSZWYpOworU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoV2Vi
Q29yZSwgTWVkaWFSZW1vdGUsIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnRpc3QsIENG
U3RyaW5nUmVmKTsKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFdlYkNvcmUsIE1lZGlh
UmVtb3RlLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQWxidW0sIENGU3RyaW5nUmVmKTsK
K1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBrTVJN
ZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya0RhdGEsIENGU3RyaW5nUmVmKTsKK1NPRlRf
TElOS19DT05TVEFOVF9GT1JfU09VUkNFKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJl
bW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya01JTUVUeXBlLCBDRlN0cmluZ1JlZik7CiBTT0ZUX0xJ
TktfQ09OU1RBTlRfRk9SX1NPVVJDRShXZWJDb3JlLCBNZWRpYVJlbW90ZSwga01STWVkaWFSZW1v
dGVOb3dQbGF5aW5nSW5mb0R1cmF0aW9uLCBDRlN0cmluZ1JlZik7CiBTT0ZUX0xJTktfQ09OU1RB
TlRfRk9SX1NPVVJDRShXZWJDb3JlLCBNZWRpYVJlbW90ZSwga01STWVkaWFSZW1vdGVOb3dQbGF5
aW5nSW5mb0VsYXBzZWRUaW1lLCBDRlN0cmluZ1JlZik7CiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9S
X1NPVVJDRShXZWJDb3JlLCBNZWRpYVJlbW90ZSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5m
b1BsYXliYWNrUmF0ZSwgQ0ZTdHJpbmdSZWYpOwogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VS
Q0UoV2ViQ29yZSwgTWVkaWFSZW1vdGUsIGtNUk1lZGlhUmVtb3RlT3B0aW9uUGxheWJhY2tQb3Np
dGlvbiwgQ0ZTdHJpbmdSZWYpOwogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoV2ViQ29y
ZSwgTWVkaWFSZW1vdGUsIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9VbmlxdWVJZGVudGlm
aWVyLCBDRlN0cmluZ1JlZik7CitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShXZWJDb3Jl
LCBNZWRpYVJlbW90ZSwga01STWVkaWFSZW1vdGVPcHRpb25Ta2lwSW50ZXJ2YWwsIENGU3RyaW5n
UmVmKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9S
X1NPVVJDRShXZWJDb3JlLCBNZWRpYVJlbW90ZSwgTVJNZWRpYVJlbW90ZUNvcHlQaWNrYWJsZVJv
dXRlcywgQ0ZBcnJheVJlZiwgKCksICgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9SZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9SZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMuaAppbmRleCA5NGE0MmUxOTE3MWIy
ZGNiOWZlOWI5MGYxZDU4YzIzYzlmNzhhMjNiLi5iNzFjYWQ4NjgxODg4NGQ5OTRhZmFlZTgzODI2
OWM5NWY3MWRjYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUmVt
b3RlQ29tbWFuZExpc3RlbmVyTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDkgKzM5LDEzIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5SZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMoKTsKIAogcHJvdGVjdGVkOgotICAgIHZv
aWQgdXBkYXRlU3VwcG9ydGVkQ29tbWFuZHMoKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZVN1
cHBvcnRlZENvbW1hbmRzKCkgZmluYWw7CiAKICAgICB2b2lkKiBtX2NvbW1hbmRIYW5kbGVyIHsg
bnVsbHB0ciB9OworCisgICAgY29uc3QgUmVtb3RlQ29tbWFuZHNTZXQmIGRlZmF1bHRDb21tYW5k
cygpOworICAgIFJlbW90ZUNvbW1hbmRzU2V0IG1fY3VycmVudENvbW1hbmRzOworICAgIGJvb2wg
bV9zdXBwb3J0c1NlZWtpbmcgeyBmYWxzZSB9OwogfTsKICAgICAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9SZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLm1tCmlu
ZGV4IDRlYTgzOTIwNzI3MTg0NDhhODYyMmZmZTJkMzI1Y2Y3MzcxMjQ2MjguLmZhZjc1M2Y4N2E0
NGZmMjBmZWQ4MjkzZDdjMTViMDViM2E4NzAyYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9SZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5tbQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzUsNDIgKzM1
LDEwMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBPcHRpb25hbDxNUk1lZGlh
UmVtb3RlQ29tbWFuZD4gbWVkaWFSZW1vdGVDb21tYW5kRm9yUGxhdGZvcm1Db21tYW5kKFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgY29tbWFuZCkKK3sKKyAg
ICBzdGF0aWMgY29uc3QgYXV0byBjb21tYW5kTWFwID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsK
KyAgICAgICAgc3RydWN0IE1hcEVudHJ5IHsKKyAgICAgICAgICAgIFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgcGxhdGZvcm1Db21tYW5kOworICAgICAgICAg
ICAgTVJNZWRpYVJlbW90ZUNvbW1hbmQgbWVkaWFSZW1vdGVDb21tYW5kOworICAgICAgICB9Owor
ICAgICAgICBzdGF0aWMgY29uc3QgTWFwRW50cnkgZW50cmllc1tdID0geworICAgICAgICAgICAg
eyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheUNvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5k
UGxheSB9LAorICAgICAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGF1c2VDb21tYW5k
LCBNUk1lZGlhUmVtb3RlQ29tbWFuZFBhdXNlIH0sCisgICAgICAgICAgICB7IFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpTdG9wQ29tbWFuZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRTdG9wIH0sCisgICAg
ICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpUb2dnbGVQbGF5UGF1c2VDb21tYW5kLCBN
Uk1lZGlhUmVtb3RlQ29tbWFuZFRvZ2dsZVBsYXlQYXVzZSB9LAorICAgICAgICAgICAgeyBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6QmVnaW5TZWVraW5nQmFja3dhcmRDb21tYW5kLCBNUk1lZGlhUmVt
b3RlQ29tbWFuZEJlZ2luUmV3aW5kIH0sCisgICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpFbmRTZWVraW5nQmFja3dhcmRDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZEVuZFJl
d2luZCB9LAorICAgICAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QmVnaW5TZWVraW5n
Rm9yd2FyZENvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kQmVnaW5GYXN0Rm9yd2FyZCB9LAor
ICAgICAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW5kU2Vla2luZ0ZvcndhcmRDb21t
YW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZEVuZEZhc3RGb3J3YXJkIH0sCisgICAgICAgICAgICB7
IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTZWVrVG9QbGF5YmFja1Bvc2l0aW9uQ29tbWFuZCwgTVJN
ZWRpYVJlbW90ZUNvbW1hbmRTZWVrVG9QbGF5YmFja1Bvc2l0aW9uIH0sCisgICAgICAgICAgICB7
IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTa2lwRm9yd2FyZENvbW1hbmQsIE1STWVkaWFSZW1vdGVD
b21tYW5kU2tpcEZvcndhcmQgfSwKKyAgICAgICAgICAgIHsgUGxhdGZvcm1NZWRpYVNlc3Npb246
OlNraXBCYWNrd2FyZENvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kU2tpcEJhY2t3YXJkIH0s
CisgICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOZXh0VHJhY2tDb21tYW5kLCBN
Uk1lZGlhUmVtb3RlQ29tbWFuZE5leHRUcmFjayB9LAorICAgICAgICAgICAgeyBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6UHJldmlvdXNUcmFja0NvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kUHJl
dmlvdXNUcmFjayB9LAorICAgICAgICB9OworCisgICAgICAgIEhhc2hNYXA8UGxhdGZvcm1NZWRp
YVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgTVJNZWRpYVJlbW90ZUNvbW1hbmQs
IFdURjo6SW50SGFzaDxQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRU
eXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVt
b3RlQ29udHJvbENvbW1hbmRUeXBlPj4gbWFwOworICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDog
ZW50cmllcykKKyAgICAgICAgICAgIG1hcC5hZGQoZW50cnkucGxhdGZvcm1Db21tYW5kLCBlbnRy
eS5tZWRpYVJlbW90ZUNvbW1hbmQpOworICAgICAgICByZXR1cm4gbWFwOworICAgIH0oKSk7CisK
KyAgICBhdXRvIGl0ID0gY29tbWFuZE1hcC5nZXQoKS5maW5kKGNvbW1hbmQpOworICAgIGlmIChp
dCAhPSBjb21tYW5kTWFwLmdldCgpLmVuZCgpKQorICAgICAgICByZXR1cm4geyBpdC0+dmFsdWUg
fTsKKworICAgIHJldHVybiB7IH07Cit9CisKIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDb21tYW5k
TGlzdGVuZXI+IFJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6Y3JlYXRlKFJlbW90ZUNvbW1hbmRMaXN0
ZW5lckNsaWVudCYgY2xpZW50KQogewogICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUNvbW1h
bmRMaXN0ZW5lck1hYz4oY2xpZW50KTsKIH0KIAorY29uc3QgUmVtb3RlQ29tbWFuZExpc3RlbmVy
OjpSZW1vdGVDb21tYW5kc1NldCYgUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjOjpkZWZhdWx0Q29t
bWFuZHMoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZW1vdGVDb21tYW5kc1NldD4g
Y29tbWFuZHMoc3RkOjppbml0aWFsaXplcl9saXN0PFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1v
dGVDb250cm9sQ29tbWFuZFR5cGU+IHsKKyAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OlBs
YXlDb21tYW5kLAorICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGF1c2VDb21tYW5kLAor
ICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6VG9nZ2xlUGxheVBhdXNlQ29tbWFuZCwKKyAg
ICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OkJlZ2luU2Vla2luZ0ZvcndhcmRDb21tYW5kLAor
ICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW5kU2Vla2luZ0ZvcndhcmRDb21tYW5kLAor
ICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QmVnaW5TZWVraW5nQmFja3dhcmRDb21tYW5k
LAorICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW5kU2Vla2luZ0JhY2t3YXJkQ29tbWFu
ZCwKKyAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OlNlZWtUb1BsYXliYWNrUG9zaXRpb25D
b21tYW5kLAorICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEZvcndhcmRDb21tYW5k
LAorICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEJhY2t3YXJkQ29tbWFuZCwKKyAg
ICB9KTsKKworICAgIHJldHVybiBjb21tYW5kczsKK30KKworc3RhdGljIGJvb2wgaXNTZWVrQ29t
bWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlIGNvbW1h
bmQpCit7CisgICAgcmV0dXJuIGNvbW1hbmQgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OlNlZWtU
b1BsYXliYWNrUG9zaXRpb25Db21tYW5kCisgICAgICAgIHx8IGNvbW1hbmQgPT0gUGxhdGZvcm1N
ZWRpYVNlc3Npb246OlNraXBGb3J3YXJkQ29tbWFuZAorICAgICAgICB8fCBjb21tYW5kID09IFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpTa2lwQmFja3dhcmRDb21tYW5kCisgICAgICAgIHx8IGNvbW1h
bmQgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OkJlZ2luU2Vla2luZ0ZvcndhcmRDb21tYW5kCisg
ICAgICAgIHx8IGNvbW1hbmQgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OkJlZ2luU2Vla2luZ0Jh
Y2t3YXJkQ29tbWFuZDsKK30KKwogdm9pZCBSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWM6OnVwZGF0
ZVN1cHBvcnRlZENvbW1hbmRzKCkKIHsKICAgICBpZiAoIWlzTWVkaWFSZW1vdGVGcmFtZXdvcmtB
dmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3RhdGljIGNvbnN0IE1STWVkaWFS
ZW1vdGVDb21tYW5kIHN1cHBvcnRlZENvbW1hbmRzW10gPSB7Ci0gICAgICAgIE1STWVkaWFSZW1v
dGVDb21tYW5kUGxheSwKLSAgICAgICAgTVJNZWRpYVJlbW90ZUNvbW1hbmRQYXVzZSwKLSAgICAg
ICAgTVJNZWRpYVJlbW90ZUNvbW1hbmRUb2dnbGVQbGF5UGF1c2UsCi0gICAgICAgIE1STWVkaWFS
ZW1vdGVDb21tYW5kQmVnaW5GYXN0Rm9yd2FyZCwKLSAgICAgICAgTVJNZWRpYVJlbW90ZUNvbW1h
bmRFbmRGYXN0Rm9yd2FyZCwKLSAgICAgICAgTVJNZWRpYVJlbW90ZUNvbW1hbmRCZWdpblJld2lu
ZCwKLSAgICAgICAgTVJNZWRpYVJlbW90ZUNvbW1hbmRFbmRSZXdpbmQsCi0gICAgICAgIE1STWVk
aWFSZW1vdGVDb21tYW5kU2Vla1RvUGxheWJhY2tQb3NpdGlvbiwKLSAgICB9OworICAgIGF1dG8m
IHN1cHBvcnRlZENvbW1hbmRzID0gIW1fcmVnaXN0ZXJlZENvbW1hbmRzLmlzRW1wdHkoKSA/IG1f
cmVnaXN0ZXJlZENvbW1hbmRzIDogZGVmYXVsdENvbW1hbmRzKCk7CisgICAgaWYgKG1fc3VwcG9y
dHNTZWVraW5nID09IGNsaWVudCgpLnN1cHBvcnRzU2Vla2luZygpICYmIG1fY3VycmVudENvbW1h
bmRzID09IHN1cHBvcnRlZENvbW1hbmRzKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGNv
bW1hbmRJbmZvQXJyYXkgPSBhZG9wdENGKENGQXJyYXlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIHN1cHBvcnRlZENvbW1hbmRzLnNpemUoKSwgJmtDRlR5cGVBcnJheUNhbGxCYWNr
cykpOworICAgIGZvciAoYXV0byBwbGF0Zm9ybUNvbW1hbmQgOiBzdXBwb3J0ZWRDb21tYW5kcykg
eworICAgICAgICBpZiAoaXNTZWVrQ29tbWFuZChwbGF0Zm9ybUNvbW1hbmQpICYmICFjbGllbnQo
KS5zdXBwb3J0c1NlZWtpbmcoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgYXV0byBj
b21tYW5kSW5mb0FycmF5ID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBzaXplb2Yoc3VwcG9ydGVkQ29tbWFuZHMpIC8gc2l6ZW9mKE1STWVkaWFSZW1v
dGVDb21tYW5kKSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOworICAgICAgICBhdXRvIGNvbW1h
bmQgPSBtZWRpYVJlbW90ZUNvbW1hbmRGb3JQbGF0Zm9ybUNvbW1hbmQocGxhdGZvcm1Db21tYW5k
KTsKKyAgICAgICAgQVNTRVJUKGNvbW1hbmQpOworICAgICAgICBpZiAoIWNvbW1hbmQpCisgICAg
ICAgICAgICBjb250aW51ZTsKIAotICAgIGZvciAoYXV0byBjb21tYW5kIDogc3VwcG9ydGVkQ29t
bWFuZHMpIHsKICAgICAgICAgYXV0byBjb21tYW5kSW5mbyA9IGFkb3B0Q0YoTVJNZWRpYVJlbW90
ZUNvbW1hbmRJbmZvQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQpKTsKLSAgICAgICAgTVJNZWRp
YVJlbW90ZUNvbW1hbmRJbmZvU2V0Q29tbWFuZChjb21tYW5kSW5mby5nZXQoKSwgY29tbWFuZCk7
CisgICAgICAgIE1STWVkaWFSZW1vdGVDb21tYW5kSW5mb1NldENvbW1hbmQoY29tbWFuZEluZm8u
Z2V0KCksIGNvbW1hbmQudmFsdWUoKSk7CiAgICAgICAgIE1STWVkaWFSZW1vdGVDb21tYW5kSW5m
b1NldEVuYWJsZWQoY29tbWFuZEluZm8uZ2V0KCksIHRydWUpOwogICAgICAgICBDRkFycmF5QXBw
ZW5kVmFsdWUoY29tbWFuZEluZm9BcnJheS5nZXQoKSwgY29tbWFuZEluZm8uZ2V0KCkpOwogICAg
IH0KIAotICAgIGF1dG8gc2Vla0NvbW1hbmRJbmZvID0gYWRvcHRDRihNUk1lZGlhUmVtb3RlQ29t
bWFuZEluZm9DcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCkpOwotICAgIE1STWVkaWFSZW1vdGVD
b21tYW5kSW5mb1NldENvbW1hbmQoc2Vla0NvbW1hbmRJbmZvLmdldCgpLCBNUk1lZGlhUmVtb3Rl
Q29tbWFuZFNlZWtUb1BsYXliYWNrUG9zaXRpb24pOwotICAgIE1STWVkaWFSZW1vdGVDb21tYW5k
SW5mb1NldEVuYWJsZWQoc2Vla0NvbW1hbmRJbmZvLmdldCgpLCBjbGllbnQoKS5zdXBwb3J0c1Nl
ZWtpbmcoKSk7Ci0gICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGNvbW1hbmRJbmZvQXJyYXkuZ2V0KCks
IHNlZWtDb21tYW5kSW5mby5nZXQoKSk7Ci0KICAgICBNUk1lZGlhUmVtb3RlU2V0U3VwcG9ydGVk
Q29tbWFuZHMoY29tbWFuZEluZm9BcnJheS5nZXQoKSwgTVJNZWRpYVJlbW90ZUdldExvY2FsT3Jp
Z2luKCksIG51bGxwdHIsIG51bGxwdHIpOworICAgIG1fY3VycmVudENvbW1hbmRzID0gc3VwcG9y
dGVkQ29tbWFuZHM7CisgICAgbV9zdXBwb3J0c1NlZWtpbmcgPSBjbGllbnQoKS5zdXBwb3J0c1Nl
ZWtpbmcoKTsKIH0KIAogUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjOjpSZW1vdGVDb21tYW5kTGlz
dGVuZXJNYWMoUmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50JiBjbGllbnQpCkBAIC03OSw3ICsx
MzksNyBAQCBSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWM6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lck1h
YyhSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQmCiAgICAgaWYgKCFpc01lZGlhUmVtb3RlRnJh
bWV3b3JrQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHVwZGF0ZVN1cHBvcnRl
ZENvbW1hbmRzKCk7CisgICAgc2NoZWR1bGVTdXBwb3J0ZWRDb21tYW5kc1VwZGF0ZSgpOwogCiAg
ICAgYXV0byB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKTsKICAgICBtX2NvbW1hbmRIYW5k
bGVyID0gTVJNZWRpYVJlbW90ZUFkZEFzeW5jQ29tbWFuZEhhbmRsZXJCbG9jayheKE1STWVkaWFS
ZW1vdGVDb21tYW5kIGNvbW1hbmQsIENGRGljdGlvbmFyeVJlZiBvcHRpb25zLCB2b2lkKF5jb21w
bGV0aW9uKShDRkFycmF5UmVmKSkgewpAQCAtODgsNiArMTQ4LDcgQEAgUmVtb3RlQ29tbWFuZExp
c3RlbmVyTWFjOjpSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMoUmVtb3RlQ29tbWFuZExpc3RlbmVy
Q2xpZW50JgogCiAgICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29t
bWFuZFR5cGUgcGxhdGZvcm1Db21tYW5kIHsgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5vQ29tbWFu
ZCB9OwogICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29tbWFuZEFyZ3VtZW50
IGFyZ3VtZW50IHsgMCB9OworICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29t
bWFuZEFyZ3VtZW50KiBhcmd1bWVudFB0ciA9IG51bGxwdHI7CiAgICAgICAgIE1STWVkaWFSZW1v
dGVDb21tYW5kSGFuZGxlclN0YXR1cyBzdGF0dXMgPSBNUk1lZGlhUmVtb3RlQ29tbWFuZEhhbmRs
ZXJTdGF0dXNTdWNjZXNzOwogCiAgICAgICAgIHN3aXRjaCAoY29tbWFuZCkgewpAQCAtMTI4LDE2
ICsxODksMzcgQEAgUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjOjpSZW1vdGVDb21tYW5kTGlzdGVu
ZXJNYWMoUmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50JgogICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICBDRk51bWJlckdldFZhbHVlKHBvc2l0aW9uUmVmLCBrQ0ZOdW1iZXJEb3VibGVUeXBl
LCAmYXJndW1lbnQuYXNEb3VibGUpOworICAgICAgICAgICAgYXJndW1lbnRQdHIgPSAmYXJndW1l
bnQ7CiAgICAgICAgICAgICBwbGF0Zm9ybUNvbW1hbmQgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
U2Vla1RvUGxheWJhY2tQb3NpdGlvbkNvbW1hbmQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQorICAgICAgICBjYXNlIE1STWVkaWFSZW1vdGVDb21tYW5kU2tpcEZvcndhcmQ6CisgICAg
ICAgIGNhc2UgTVJNZWRpYVJlbW90ZUNvbW1hbmRTa2lwQmFja3dhcmQ6CisgICAgICAgICAgICBp
ZiAoIWNsaWVudC5zdXBwb3J0c1NlZWtpbmcoKSkgeworICAgICAgICAgICAgICAgIHN0YXR1cyA9
IE1STWVkaWFSZW1vdGVDb21tYW5kSGFuZGxlclN0YXR1c0NvbW1hbmRGYWlsZWQ7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChhdXRvIHBv
c2l0aW9uUmVmID0gc3RhdGljX2Nhc3Q8Q0ZOdW1iZXJSZWY+KENGRGljdGlvbmFyeUdldFZhbHVl
KG9wdGlvbnMsIGtNUk1lZGlhUmVtb3RlT3B0aW9uU2tpcEludGVydmFsKSkpIHsKKyAgICAgICAg
ICAgICAgICBDRk51bWJlckdldFZhbHVlKHBvc2l0aW9uUmVmLCBrQ0ZOdW1iZXJEb3VibGVUeXBl
LCAmYXJndW1lbnQuYXNEb3VibGUpOworICAgICAgICAgICAgICAgIGFyZ3VtZW50UHRyID0gJmFy
Z3VtZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwbGF0Zm9ybUNvbW1hbmQgPSAo
Y29tbWFuZCA9PSBNUk1lZGlhUmVtb3RlQ29tbWFuZFNraXBGb3J3YXJkKSA/IFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpTa2lwRm9yd2FyZENvbW1hbmQgOiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2tp
cEJhY2t3YXJkQ29tbWFuZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1STWVk
aWFSZW1vdGVDb21tYW5kTmV4dFRyYWNrOgorICAgICAgICAgICAgcGxhdGZvcm1Db21tYW5kID0g
UGxhdGZvcm1NZWRpYVNlc3Npb246Ok5leHRUcmFja0NvbW1hbmQ7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBNUk1lZGlhUmVtb3RlQ29tbWFuZFByZXZpb3VzVHJhY2s6CisgICAg
ICAgICAgICBwbGF0Zm9ybUNvbW1hbmQgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UHJldmlvdXNU
cmFja0NvbW1hbmQ7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgIExPRyhNZWRpYSwgIlJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYzo6UmVtb3RlQ29tbWFu
ZExpc3RlbmVyTWFjIC0gY29tbWFuZCAldSBub3Qgc3VwcG9ydGVkISIsIGNvbW1hbmQpOwogICAg
ICAgICAgICAgc3RhdHVzID0gTVJNZWRpYVJlbW90ZUNvbW1hbmRIYW5kbGVyU3RhdHVzQ29tbWFu
ZEZhaWxlZDsKICAgICAgICAgfTsKIAogICAgICAgICBpZiAod2Vha1RoaXMgJiYgc3RhdHVzICE9
IE1STWVkaWFSZW1vdGVDb21tYW5kSGFuZGxlclN0YXR1c0NvbW1hbmRGYWlsZWQpCi0gICAgICAg
ICAgICB3ZWFrVGhpcy0+bV9jbGllbnQuZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKHBs
YXRmb3JtQ29tbWFuZCwgJmFyZ3VtZW50KTsKKyAgICAgICAgICAgIHdlYWtUaGlzLT5tX2NsaWVu
dC5kaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQocGxhdGZvcm1Db21tYW5kLCBhcmd1bWVu
dFB0cik7CiAKICAgICAgICAgY29tcGxldGlvbigoX19icmlkZ2UgQ0ZBcnJheVJlZilAW0Aoc3Rh
dHVzKV0pOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLUHJlZmVyZW5jZXMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tQcmVmZXJlbmNlcy5tbQppbmRleCA2MmRjYjMwNmE4OTljYThiYTQyODQ5MmY5Mzc2MTBm
NjhhOWZlNDUzLi4wYzc5YmZmZWQ1YmVkYzc3OWEyYzk4MTIzZjI4ZTcyMzY2MDU0YzNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5t
bQpAQCAtMTQ3OSw2ICsxNDc5LDE2IEBAIHN0YXRpYyBXZWJDb3JlOjpFZGl0YWJsZUxpbmtCZWhh
dmlvciB0b0VkaXRhYmxlTGlua0JlaGF2aW9yKF9XS0VkaXRhYmxlTGlua0JlaGF2CiAgICAgX3By
ZWZlcmVuY2VzLT5zZXRQaXRjaENvcnJlY3Rpb25BbGdvcml0aG0ocGl0Y2hDb3JyZWN0aW9uQWxn
b3JpdGhtKTsKIH0KIAorLSAoQk9PTClfbWVkaWFTZXNzaW9uRW5hYmxlZAoreworICAgIHJldHVy
biBfcHJlZmVyZW5jZXMtPm1lZGlhU2Vzc2lvbkVuYWJsZWQoKTsKK30KKworLSAodm9pZClfc2V0
TWVkaWFTZXNzaW9uRW5hYmxlZDooQk9PTCltZWRpYVNlc3Npb25FbmFibGVkCit7CisgICAgX3By
ZWZlcmVuY2VzLT5zZXRNZWRpYVNlc3Npb25FbmFibGVkKG1lZGlhU2Vzc2lvbkVuYWJsZWQpOwor
fQorCiBAZW5kCiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLUHJlZmVyZW5jZXNQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaAppbmRleCBmMDY5MWZkNTc1MDRmM2NhODExZTc0
YjBkMGEzOWUzZDc4YThkNDExLi43NjY2OTYwMDhmZTJiYjRhZDNmZjYyMTNkMjViMzdiZmZlZGMy
YmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVm
ZXJlbmNlc1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tQcmVmZXJlbmNlc1ByaXZhdGUuaApAQCAtMTcwLDYgKzE3MCw3IEBAIHR5cGVkZWYgTlNfRU5V
TShOU0ludGVnZXIsIF9XS1BpdGNoQ29ycmVjdGlvbkFsZ29yaXRobSkgewogQHByb3BlcnR5IChu
b25hdG9taWMsIHNldHRlcj1fc2V0U3BlZWNoUmVjb2duaXRpb25FbmFibGVkOikgQk9PTCBfc3Bl
ZWNoUmVjb2duaXRpb25FbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSks
IGlvcyhXS19JT1NfVEJBKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudEVuYWJsZWQ6KSBCT09MIF9wcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFBpdGNoQ29ycmVjdGlvbkFs
Z29yaXRobTopIF9XS1BpdGNoQ29ycmVjdGlvbkFsZ29yaXRobSBfcGl0Y2hDb3JyZWN0aW9uQWxn
b3JpdGhtIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJB
KSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRNZWRpYVNlc3Npb25FbmFibGVk
OikgQk9PTCBfbWVkaWFTZXNzaW9uRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiAjaWYgIVRBUkdFVF9PU19JUEhPTkUKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFdlYkdMRW5hYmxlZDopIEJPT0wgX3dlYkdMRW5h
YmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkNWFlMzFmYmVjYTFjN2I5Mzc5ZTRm
Y2VjMzc2ZWM0YjgxOTU1YWQ0Li4yZmIwNDExMmNkYzNhODg4ZDBiYmMyMGIxODVlYzY0MTEwZTJh
ODE0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzMgQEAKKzIwMjEtMDItMDQgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBh
cHBsZS5jb20+CisKKyAgICAgICAgW01hY10gQ29ubmVjdCBNZWRpYVNlc3Npb24gd2l0aCBNZWRp
YVJlbW90ZSBhbmQgTm93UGxheWluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIxNDMxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NDAwMDM2Mz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTWVkaWFTZXNzaW9uLm1tOiBBZGRl
ZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvblRlc3Q6OndlYlZpZXcpOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uVGVzdDo6d2ViVmlld1BpZCk6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25UZXN0OjpnZXROb3dQbGF5aW5nQ2xp
ZW50KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvblRlc3Q6OmdldE5vd1Bs
YXlpbmdDbGllbnRQaWQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uVGVz
dDo6bG9hZFBhZ2VBbmRCZWNvbWVOb3dQbGF5aW5nKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
Ok1lZGlhU2Vzc2lvblRlc3Q6OnJ1blNjcmlwdFdpdGhVc2VyR2VzdHVyZSk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25UZXN0OjpwbGF5KToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6Ok1lZGlhU2Vzc2lvblRlc3Q6OnBhdXNlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
Ok1lZGlhU2Vzc2lvblRlc3Q6OnNlbmRNZWRpYVJlbW90ZUNvbW1hbmQpOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uVGVzdDo6c2VuZE1lZGlhUmVtb3RlU2Vla0NvbW1hbmQp
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uVGVzdDo6bGlzdGVuRm9yRXZl
bnRNZXNzYWdlcyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25UZXN0Ojpl
dmVudExpc3RlbmVyV2FzQ2FsbGVkKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vz
c2lvblRlc3Q6OndhaXRGb3JFdmVudExpc3RlbmVyVG9CZUNhbGxlZCk6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25UZXN0OjpsaXN0ZW5Gb3JTZXNzaW9uSGFuZGxlck1lc3Nh
Z2VzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvblRlc3Q6OnNlc3Npb25I
YW5kbGVyV2FzQ2FsbGVkKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvblRl
c3Q6OndhaXRGb3JTZXNzaW9uSGFuZGxlclRvQmVDYWxsZWQpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6TWVkaWFTZXNzaW9uVGVzdDo6Z2V0U3VwcG9ydGVkQ29tbWFuZHMpOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL21lZGlhLXJlbW90ZS5odG1sOiBBZGRlZC4KKwogMjAyMS0wMi0wNCAgSm9uYXRo
YW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgW1B5dGhvbi0zXSBDaGFu
Z2Ugc2hlYmFuZyBpbiB0ZXN0LXdlYmtpdHB5IChQYXJ0LTEpCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDVjNTk3YTcxZDJlYjM4Nzg2MDdkZTJhZmYzYmQyYzgxNzM2ODMzNmIuLjBiNDhlN2Vh
ZTVhMmJmODZiZDYxYmQwZDkyYjFhZWRlYzcyMzE5OGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC01Niw2ICs1Niw4IEBACiAJCTA3NDk5NDUyMUVBNTAzNEIwMDBEQTQ0RSAvKiBnZXRVc2Vy
TWVkaWEyLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDFCQUY0RTIyNUFDOURCODAwRDgyRjMyIC8qIGdldFVzZXJNZWRpYTIuaHRtbCAq
LzsgfTsKIAkJMDc2RTUwN0YxRjQ1MTNENjAwNkU5RjVBIC8qIExvZ2dpbmcuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2RTUwN0UxRjQ1MDMxRTAw
NkU5RjVBIC8qIExvZ2dpbmcuY3BwICovOyB9OwogCQkwNzdBNUFGMzIzMDYzOEE2MDBBNzEwNUMg
LyogQWNjZXNzaWJpbGl0eVRlc3RQbHVnaW4ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwNzQ2NjQ1ODIyRkY2MzA1MDBFMzQ1MUEgLyogQWNjZXNzaWJp
bGl0eVRlc3RQbHVnaW4ubW0gKi87IH07CisJCTA3OTQ3NDBEMjVDQTBCREUwMEM1OTdFQiAvKiBN
ZWRpYVNlc3Npb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwNzk0NzQwQzI1Q0EwQkRFMDBDNTk3RUIgLyogTWVkaWFTZXNzaW9uLm1tICovOyB9Owor
CQkwNzk0NzQyRDI1Q0IzM0ZEMDBDNTk3RUIgLyogbWVkaWEtcmVtb3RlLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5NDc0MkMyNUNC
MzNCMDAwQzU5N0VCIC8qIG1lZGlhLXJlbW90ZS5odG1sICovOyB9OwogCQkwNzk5QzM0OTFFQkEy
RDdCMDAzQjc1MzIgLyogVXNlck1lZGlhRGlzYWJsZWQubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0VERUZBQzFFQjk0MDBDMDBENDMyOTIgLyogVXNl
ck1lZGlhRGlzYWJsZWQubW0gKi87IH07CiAJCTA3OTlDMzRCMUVCQTMzMDEwMDNCNzUzMiAvKiBk
aXNhYmxlR2V0VXNlck1lZGlhLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5OUMzNEExRUJBMzJGNDAwM0I3NTMyIC8qIGRpc2FibGVH
ZXRVc2VyTWVkaWEuaHRtbCAqLzsgfTsKIAkJMDdDMDQ2Q0ExRTQyNjJBODAwNzIwMUU3IC8qIENB
UmluZ0J1ZmZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwN0MwNDZDOTFFNDI1NzNFMDA3MjAxRTcgLyogQ0FSaW5nQnVmZmVyLmNwcCAqLzsgfTsK
QEAgLTE1NTksNiArMTU2MSw3IEBACiAJCQkJQUQ1N0FDMjIxREE3NDY2RTAwRkYxQkRFIC8qIG1h
bnktaWZyYW1lcy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTc3NzJFQ0UxMjJGRTA2
QzYwMDA5QTc5OSAvKiBtYW55LXNhbWUtb3JpZ2luLWlmcmFtZXMuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLywKIAkJCQlDRDgzOTRERjIzMkFGN0MwMDAxNDk0OTUgLyogbWVkaWEtbG9hZGluZy5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCTA3OTQ3NDJEMjVDQjMzRkQwMEM1OTdFQiAv
KiBtZWRpYS1yZW1vdGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlDREEzMTU5QTFF
RDU0OEYxMDA5RjYwRDMgLyogTWVkaWFQbGF5YmFja1NsZWVwQXNzZXJ0aW9uLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8sCiAJCQkJQ0RDOTQ0MkYxRUYyMDVENjAwNTlDM0M0IC8qIG1lZGlhc3Ry
ZWFtdHJhY2stZGV0YWNoZWQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlFMTIyMERD
QTE1NUIyOEFBMDAxM0UyRkMgLyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2Fk
RGVsZWdhdGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKQEAgLTE3MjIsNiArMTcyNSw4IEBA
CiAJCTA3NDkyQjNBMURGOEFFMkQwMDYzM0RFMSAvKiBFbnVtZXJhdGVNZWRpYURldmljZXMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRW51bWVyYXRlTWVkaWFEZXZp
Y2VzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2NkREMUYxQTVBRDUyMDAw
MjNFM0JCIC8qIFBlbmRpbmdBUElSZXF1ZXN0VVJMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFBlbmRpbmdBUElSZXF1ZXN0VVJMLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMDc2RTUwN0UxRjQ1MDMxRTAwNkU5RjVBIC8qIExvZ2dpbmcuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTG9nZ2luZy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3OTQ3NDBDMjVDQTBCREUwMEM1OTdFQiAvKiBNZWRpYVNl
c3Npb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZWRpYVNl
c3Npb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3OTQ3NDJDMjVDQjMzQjAw
MEM1OTdFQiAvKiBtZWRpYS1yZW1vdGUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9
ICJtZWRpYS1yZW1vdGUuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3OTlD
MzRBMUVCQTMyRjQwMDNCNzUzMiAvKiBkaXNhYmxlR2V0VXNlck1lZGlhLmh0bWwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0Lmh0bWw7IHBhdGggPSBkaXNhYmxlR2V0VXNlck1lZGlhLmh0bWw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTA3QzA0NkM5MUU0MjU3M0UwMDcyMDFFNyAvKiBDQVJpbmdCdWZm
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ0FSaW5nQnVmZmVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdDQzdERkQyMjY2MzMwODAwRTM5
MTgxIC8qIE1lZGlhQnVmZmVyaW5nUG9saWN5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gTWVkaWFCdWZmZXJpbmdQb2xpY3kubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0zMzU5LDYgKzMzNjQsNyBAQAogCQkJCTk1QjZCM0I2MjUxRUJGMkYwMEZD
NDM4MiAvKiBNZWRpYURvY3VtZW50Lm1tICovLAogCQkJCUNEMDM3MEUyMjRBNDRCN0EwMEJBM0NB
RSAvKiBNZWRpYUxvYWRpbmcubW0gKi8sCiAJCQkJMDdFRjc2RDQyNTQwRkMwNjAwNTNFRDUzIC8q
IE1lZGlhTXV0ZWRTdGF0ZS5tbSAqLywKKwkJCQkwNzk0NzQwQzI1Q0EwQkRFMDBDNTk3RUIgLyog
TWVkaWFTZXNzaW9uLm1tICovLAogCQkJCTUxQkU5RTY1MjM3NjA4OTUwMEI0RTExNyAvKiBNZWRp
YVR5cGUubW0gKi8sCiAJCQkJNTE2NUZFMDMyMDFFRTYxNzAwOUY3RUMzIC8qIE1lc3NhZ2VQb3J0
UHJvdmlkZXJzLm1tICovLAogCQkJCTUxQ0QxQzZBMUIzOENFMzYwMDE0MkNBNSAvKiBNb2RhbEFs
ZXJ0cy5tbSAqLywKQEAgLTM5MjIsNiArMzkyOCw3IEBACiAJCQkJNDZDNTE5RTMxRDM1NjI5NjAw
REFBNTFBIC8qIExvY2FsU3RvcmFnZU51bGxFbnRyaWVzLmxvY2Fsc3RvcmFnZSAqLywKIAkJCQk0
NkM1MTlFNDFEMzU2Mjk2MDBEQUE1MUEgLyogTG9jYWxTdG9yYWdlTnVsbEVudHJpZXMubG9jYWxz
dG9yYWdlLXNobSAqLywKIAkJCQk3QTZBMkM3MTFEQ0NGQjAyMDBDMEQwODUgLyogTG9jYWxTdG9y
YWdlUXVpcmtFbmFibGVkLmh0bWwgKi8sCisJCQkJMDc5NDc0MkMyNUNCMzNCMDAwQzU5N0VCIC8q
IG1lZGlhLXJlbW90ZS5odG1sICovLAogCQkJCTlCNTlGMTI5MjAzNDA4NTQwMDlFNjNENSAvKiBt
c28tbGlzdC1jb21wYXQtbW9kZS5odG1sICovLAogCQkJCTlCQ0Q0MTE5MjA2RDVFRDcwMDFENzFC
RSAvKiBtc28tbGlzdC1vbi1oNC5odG1sICovLAogCQkJCTlCRjM1NkNDMjAyRDQ0RjIwMEY3MTE2
MCAvKiBtc28tbGlzdC5odG1sICovLApAQCAtNTM4Myw2ICs1MzkwLDcgQEAKIAkJCQlDRDAzNzBF
MzI0QTQ0RDk2MDBCQTNDQUUgLyogTWVkaWFMb2FkaW5nLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MDdFRjc2RDUyNTQwRkMwNjAwNTNFRDUzIC8qIE1lZGlhTXV0ZWRTdGF0ZS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUNEQTMxNTk4MUVENTM2NTEwMDlGNjBEMyAvKiBNZWRpYVBsYXliYWNrU2xlZXBB
c3NlcnRpb24ubW0gaW4gU291cmNlcyAqLywKKwkJCQkwNzk0NzQwRDI1Q0EwQkRFMDBDNTk3RUIg
LyogTWVkaWFTZXNzaW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RDOTQ0MkUxRUYxRkMwODAw
NTlDM0M0IC8qIE1lZGlhU3RyZWFtVHJhY2tEZXRhY2hlZC5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTUxQkU5RTY2MjM3NjA4OUYwMEI0RTExNyAvKiBNZWRpYVR5cGUubW0gaW4gU291cmNlcyAqLywK
IAkJCQk3Q0NFN0VDNTFBNDExQTdFMDA0NDdDNEMgLyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGlu
UmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKQEAgLTU0MjEsNiArNTQyOSw3
IEBACiAJCQkJQzEwNEJDMUYyNTQ3MjM3MTAwQzA3OEM5IC8qIE92ZXJyaWRlQXBwbGVMYW5ndWFn
ZXNQcmVmZXJlbmNlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0VCQ0ExMkYxRTNBNjYwMTAwQzcz
MjkzIC8qIE92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5Lm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMkRBMjU4NkYyMjVDNjdEQzAwQjQ1QzFDIC8qIE92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMu
bW0gaW4gU291cmNlcyAqLywKKwkJCQk5NTNBQkIzNTI1QzBENjgyMDA0QzhCNzMgLyogUGFnZUV4
dGVuZGVkQmFja2dyb3VuZENvbG9yLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDQjREQTkxQzgz
QUU3MzAwQ0M2OTE4IC8qIFBhZ2VHcm91cC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0Yw
NzFBNDExQUU2MDA0NDdDNEMgLyogUGFnZUxvYWRCYXNpYy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk3Q0NFN0YwODFBNDExQUU2MDA0NDdDNEMgLyogUGFnZUxvYWREaWRDaGFuZ2VMb2NhdGlvbldp
dGhpblBhZ2VGb3JGcmFtZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTU0NjQsNyArNTQ3Myw2IEBA
CiAJCQkJNTE4QzExNTMyMDVCMDUwNDAwMUZGNEFFIC8qIFByb2Nlc3NTd2FwT25OYXZpZ2F0aW9u
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRkVDMkE4NTYyNENFQjY1RjAwQURCQzM1IC8qIFByb3Bl
cnR5U2xvdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzRTBDMTFEMEE2NTJGMDBGRUJDRjMg
LyogUHJvdmlzaW9uYWxVUkxOb3RDaGFuZ2UubW0gaW4gU291cmNlcyAqLywKLQkJCQk5NTNBQkIz
NTI1QzBENjgyMDA0QzhCNzMgLyogUGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJNUNGQUNGNjUyMjZGRDJEQzAwNTZDN0QwIC8qIFByb3h5Lm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMDQxQTFFMzQyMTZGRkRCQzAwNzg5RTBBIC8qIFB1YmxpY1N1ZmZpeC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzRTBDMjFEMEE2NTM1MDBGRUJDRjMgLyogUXVpY2tM
b29rLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL01lZGlhU2Vzc2lvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvTWVkaWFTZXNzaW9uLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyZGRkMGQ5MTU2YjE0
MjkzYTA5MTJlOWE5YWMyZDE4OGViODM3NmYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL01lZGlhU2Vzc2lvbi5tbQpAQCAtMCwwICsxLDM3
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaWYgUExBVEZPUk0oTUFD
KSAmJiBFTkFCTEUoTUVESUFfU0VTU0lPTikKKworI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMu
aCIKKyNpbXBvcnQgIlRlc3QuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQg
PFdlYktpdC9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmll
d0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0
ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dlYlZpZXdQcml2YXRlLmg+CisjaW1wb3J0IDxwYWwvc3Bp
L21hYy9NZWRpYVJlbW90ZVNQSS5oPgorI2ltcG9ydCA8d3RmL0Z1bmN0aW9uLmg+CisjaW1wb3J0
IDx3dGYvSGFzaFNldC5oPgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW1wb3J0
IDx3dGYvU29mdExpbmtpbmcuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNp
bXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdP
UksoTWVkaWFSZW1vdGUpCisKK1NPRlRfTElOSyhNZWRpYVJlbW90ZSwgTVJNZWRpYVJlbW90ZVNl
bmRDb21tYW5kVG9BcHAsIEJvb2xlYW4sIChNUk1lZGlhUmVtb3RlQ29tbWFuZCBjb21tYW5kLCBD
RkRpY3Rpb25hcnlSZWYgb3B0aW9ucywgTVJPcmlnaW5SZWYgb3JpZ2luLCBDRlN0cmluZ1JlZiBh
cHBEaXNwbGF5SUQsIE1SU2VuZENvbW1hbmRBcHBPcHRpb25zIGFwcE9wdGlvbnMsIGRpc3BhdGNo
X3F1ZXVlX3QgcmVwbHlRLCB2b2lkKF5jb21wbGV0aW9uKShNUlNlbmRDb21tYW5kRXJyb3IgZXJy
LCBDRkFycmF5UmVmIGhhbmRsZXJSZXR1cm5TdGF0dXNlcykpLCAoY29tbWFuZCwgb3B0aW9ucywg
b3JpZ2luLCBhcHBEaXNwbGF5SUQsIGFwcE9wdGlvbnMsIHJlcGx5USwgY29tcGxldGlvbikpOwor
I2RlZmluZSBNUk1lZGlhUmVtb3RlU2VuZENvbW1hbmRUb0FwcCBzb2Z0TGlua01STWVkaWFSZW1v
dGVTZW5kQ29tbWFuZFRvQXBwCisKK1NPRlRfTElOSyhNZWRpYVJlbW90ZSwgTVJNZWRpYVJlbW90
ZUdldExvY2FsT3JpZ2luLCBNUk9yaWdpblJlZiwgKCksICgpKTsKKyNkZWZpbmUgTVJNZWRpYVJl
bW90ZUdldExvY2FsT3JpZ2luIHNvZnRMaW5rTVJNZWRpYVJlbW90ZUdldExvY2FsT3JpZ2luCisK
K1NPRlRfTElOSyhNZWRpYVJlbW90ZSwgTVJNZWRpYVJlbW90ZUdldFN1cHBvcnRlZENvbW1hbmRz
Rm9yT3JpZ2luLCB2b2lkLCAoTVJPcmlnaW5SZWYgb3JpZ2luLCBkaXNwYXRjaF9xdWV1ZV90IHF1
ZXVlLCB2b2lkKF5jb21wbGV0aW9uKShDRkFycmF5UmVmIGNvbW1hbmRzKSksIChvcmlnaW4sIHF1
ZXVlLCBjb21wbGV0aW9uKSk7CisjZGVmaW5lIE1STWVkaWFSZW1vdGVHZXRTdXBwb3J0ZWRDb21t
YW5kc0Zvck9yaWdpbiBzb2Z0TGlua01STWVkaWFSZW1vdGVHZXRTdXBwb3J0ZWRDb21tYW5kc0Zv
ck9yaWdpbgorCitTT0ZUX0xJTksoTWVkaWFSZW1vdGUsIE1STWVkaWFSZW1vdGVHZXROb3dQbGF5
aW5nQ2xpZW50LCB2b2lkLCAoZGlzcGF0Y2hfcXVldWVfdCBxdWV1ZSwgdm9pZCheY29tcGxldGlv
bikoTVJOb3dQbGF5aW5nQ2xpZW50UmVmLCBDRkVycm9yUmVmKSksIChxdWV1ZSwgY29tcGxldGlv
bikpCisjZGVmaW5lIE1STWVkaWFSZW1vdGVHZXROb3dQbGF5aW5nQ2xpZW50IHNvZnRMaW5rTVJN
ZWRpYVJlbW90ZUdldE5vd1BsYXlpbmdDbGllbnQKKworU09GVF9MSU5LKE1lZGlhUmVtb3RlLCBN
Uk5vd1BsYXlpbmdDbGllbnRHZXRQcm9jZXNzSWRlbnRpZmllciwgcGlkX3QsIChNUk5vd1BsYXlp
bmdDbGllbnRSZWYgY2xpZW50KSwgKGNsaWVudCkpCisjZGVmaW5lIE1STm93UGxheWluZ0NsaWVu
dEdldFByb2Nlc3NJZGVudGlmaWVyIHNvZnRMaW5rTVJOb3dQbGF5aW5nQ2xpZW50R2V0UHJvY2Vz
c0lkZW50aWZpZXIKKworU09GVF9MSU5LX0NPTlNUQU5UKE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJl
bW90ZU9wdGlvblNraXBJbnRlcnZhbCwgQ0ZTdHJpbmdSZWYpCisjZGVmaW5lIGtNUk1lZGlhUmVt
b3RlT3B0aW9uU2tpcEludGVydmFsIGdldGtNUk1lZGlhUmVtb3RlT3B0aW9uU2tpcEludGVydmFs
KCkKKworU09GVF9MSU5LX0NPTlNUQU5UKE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU9wdGlv
blBsYXliYWNrUG9zaXRpb24sIENGU3RyaW5nUmVmKQorI2RlZmluZSBrTVJNZWRpYVJlbW90ZU9w
dGlvblBsYXliYWNrUG9zaXRpb24gZ2V0a01STWVkaWFSZW1vdGVPcHRpb25QbGF5YmFja1Bvc2l0
aW9uKCkKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitjbGFzcyBNZWRpYVNlc3Npb25U
ZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworcHVibGljOgorICAgIHZvaWQgU2V0VXAoKSBm
aW5hbAorICAgIHsKKyAgICAgICAgX2NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgICAgICBbX2NvbmZpZ3VyYXRpb24gc2V0
TWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjazpXS0F1ZGlvdmlzdWFsTWVk
aWFUeXBlQXVkaW9dOworCisgICAgICAgIF93ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAzMDAsIDMwMCkgY29uZmln
dXJhdGlvbjpfY29uZmlndXJhdGlvbi5nZXQoKSBhZGRUb1dpbmRvdzpZRVNdKTsKKworICAgICAg
ICBXS1ByZWZlcmVuY2VzICpwcmVmZXJlbmNlcyA9IFtfd2ViVmlldyBjb25maWd1cmF0aW9uXS5w
cmVmZXJlbmNlczsKKyAgICAgICAgcHJlZmVyZW5jZXMuX21lZGlhU2Vzc2lvbkVuYWJsZWQgPSBZ
RVM7CisKKyAgICAgICAgX21lc3NhZ2VIYW5kbGVycyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJh
eSBhbGxvY10gaW5pdF0pOworICAgIH0KKworICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQor
ICAgIHsKKyAgICAgICAgW193ZWJWaWV3IGNsZWFyTWVzc2FnZUhhbmRsZXJzOl9tZXNzYWdlSGFu
ZGxlcnMuZ2V0KCldOworICAgIH0KKworICAgIFRlc3RXS1dlYlZpZXcqIHdlYlZpZXcoKSB7IHJl
dHVybiBfd2ViVmlldy5nZXQoKTsgfQorCisgICAgcGlkX3Qgd2ViVmlld1BpZCgpIHsgcmV0dXJu
IFtfd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdOyB9CisKKyAgICBSZXRhaW5QdHI8TVJO
b3dQbGF5aW5nQ2xpZW50UmVmPiBnZXROb3dQbGF5aW5nQ2xpZW50KCkKKyAgICB7CisgICAgICAg
IGJvb2wgZ290Tm93UGxheWluZyA9IGZhbHNlOworICAgICAgICBSZXRhaW5QdHI8TVJOb3dQbGF5
aW5nQ2xpZW50UmVmPiBub3dQbGF5aW5nQ2xpZW50OworICAgICAgICBNUk1lZGlhUmVtb3RlR2V0
Tm93UGxheWluZ0NsaWVudChkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbJl0gKE1STm93UGxh
eWluZ0NsaWVudFJlZiBwbGF5ZXIsIENGRXJyb3JSZWYgZXJyb3IpIHsKKyAgICAgICAgICAgIGlm
ICghZXJyb3IgJiYgcGxheWVyKQorICAgICAgICAgICAgICAgIG5vd1BsYXlpbmdDbGllbnQgPSBw
bGF5ZXI7CisgICAgICAgICAgICBnb3ROb3dQbGF5aW5nID0gdHJ1ZTsKKyAgICAgICAgfSk7Cisg
ICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZ290Tm93UGxheWluZyk7CisgICAgICAg
IHJldHVybiBub3dQbGF5aW5nQ2xpZW50OworICAgIH0KKworICAgIHBpZF90IGdldE5vd1BsYXlp
bmdDbGllbnRQaWQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE1STm93UGxheWluZ0NsaWVudEdl
dFByb2Nlc3NJZGVudGlmaWVyKGdldE5vd1BsYXlpbmdDbGllbnQoKS5nZXQoKSk7CisgICAgfQor
CisgICAgdm9pZCBsb2FkUGFnZUFuZEJlY29tZU5vd1BsYXlpbmcoY29uc3QgU3RyaW5nJiBwYWdl
TmFtZSkKKyAgICB7CisgICAgICAgIFtfd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdl
TmFtZWQ6cGFnZU5hbWVdOworCisgICAgICAgIGJvb2wgY2FucGxheXRocm91Z2ggPSBmYWxzZTsK
KyAgICAgICAgW3dlYlZpZXcoKSBwZXJmb3JtQWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOkAiY2FucGxh
eXRocm91Z2ggZXZlbnQiIGFjdGlvbjpbJl0geworICAgICAgICAgICAgY2FucGxheXRocm91Z2gg
PSB0cnVlOworICAgICAgICB9XTsKKyAgICAgICAgcnVuU2NyaXB0V2l0aFVzZXJHZXN0dXJlKCJs
b2FkKCkiKTsKKyAgICAgICAgVXRpbDo6cnVuKCZjYW5wbGF5dGhyb3VnaCk7CisKKyAgICAgICAg
cGxheSgpOworICAgICAgICBwYXVzZSgpOworICAgICAgICBBU1NFUlRfRVEod2ViVmlld1BpZCgp
LCBnZXROb3dQbGF5aW5nQ2xpZW50UGlkKCkpOworICAgIH0KKworICAgIHZvaWQgcnVuU2NyaXB0
V2l0aFVzZXJHZXN0dXJlKGNvbnN0IFN0cmluZyYgc2NyaXB0KQorICAgIHsKKyAgICAgICAgYm9v
bCBjb21wbGV0ZSA9IGZhbHNlOworICAgICAgICBbX3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0
OnNjcmlwdCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkLCBOU0Vycm9yICopIHsgY29tcGxldGUg
PSB0cnVlOyB9XTsKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZjb21wbGV0ZSk7
CisgICAgfQorCisgICAgdm9pZCBwbGF5KCkKKyAgICB7CisgICAgICAgIGJvb2wgcGxheWluZyA9
IGZhbHNlOworICAgICAgICBbX3dlYlZpZXcgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpA
InBsYXkgZXZlbnQiIGFjdGlvbjpbJl0geyBwbGF5aW5nID0gdHJ1ZTsgfV07CisgICAgICAgIHJ1
blNjcmlwdFdpdGhVc2VyR2VzdHVyZSgiYXVkaW8ucGxheSgpIik7CisgICAgICAgIFV0aWw6OnJ1
bigmcGxheWluZyk7CisgICAgfQorCisgICAgdm9pZCBwYXVzZSgpCisgICAgeworICAgICAgICBi
b29sIHBhdXNlZCA9IGZhbHNlOworICAgICAgICBbX3dlYlZpZXcgcGVyZm9ybUFmdGVyUmVjZWl2
aW5nTWVzc2FnZTpAInBhdXNlIGV2ZW50IiBhY3Rpb246WyZdIHsgcGF1c2VkID0gdHJ1ZTsgfV07
CisgICAgICAgIHJ1blNjcmlwdFdpdGhVc2VyR2VzdHVyZSgiYXVkaW8ucGF1c2UoKSIpOworICAg
ICAgICBVdGlsOjpydW4oJnBhdXNlZCk7CisgICAgfQorCisgICAgYm9vbCBzZW5kTWVkaWFSZW1v
dGVDb21tYW5kKE1STWVkaWFSZW1vdGVDb21tYW5kIGNvbW1hbmQsIENGRGljdGlvbmFyeVJlZiBv
cHRpb25zID0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIGJvb2wgY29tcGxldGVkID0gZmFsc2U7
CisgICAgICAgIGJvb2wgc3VjY2VzczsKKworICAgICAgICBNUk1lZGlhUmVtb3RlU2VuZENvbW1h
bmRUb0FwcChjb21tYW5kLCBvcHRpb25zLCBOVUxMLCBOVUxMLCBzdGF0aWNfY2FzdDxNUlNlbmRD
b21tYW5kQXBwT3B0aW9ucz4oMCksIE5VTEwsIFsmXSAoTVJTZW5kQ29tbWFuZEVycm9yIGVycm9y
LCBDRkFycmF5UmVmKSB7CisgICAgICAgICAgICBzdWNjZXNzID0gIWVycm9yOworICAgICAgICAg
ICAgY29tcGxldGVkID0gdHJ1ZTsKKyAgICAgICAgfSk7CisgICAgICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmY29tcGxldGVkKTsKKworICAgICAgICByZXR1cm4gc3VjY2VzczsKKyAgICB9
CisKKyAgICBib29sIHNlbmRNZWRpYVJlbW90ZVNlZWtDb21tYW5kKE1STWVkaWFSZW1vdGVDb21t
YW5kIGNvbW1hbmQsIGRvdWJsZSBpbnRlcnZhbCkKKyAgICB7CisgICAgICAgIENGU3RyaW5nUmVm
IHNlZWtJbnRlcnZhbCA9IChjb21tYW5kID09IE1STWVkaWFSZW1vdGVDb21tYW5kU2Vla1RvUGxh
eWJhY2tQb3NpdGlvbikgPyBrTVJNZWRpYVJlbW90ZU9wdGlvblBsYXliYWNrUG9zaXRpb24gOiBr
TVJNZWRpYVJlbW90ZU9wdGlvblNraXBJbnRlcnZhbDsKKyAgICAgICAgTlNEaWN0aW9uYXJ5ICpv
cHRpb25zID0gQHsoX19icmlkZ2UgTlNTdHJpbmcgKilzZWVrSW50ZXJ2YWwgOiBAKGludGVydmFs
KX07CisgICAgICAgIHJldHVybiBzZW5kTWVkaWFSZW1vdGVDb21tYW5kKGNvbW1hbmQsIChfX2Jy
aWRnZSBDRkRpY3Rpb25hcnlSZWYpb3B0aW9ucyk7CisgICAgfQorCisgICAgdm9pZCBsaXN0ZW5G
b3JFdmVudE1lc3NhZ2VzKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxjb25zdCBjaGFyKj4gZXZlbnRz
KQorICAgIHsKKyAgICAgICAgZm9yIChhdXRvKiBldmVudCA6IGV2ZW50cykgeworICAgICAgICAg
ICAgYXV0byBldmVudE1lc3NhZ2UgPSBtYWtlU3RyaW5nKGV2ZW50LCAiIGV2ZW50Iik7CisgICAg
ICAgICAgICBbX21lc3NhZ2VIYW5kbGVycyBhZGRPYmplY3Q6ZXZlbnRNZXNzYWdlXTsKKyAgICAg
ICAgICAgIFt3ZWJWaWV3KCkgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpldmVudE1lc3Nh
Z2UgYWN0aW9uOlt0aGlzLCBldmVudE1lc3NhZ2UgPSBXVEZNb3ZlKGV2ZW50TWVzc2FnZSldIHsK
KyAgICAgICAgICAgICAgICBfZXZlbnRMaXN0ZW5lcnNDYWxsZWQuYWRkKGV2ZW50TWVzc2FnZSk7
CisgICAgICAgICAgICB9XTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGJvb2wgZXZlbnRMaXN0
ZW5lcldhc0NhbGxlZChjb25zdCBTdHJpbmcmIGV2ZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IF9ldmVudExpc3RlbmVyc0NhbGxlZC5jb250YWlucyhtYWtlU3RyaW5nKGV2ZW50LCAiIGV2ZW50
IikpOworICAgIH0KKworICAgIHZvaWQgd2FpdEZvckV2ZW50TGlzdGVuZXJUb0JlQ2FsbGVkKGNv
bnN0IFN0cmluZyYgZXZlbnQpCisgICAgeworICAgICAgICBpbnQgdHJpZXMgPSAwOworICAgICAg
ICBkbyB7CisgICAgICAgICAgICBpZiAoZXZlbnRMaXN0ZW5lcldhc0NhbGxlZChldmVudCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgVXRpbDo6c2xlZXAoMC4xKTsKKyAg
ICAgICAgfSB3aGlsZSAoKyt0cmllcyA8PSA1MCk7CisKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIHZvaWQgbGlzdGVuRm9yU2Vzc2lvbkhhbmRsZXJNZXNzYWdlcyhzdGQ6OmluaXRpYWxp
emVyX2xpc3Q8Y29uc3QgY2hhcio+IGhhbmRsZXJzKQorICAgIHsKKyAgICAgICAgZm9yIChhdXRv
KiBoYW5kbGVyIDogaGFuZGxlcnMpIHsKKyAgICAgICAgICAgIGF1dG8gaGFuZGxlck1lc3NhZ2Ug
PSBtYWtlU3RyaW5nKGhhbmRsZXIsICIgaGFuZGxlciIpOworICAgICAgICAgICAgW19tZXNzYWdl
SGFuZGxlcnMgYWRkT2JqZWN0OmhhbmRsZXJNZXNzYWdlXTsKKyAgICAgICAgICAgIFt3ZWJWaWV3
KCkgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpoYW5kbGVyTWVzc2FnZSBhY3Rpb246W3Ro
aXMsIGhhbmRsZXJNZXNzYWdlID0gV1RGTW92ZShoYW5kbGVyTWVzc2FnZSldIHsKKyAgICAgICAg
ICAgICAgICBfbWVkaWFTZXNzaW9uSGFuZGxlcnNDYWxsZWQuYWRkKGhhbmRsZXJNZXNzYWdlKTsK
KyAgICAgICAgICAgIH1dOworICAgICAgICB9CisgICAgfQorCisgICAgYm9vbCBzZXNzaW9uSGFu
ZGxlcldhc0NhbGxlZChjb25zdCBTdHJpbmcmIGhhbmRsZXIpCisgICAgeworICAgICAgICByZXR1
cm4gX21lZGlhU2Vzc2lvbkhhbmRsZXJzQ2FsbGVkLmNvbnRhaW5zKG1ha2VTdHJpbmcoaGFuZGxl
ciwgIiBoYW5kbGVyIikpOworICAgIH0KKworICAgIHZvaWQgd2FpdEZvclNlc3Npb25IYW5kbGVy
VG9CZUNhbGxlZChjb25zdCBTdHJpbmcmIGhhbmRsZXIpCisgICAgeworICAgICAgICBpbnQgdHJp
ZXMgPSAwOworICAgICAgICBkbyB7CisgICAgICAgICAgICBpZiAoc2Vzc2lvbkhhbmRsZXJXYXND
YWxsZWQoaGFuZGxlcikpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgVXRp
bDo6c2xlZXAoMC4xKTsKKyAgICAgICAgfSB3aGlsZSAoKyt0cmllcyA8PSA1MCk7CisKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIFJldGFpblB0cjxOU0FycmF5PiBnZXRTdXBwb3J0ZWRD
b21tYW5kcygpCisgICAgeworICAgICAgICBib29sIGNvbXBsZXRlZCA9IGZhbHNlOworICAgICAg
ICBSZXRhaW5QdHI8TlNBcnJheT4gcmVzdWx0OworCisgICAgICAgIE1STWVkaWFSZW1vdGVHZXRT
dXBwb3J0ZWRDb21tYW5kc0Zvck9yaWdpbihNUk1lZGlhUmVtb3RlR2V0TG9jYWxPcmlnaW4oKSwg
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgWyZdIChDRkFycmF5UmVmIGNvbW1hbmRzKSB7Cisg
ICAgICAgICAgICByZXN1bHQgPSAoX19icmlkZ2UgTlNBcnJheSAqKWNvbW1hbmRzOworICAgICAg
ICAgICAgY29tcGxldGVkID0gdHJ1ZTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZjb21wbGV0ZWQpOworCisgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBf
Y29uZmlndXJhdGlvbjsKKyAgICBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gX3dlYlZpZXc7CisK
KyAgICBIYXNoU2V0PFN0cmluZz4gX21lZGlhU2Vzc2lvbkhhbmRsZXJzQ2FsbGVkOworICAgIEhh
c2hTZXQ8U3RyaW5nPiBfZXZlbnRMaXN0ZW5lcnNDYWxsZWQ7CisgICAgUmV0YWluUHRyPE5TTXV0
YWJsZUFycmF5PiBfbWVzc2FnZUhhbmRsZXJzOworfTsKKworVEVTVF9GKE1lZGlhU2Vzc2lvblRl
c3QsIE9ubHlPbmVIYW5kbGVyKQoreworICAgIGxvYWRQYWdlQW5kQmVjb21lTm93UGxheWluZygi
bWVkaWEtcmVtb3RlIik7CisKKyAgICBbd2ViVmlldygpIG9iamVjdEJ5RXZhbHVhdGluZ0phdmFT
Y3JpcHQ6QCJzZXRFbXB0eUFjdGlvbkhhbmRsZXJzKFsgJ3BsYXknIF0pIl07CisKKyAgICBsaXN0
ZW5Gb3JTZXNzaW9uSGFuZGxlck1lc3NhZ2VzKHsgInBsYXkiLCAicGF1c2UiLCAic2Vla3RvIiwg
InNlZWtmb3J3YXJkIiwgInNlZWtiYWNrd2FyZCIsICJwcmV2aW91c3RyYWNrIiwgIm5leHR0cmFj
ayIgfSk7CisgICAgbGlzdGVuRm9yRXZlbnRNZXNzYWdlcyh7ICJwbGF5IiwgInBhdXNlIiwgInNl
ZWtlZCIgfSk7CisKKyAgICBzdGF0aWMgVmVjdG9yPE1STWVkaWFSZW1vdGVDb21tYW5kPiByZWdp
c3RlcmVkQ29tbWFuZHMgPSB7IE1STWVkaWFSZW1vdGVDb21tYW5kUGxheSB9OworICAgIGF1dG8g
Y3VycmVudENvbW1hbmRzID0gZ2V0U3VwcG9ydGVkQ29tbWFuZHMoKTsKKyAgICBmb3IgKE1SQ29t
bWFuZEluZm8gKmNvbW1hbmQgaW4gY3VycmVudENvbW1hbmRzLmdldCgpKSB7CisgICAgICAgIGlm
ICghY29tbWFuZC5lbmFibGVkKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIAorICAg
ICAgICBBU1NFUlRfVFJVRShyZWdpc3RlcmVkQ29tbWFuZHMuY29udGFpbnMoY29tbWFuZC5jb21t
YW5kKSk7CisgICAgfQorCisgICAgQVNTRVJUX1RSVUUoc2VuZE1lZGlhUmVtb3RlQ29tbWFuZChN
Uk1lZGlhUmVtb3RlQ29tbWFuZFBsYXkpKTsKKyAgICB3YWl0Rm9yU2Vzc2lvbkhhbmRsZXJUb0Jl
Q2FsbGVkKCJwbGF5Iik7CisgICAgQVNTRVJUX1RSVUUoc2Vzc2lvbkhhbmRsZXJXYXNDYWxsZWQo
InBsYXkiKSk7CisgICAgQVNTRVJUX0ZBTFNFKGV2ZW50TGlzdGVuZXJXYXNDYWxsZWQoInBsYXki
KSk7CisKKyAgICAvLyBUaGUgbWVkaWEgc2Vzc2lvbiBvbmx5IHJlZ2lzdGVyZWQgZm9yIFBsYXks
IGJ1dCBubyBvdGhlciBjb21tYW5kcyBzaG91bGQgcmVhY2ggSFRNTE1lZGlhRWxlbWVudC4KKyAg
ICBBU1NFUlRfVFJVRShzZW5kTWVkaWFSZW1vdGVTZWVrQ29tbWFuZChNUk1lZGlhUmVtb3RlQ29t
bWFuZFNraXBGb3J3YXJkLCAxKSk7CisgICAgQVNTRVJUX0ZBTFNFKHNlc3Npb25IYW5kbGVyV2Fz
Q2FsbGVkKCJzZWVrZm9yd2FyZCIpKTsKKyAgICBBU1NFUlRfRkFMU0UoZXZlbnRMaXN0ZW5lcldh
c0NhbGxlZCgic2Vla2VkIikpOworCisgICAgQVNTRVJUX1RSVUUoc2VuZE1lZGlhUmVtb3RlU2Vl
a0NvbW1hbmQoTVJNZWRpYVJlbW90ZUNvbW1hbmRTa2lwQmFja3dhcmQsIDEwKSk7CisgICAgQVNT
RVJUX0ZBTFNFKHNlc3Npb25IYW5kbGVyV2FzQ2FsbGVkKCJzZWVrYmFja3dhcmQiKSk7CisgICAg
QVNTRVJUX0ZBTFNFKGV2ZW50TGlzdGVuZXJXYXNDYWxsZWQoInNlZWtlZCIpKTsKKworICAgIEFT
U0VSVF9UUlVFKHNlbmRNZWRpYVJlbW90ZVNlZWtDb21tYW5kKE1STWVkaWFSZW1vdGVDb21tYW5k
U2Vla1RvUGxheWJhY2tQb3NpdGlvbiwgNikpOworICAgIEFTU0VSVF9GQUxTRShzZXNzaW9uSGFu
ZGxlcldhc0NhbGxlZCgic2Vla3RvIikpOworICAgIEFTU0VSVF9GQUxTRShldmVudExpc3RlbmVy
V2FzQ2FsbGVkKCJzZWVrZWQiKSk7CisKKyAgICBBU1NFUlRfVFJVRShzZW5kTWVkaWFSZW1vdGVD
b21tYW5kKE1STWVkaWFSZW1vdGVDb21tYW5kTmV4dFRyYWNrKSk7CisgICAgQVNTRVJUX0ZBTFNF
KHNlc3Npb25IYW5kbGVyV2FzQ2FsbGVkKCJuZXh0dHJhY2siKSk7CisKKyAgICBBU1NFUlRfVFJV
RShzZW5kTWVkaWFSZW1vdGVDb21tYW5kKE1STWVkaWFSZW1vdGVDb21tYW5kUHJldmlvdXNUcmFj
aykpOworICAgIEFTU0VSVF9GQUxTRShzZXNzaW9uSGFuZGxlcldhc0NhbGxlZCgicHJldmlvdXN0
cmFjayIpKTsKK30KKworVEVTVF9GKE1lZGlhU2Vzc2lvblRlc3QsIFJlbW90ZUNvbW1hbmRzKQor
eworICAgIGxvYWRQYWdlQW5kQmVjb21lTm93UGxheWluZygibWVkaWEtcmVtb3RlIik7CisKKyAg
ICBbd2ViVmlldygpIG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJzZXRFbXB0eUFjdGlv
bkhhbmRsZXJzKFsgJ3BsYXknLCAncGF1c2UnLCAnc2Vla3RvJywgJ3NlZWtmb3J3YXJkJywgJ3Nl
ZWtiYWNrd2FyZCcsICdwcmV2aW91c3RyYWNrJywgJ25leHR0cmFjaycgXSkiXTsKKworICAgIGxp
c3RlbkZvclNlc3Npb25IYW5kbGVyTWVzc2FnZXMoeyAicGxheSIsICJwYXVzZSIsICJzZWVrdG8i
LCAic2Vla2ZvcndhcmQiLCAic2Vla2JhY2t3YXJkIiwgInByZXZpb3VzdHJhY2siLCAibmV4dHRy
YWNrIiB9KTsKKyAgICBsaXN0ZW5Gb3JFdmVudE1lc3NhZ2VzKHsgInBsYXkiLCAicGF1c2UiLCAi
c2Vla2VkIiB9KTsKKworICAgIHN0YXRpYyBWZWN0b3I8TVJNZWRpYVJlbW90ZUNvbW1hbmQ+IHJl
Z2lzdGVyZWRDb21tYW5kcyA9IHsgTVJNZWRpYVJlbW90ZUNvbW1hbmRQbGF5LCBNUk1lZGlhUmVt
b3RlQ29tbWFuZFBhdXNlLCBNUk1lZGlhUmVtb3RlQ29tbWFuZFNlZWtUb1BsYXliYWNrUG9zaXRp
b24sIE1STWVkaWFSZW1vdGVDb21tYW5kU2tpcEZvcndhcmQsIE1STWVkaWFSZW1vdGVDb21tYW5k
U2tpcEJhY2t3YXJkLCBNUk1lZGlhUmVtb3RlQ29tbWFuZFByZXZpb3VzVHJhY2ssIE1STWVkaWFS
ZW1vdGVDb21tYW5kTmV4dFRyYWNrIH07CisgICAgYXV0byBjdXJyZW50Q29tbWFuZHMgPSBnZXRT
dXBwb3J0ZWRDb21tYW5kcygpOworICAgIGZvciAoTVJDb21tYW5kSW5mbyAqY29tbWFuZCBpbiBj
dXJyZW50Q29tbWFuZHMuZ2V0KCkpIHsKKyAgICAgICAgaWYgKCFjb21tYW5kLmVuYWJsZWQpCisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgCisgICAgICAgIEFTU0VSVF9UUlVFKHJlZ2lz
dGVyZWRDb21tYW5kcy5jb250YWlucyhjb21tYW5kLmNvbW1hbmQpKTsKKyAgICB9CisKKyAgICBB
U1NFUlRfVFJVRShzZW5kTWVkaWFSZW1vdGVDb21tYW5kKE1STWVkaWFSZW1vdGVDb21tYW5kUGxh
eSkpOworICAgIHdhaXRGb3JTZXNzaW9uSGFuZGxlclRvQmVDYWxsZWQoInBsYXkiKTsKKyAgICBB
U1NFUlRfVFJVRShzZXNzaW9uSGFuZGxlcldhc0NhbGxlZCgicGxheSIpKTsKKyAgICBBU1NFUlRf
RkFMU0UoZXZlbnRMaXN0ZW5lcldhc0NhbGxlZCgicGxheSIpKTsKKworICAgIEFTU0VSVF9UUlVF
KHNlbmRNZWRpYVJlbW90ZUNvbW1hbmQoTVJNZWRpYVJlbW90ZUNvbW1hbmRQYXVzZSkpOworICAg
IHdhaXRGb3JTZXNzaW9uSGFuZGxlclRvQmVDYWxsZWQoInBhdXNlIik7CisgICAgQVNTRVJUX1RS
VUUoc2Vzc2lvbkhhbmRsZXJXYXNDYWxsZWQoInBhdXNlIikpOworICAgIEFTU0VSVF9GQUxTRShl
dmVudExpc3RlbmVyV2FzQ2FsbGVkKCJwYXVzZSIpKTsKKworICAgIEFTU0VSVF9UUlVFKHNlbmRN
ZWRpYVJlbW90ZVNlZWtDb21tYW5kKE1STWVkaWFSZW1vdGVDb21tYW5kU2tpcEZvcndhcmQsIDEp
KTsKKyAgICB3YWl0Rm9yU2Vzc2lvbkhhbmRsZXJUb0JlQ2FsbGVkKCJzZWVrZm9yd2FyZCIpOwor
ICAgIEFTU0VSVF9UUlVFKHNlc3Npb25IYW5kbGVyV2FzQ2FsbGVkKCJzZWVrZm9yd2FyZCIpKTsK
KyAgICBBU1NFUlRfRkFMU0UoZXZlbnRMaXN0ZW5lcldhc0NhbGxlZCgic2Vla2VkIikpOworCisg
ICAgQVNTRVJUX1RSVUUoc2VuZE1lZGlhUmVtb3RlU2Vla0NvbW1hbmQoTVJNZWRpYVJlbW90ZUNv
bW1hbmRTa2lwQmFja3dhcmQsIDEwKSk7CisgICAgd2FpdEZvclNlc3Npb25IYW5kbGVyVG9CZUNh
bGxlZCgic2Vla2JhY2t3YXJkIik7CisgICAgQVNTRVJUX1RSVUUoc2Vzc2lvbkhhbmRsZXJXYXND
YWxsZWQoInNlZWtiYWNrd2FyZCIpKTsKKyAgICBBU1NFUlRfRkFMU0UoZXZlbnRMaXN0ZW5lcldh
c0NhbGxlZCgic2Vla2VkIikpOworCisgICAgQVNTRVJUX1RSVUUoc2VuZE1lZGlhUmVtb3RlU2Vl
a0NvbW1hbmQoTVJNZWRpYVJlbW90ZUNvbW1hbmRTZWVrVG9QbGF5YmFja1Bvc2l0aW9uLCA2KSk7
CisgICAgd2FpdEZvclNlc3Npb25IYW5kbGVyVG9CZUNhbGxlZCgic2Vla3RvIik7CisgICAgQVNT
RVJUX1RSVUUoc2Vzc2lvbkhhbmRsZXJXYXNDYWxsZWQoInNlZWt0byIpKTsKKyAgICBBU1NFUlRf
RkFMU0UoZXZlbnRMaXN0ZW5lcldhc0NhbGxlZCgic2Vla2VkIikpOworCisgICAgQVNTRVJUX1RS
VUUoc2VuZE1lZGlhUmVtb3RlQ29tbWFuZChNUk1lZGlhUmVtb3RlQ29tbWFuZE5leHRUcmFjaykp
OworICAgIHdhaXRGb3JTZXNzaW9uSGFuZGxlclRvQmVDYWxsZWQoIm5leHR0cmFjayIpOworICAg
IEFTU0VSVF9UUlVFKHNlc3Npb25IYW5kbGVyV2FzQ2FsbGVkKCJuZXh0dHJhY2siKSk7CisKKyAg
ICBBU1NFUlRfVFJVRShzZW5kTWVkaWFSZW1vdGVDb21tYW5kKE1STWVkaWFSZW1vdGVDb21tYW5k
UHJldmlvdXNUcmFjaykpOworICAgIHdhaXRGb3JTZXNzaW9uSGFuZGxlclRvQmVDYWxsZWQoInBy
ZXZpb3VzdHJhY2siKTsKKyAgICBBU1NFUlRfVFJVRShzZXNzaW9uSGFuZGxlcldhc0NhbGxlZCgi
cHJldmlvdXN0cmFjayIpKTsKKworICAgIC8vIFVucmVnaXN0ZXIgYWN0aW9uIGhhbmRsZXJzLCBz
dXBwb3J0ZWQgY29tbWFuZHMgc2hvdWxkIGdvIHRvIEhUTUxNZWRpYUVsZW1lbnQuCisgICAgW3dl
YlZpZXcoKSBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiY2xlYXJBY3Rpb25IYW5kbGVy
cygpIl07CisKKyAgICBBU1NFUlRfVFJVRShzZW5kTWVkaWFSZW1vdGVDb21tYW5kKE1STWVkaWFS
ZW1vdGVDb21tYW5kUGxheSkpOworICAgIHdhaXRGb3JFdmVudExpc3RlbmVyVG9CZUNhbGxlZCgi
cGxheSIpOworICAgIEFTU0VSVF9UUlVFKGV2ZW50TGlzdGVuZXJXYXNDYWxsZWQoInBsYXkiKSk7
CisKKyAgICBBU1NFUlRfVFJVRShzZW5kTWVkaWFSZW1vdGVDb21tYW5kKE1STWVkaWFSZW1vdGVD
b21tYW5kUGF1c2UpKTsKKyAgICB3YWl0Rm9yRXZlbnRMaXN0ZW5lclRvQmVDYWxsZWQoInBsYXki
KTsKKyAgICBBU1NFUlRfVFJVRShldmVudExpc3RlbmVyV2FzQ2FsbGVkKCJwYXVzZSIpKTsKKwor
ICAgIEFTU0VSVF9UUlVFKHNlbmRNZWRpYVJlbW90ZVNlZWtDb21tYW5kKE1STWVkaWFSZW1vdGVD
b21tYW5kU2tpcEZvcndhcmQsIDEpKTsKKyAgICB3YWl0Rm9yRXZlbnRMaXN0ZW5lclRvQmVDYWxs
ZWQoInNlZWtlZCIpOworICAgIEFTU0VSVF9UUlVFKGV2ZW50TGlzdGVuZXJXYXNDYWxsZWQoInNl
ZWtlZCIpKTsKKworICAgIEFTU0VSVF9UUlVFKHNlbmRNZWRpYVJlbW90ZVNlZWtDb21tYW5kKE1S
TWVkaWFSZW1vdGVDb21tYW5kU2tpcEJhY2t3YXJkLCAxMCkpOworICAgIHdhaXRGb3JFdmVudExp
c3RlbmVyVG9CZUNhbGxlZCgic2Vla2VkIik7CisgICAgQVNTRVJUX1RSVUUoZXZlbnRMaXN0ZW5l
cldhc0NhbGxlZCgic2Vla2VkIikpOworCisgICAgQVNTRVJUX1RSVUUoc2VuZE1lZGlhUmVtb3Rl
U2Vla0NvbW1hbmQoTVJNZWRpYVJlbW90ZUNvbW1hbmRTZWVrVG9QbGF5YmFja1Bvc2l0aW9uLCA2
KSk7CisgICAgd2FpdEZvckV2ZW50TGlzdGVuZXJUb0JlQ2FsbGVkKCJzZWVrZWQiKTsKKyAgICBB
U1NFUlRfVFJVRShldmVudExpc3RlbmVyV2FzQ2FsbGVkKCJzZWVrZWQiKSk7Cit9CisKK30KKwor
I2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKE1FRElBX1NFU1NJT04pCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL21lZGlhLXJlbW90ZS5o
dG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9tZWRpYS1yZW1vdGUu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xYzk5M2M3Y2Q0MDFhZmYzMmNmMjMyZWRiYzg4M2VjZGM3OWJiMzVm
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9tZWRpYS1yZW1vdGUuaHRtbApAQCAtMCwwICsxLDEzOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorICAgICNldmVudHNsb2cgeworICAgICAgICBmb250LXNp
emU6IDEwcHg7IAorICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtICgzMjBweCkpOworICAgICAg
ICBvdmVyZmxvdy15OiBzY3JvbGw7CisgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTQ3
LCAxMjgsIDEwOCwgMC4yNSk7CisgICAgfQorPC9zdHlsZT4KKyAgICA8c2NyaXB0PgorCisgICAg
ICAgIGxldCBwbGF5bGlzdCA9IHsKKyAgICAgICAgICAgIGN1cnJlbnQ6IDAsCisgICAgICAgICAg
ICBtZXRhZGF0YTogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdXJs
OiAndmlkZW8td2l0aC1hdWRpby5tcDQnLAorICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ0Jp
cCBCb3AgV2l0aCBBdWRpbycsCisgICAgICAgICAgICAgICAgICAgIGFydGlzdDogJ1RoZSBCaXAg
Qm9wIEF1dGhvcnMnLAorICAgICAgICAgICAgICAgICAgICBhbGJ1bTogJ1dlYktpdCBHcmVhdGVz
dCBIaXRzJywKKyAgICAgICAgICAgICAgICAgICAgYXJ0d29yazogWworCisgICAgICAgICAgICAg
ICAgICAgIF0sCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIHVybDogJ3ZpZGVvLXdpdGhvdXQtYXVkaW8ubXA0JywKKyAgICAgICAgICAg
ICAgICAgICAgdGl0bGU6ICdCaXAgQm9wIFdpdGhvdXQgQXVkaW8nLAorICAgICAgICAgICAgICAg
ICAgICBhcnRpc3Q6ICdUaGUgQmlwIEJvcCBBdXRob3JzJywKKyAgICAgICAgICAgICAgICAgICAg
YWxidW06ICdXZWJLaXQgT3JpZ2luYWwgVGVzdCBDb250ZW50JywKKyAgICAgICAgICAgICAgICAg
ICAgYXJ0d29yazogWworCisgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgIF0sCisgICAgICAgIH07CisKKyAgICAgICAgZnVuY3Rpb24gc2V0TWV0
YWRhdGEoZGF0YSkKKyAgICAgICAgeworICAgICAgICAgICAgbmF2aWdhdG9yLm1lZGlhU2Vzc2lv
bi5tZXRhZGF0YSA9IG5ldyBNZWRpYU1ldGFkYXRhKGRhdGEpOworICAgICAgICAgICAgcG9zdE1l
c3NhZ2UoJ3NldCBtZXRhZGF0YScpCisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzZXRQ
bGF5bGlzdE1ldGFkYXRhKGluZGV4KQorICAgICAgICB7CisgICAgICAgICAgICBzZXRNZXRhZGF0
YShwbGF5bGlzdC5tZXRhZGF0YVtpbmRleF0pOworICAgICAgICAKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIGNsZWFyQWN0aW9uSGFuZGxlcnMoKQorICAgICAgICB7CisgICAgICAgICAg
ICBzZXRFbXB0eUFjdGlvbkhhbmRsZXJzKFtdKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHNldEVtcHR5QWN0aW9uSGFuZGxlcnMoaGFuZGxlcnMpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGNvbnN0IGFjdGlvbnMgPSB7CisgICAgICAgICAgICAgICAgJ3BsYXknIDogKCkgPT4geyBw
b3N0TWVzc2FnZSgncGxheSBoYW5kbGVyJyk7IH0sCisKKyAgICAgICAgICAgICAgICAncGF1c2Un
IDogKCkgPT4geyBwb3N0TWVzc2FnZSgncGF1c2UgaGFuZGxlcicpIH0sCisgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgJ3NlZWt0bycgOiAoZGV0YWlscykgPT4geyBwb3N0TWVzc2Fn
ZSgnc2Vla3RvIGhhbmRsZXInKSB9LAorCisgICAgICAgICAgICAgICAgJ3NlZWtmb3J3YXJkJyA6
IChkZXRhaWxzKSA9PiB7IHBvc3RNZXNzYWdlKCdzZWVrZm9yd2FyZCBoYW5kbGVyJykgfSwKKwor
ICAgICAgICAgICAgICAgICdzZWVrYmFja3dhcmQnIDogKGRldGFpbHMpID0+IHsgcG9zdE1lc3Nh
Z2UoJ3NlZWtiYWNrd2FyZCBoYW5kbGVyJykgfSwgCisKKyAgICAgICAgICAgICAgICAncHJldmlv
dXN0cmFjaycgOiAoKSA9PiB7IHBvc3RNZXNzYWdlKCdwcmV2aW91c3RyYWNrIGhhbmRsZXInKSB9
LCAKKworICAgICAgICAgICAgICAgICduZXh0dHJhY2snIDogKCkgPT4geyBwb3N0TWVzc2FnZSgn
bmV4dHRyYWNrIGhhbmRsZXInKSB9LCAKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIE9i
amVjdC5rZXlzKGFjdGlvbnMpLmZvckVhY2goYWN0aW9uID0+IHsgIG5hdmlnYXRvci5tZWRpYVNl
c3Npb24uc2V0QWN0aW9uSGFuZGxlcihhY3Rpb24sIG51bGwpOyB9KTsKKworICAgICAgICAgICAg
aGFuZGxlcnMuZm9yRWFjaChoYW5kbGVyID0+IHsKKyAgICAgICAgICAgICAgICBpZiAoIWFjdGlv
bnNbaGFuZGxlcl0pIHsKKyAgICAgICAgICAgICAgICAgICAgbG9nKGBhc2tlZCB0byByZWdpc3Rl
ciBoYW5kbGVyIGZvciB1bmtub3duIGFjdGlvbiAnJHtoYW5kbGVyfSdgKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGxv
ZyhgcmVnaXN0ZXJpbmcgJyR7aGFuZGxlcn0nIGhhbmRsZXJgKTsKKyAgICAgICAgICAgICAgICBu
YXZpZ2F0b3IubWVkaWFTZXNzaW9uLnNldEFjdGlvbkhhbmRsZXIoaGFuZGxlciwgYWN0aW9uc1to
YW5kbGVyXSk7IAorICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBwb3N0TWVzc2FnZShtZXNzYWdlKQorICAgICAgICB7CisgICAgICAgICAgICBsb2coYCR7bWVz
c2FnZX1gKQorICAgICAgICAgICAgaWYgKHdpbmRvdy53ZWJraXQpCisgICAgICAgICAgICAgICAg
d2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UobWVz
c2FnZSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBwb3N0RXZlbnQoZXZ0KSAKKyAg
ICAgICAgeworICAgICAgICAgICAgcG9zdE1lc3NhZ2UoYCR7ZXZ0LnR5cGV9IGV2ZW50YCk7Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGZ1bmN0aW9uIGxvYWQoKQorICAgICAgICB7Cisg
ICAgICAgICAgICBsZXQgc3JjID0gcGxheWxpc3QubWV0YWRhdGFbMF0udXJsOworICAgICAgICAg
ICAgaWYgKCF3aW5kb3cud2Via2l0KQorICAgICAgICAgICAgICAgIHNyYyA9IGAuLi9XZWJLaXRM
ZWdhY3kvaW9zLyR7c3JjfWA7CisgICAgICAgICAgICBhdWRpby5zcmMgPSBzcmM7CisgICAgICAg
ICAgICBhdWRpby5sb2FkKCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGZ1bmN0aW9u
IGxvZyhtc2cpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxldCBldmVudExvZyA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdldmVudHNsb2cnKQorICAgICAgICAgICAgbGV0IG5vdGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgICAgIG5vdGUuaW5uZXJIVE1MID0g
bXNnOworICAgICAgICAgICAgZXZlbnRMb2cuaW5zZXJ0QmVmb3JlKG5vdGUsIGV2ZW50TG9nLmZp
cnN0Q2hpbGQpOworICAgICAgICB9CisKKyAgICAgICAgCisgICAgICAgIHdpbmRvdy5hZGRFdmVu
dExpc3RlbmVyKCJsb2FkIiwgZXZ0ID0+IHsKKyAgICAgICAgICAgIGF1ZGlvID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoJ2F1ZGlvJylbMF07CisgICAgICAgICAgICBhdWRpby5hZGRF
dmVudExpc3RlbmVyKCdjYW5wbGF5dGhyb3VnaCcsIHBvc3RFdmVudCk7CisgICAgICAgICAgICBh
dWRpby5hZGRFdmVudExpc3RlbmVyKCdwbGF5JywgcG9zdEV2ZW50KTsKKyAgICAgICAgICAgIGF1
ZGlvLmFkZEV2ZW50TGlzdGVuZXIoJ3BhdXNlJywgcG9zdEV2ZW50KTsKKyAgICAgICAgICAgIGF1
ZGlvLmFkZEV2ZW50TGlzdGVuZXIoJ3NlZWtlZCcsIHBvc3RFdmVudCk7CisgICAgICAgIH0sIGZh
bHNlKTsKKworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPGF1ZGlvIGNvbnRy
b2xzPiA8L2F1ZGlvPgorICAgIDxicj4KKyAgICA8YnV0dG9uIG9uY2xpY2s9InNldEVtcHR5QWN0
aW9uSGFuZGxlcnMoWydwbGF5JywncGF1c2UnLCdzZWVrdG8nXSkiPkVtcHR5IFBsYXksIFBhdXNl
LCBTZWVrVG88L2J1dHRvbj4KKyAgICA8YnI+CisgICAgPGJ1dHRvbiBvbmNsaWNrPSJzZXRFbXB0
eUFjdGlvbkhhbmRsZXJzKFsncGxheScsJ3BhdXNlJywnc2Vla2ZvcndhcmQnLCdzZWVrYmFja3dh
cmQnXSkiPkVtcHR5IFBsYXksIFBhdXNlLCBTZWVrIEZvcndhcmQsIFNlZWsgQmFja3dhcmQ8L2J1
dHRvbj4KKyAgICA8YnI+CisgICAgPGJ1dHRvbiBvbmNsaWNrPSJsb2FkKCkiPkxvYWQ8L2J1dHRv
bj4KKyAgICA8YnI+CisgICAgPGJ1dHRvbiBvbmNsaWNrPSJzZXRQbGF5bGlzdE1ldGFkYXRhKDAp
Ij5TZXQgTWV0YWRhdGEgMTwvYnV0dG9uPjxidXR0b24gb25jbGljaz0ic2V0UGxheWxpc3RNZXRh
ZGF0YSgxKSI+U2V0IE1ldGFkYXRhIDI8L2J1dHRvbj4KKyAgICA8YnI+CisgICAgPGRpdiBpZD0n
ZXZlbnRzbG9nJz48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="commit-queue"
          id="437552"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419344</attachid>
            <date>2021-02-04 17:35:23 -0800</date>
            <delta_ts>2021-02-04 17:45:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221431-20210204173523.patch</filename>
            <type>text/plain</type>
            <size>94030</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDY1NTU5N2Y2NWVlNjhi
MzU4NTk2MzFmZjU2MjljMzNiZmE0YTliOC4uY2M4OTA1ZGZkZWQwZTg0N2Q2MzEwZmFiNjUyMzg4
YThhMTc1ZmQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisyMDIxLTAyLTA0ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIENvbm5l
Y3QgTWVkaWFTZXNzaW9uIHdpdGggTWVkaWFSZW1vdGUgYW5kIE5vd1BsYXlpbmcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTQzMQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNzQwMDAzNjM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUm91dGUgYWxsIHJlbW90ZSBjb250cm9sIGNvbW1hbmRzIHRvIG5h
dmlnYXRvci5tZWRpYVNlc3Npb24gd2hlbiBpdCBoYXMgYW55IAorICAgICAgICByZWdpc3RlcmVk
IGFjdGlvbiBoYW5kbGVycywgYW5kIHBhc3MgbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5tZXRhZGF0
YSB0byBOb3dQbGF5aW5nLgorCisgICAgICAgIFRlc3RlZCBieSBuZXcgQVBJIHRlc3RzIGluIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTWVkaWFTZXNzaW9uLm1tLgorCisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFJbWFnZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFJbWFnZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
SW1hZ2U6OmRlY29kZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRh
ZGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYU1ldGFkYXRhOjpzZXRUaXRsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYU1ldGFkYXRhOjpzZXRBcnRpc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFNZXRhZGF0YTo6c2V0QWxidW0pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFN
ZXRhZGF0YTo6c2V0QXJ0d29yayk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVk
aWFNZXRhZGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFNZXRhZGF0YTo6dGl0bGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFNZXRhZGF0YTo6YXJ0aXN0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhTWV0YWRhdGE6OmFsYnVtIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhTWV0YWRhdGE6OmFydHdvcmsgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFNZXRhZGF0YTo6bWV0YWRhdGEgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
ZXNzaW9uL01lZGlhTWV0YWRhdGFJbml0Lmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYU1ldGFk
YXRhSW5pdDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhTWV0YWRhdGFJ
bml0OjpkZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpuZXh0TG9nSWRlbnRpZmllcik6CisgICAgICAgIChX
ZWJDb3JlOjpsb2dDaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6OmxvZ0NsYXNzTmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUNvbW1hbmRGb3JNZWRpYVNlc3Npb25BY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uOjpNZWRpYVNlc3Npb24pOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTZXNzaW9uOjpzZXRNZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVNlc3Npb246OnNldFBsYXliYWNrU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
ZXNzaW9uOjpzZXRBY3Rpb25IYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lv
bjo6c2V0UG9zaXRpb25TdGF0ZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVk
aWFTZXNzaW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb246Omhhc0FjdGl2ZUFj
dGlvbkhhbmRsZXJzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6bG9n
Z2VyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6bG9nSWRlbnRpZmll
ciBjb25zdCk6CisgICAgICAgIChXVEY6OkxvZ0FyZ3VtZW50PFdlYkNvcmU6Ok1lZGlhU2Vzc2lv
blBsYXliYWNrU3RhdGU+Ojp0b1N0cmluZyk6CisgICAgICAgIChXVEY6OkxvZ0FyZ3VtZW50PFdl
YkNvcmU6Ok1lZGlhU2Vzc2lvbkFjdGlvbj46OnRvU3RyaW5nKToKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmRpZFJlY2VpdmVS
ZW1vdGVDb250cm9sQ29tbWFuZCk6CisgICAgICAgICogaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OmRpZFJlY2VpdmVS
ZW1vdGVDb250cm9sQ29tbWFuZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNz
aW9uOjpub3dQbGF5aW5nSW5mbyBjb25zdCk6CisgICAgICAgICogaHRtbC9NZWRpYUVsZW1lbnRT
ZXNzaW9uLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3Rl
Q29tbWFuZExpc3RlbmVyOjpzY2hlZHVsZVN1cHBvcnRlZENvbW1hbmRzVXBkYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6YWRkU3VwcG9ydGVkQ29tbWFuZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVDb21tYW5kTGlzdGVuZXI6OnJlbW92ZVN1cHBvcnRl
ZENvbW1hbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmg6CisgICAgICAgIChXZWJD
b3JlOjpOb3dQbGF5aW5nSW5mbzo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9Q
bGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RW51bWVy
YXRpb25Ub1N0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNl
c3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6
YWRkU3VwcG9ydGVkQ29tbWFuZCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXI6OnJlbW92ZVN1cHBvcnRlZENvbW1hbmQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2NoZWR1bGVTZXNzaW9uU3RhdHVzVXBk
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2Vzc2lv
bkNhblByb2R1Y2VBdWRpb0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9u
TWFuYWdlckNvY29hOjphZGRTdXBwb3J0ZWRDb21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6cmVtb3ZlU3VwcG9ydGVkQ29tbWFuZCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJbmZvKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvTWVkaWFSZW1vdGVTb2Z0TGluay5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL01lZGlhUmVtb3RlU29mdExpbmsuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om1lZGlhUmVt
b3RlQ29tbWFuZEZvclBsYXRmb3JtQ29tbWFuZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVD
b21tYW5kTGlzdGVuZXJNYWM6OmRlZmF1bHRDb21tYW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpp
c1NlZWtDb21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lck1h
Yzo6dXBkYXRlU3VwcG9ydGVkQ29tbWFuZHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlQ29t
bWFuZExpc3RlbmVyTWFjOjpSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMpOgorCiAyMDIxLTAyLTA0
ICBKdWxpYW4gR29uemFsZXogIDxqdWxpYW5fYV9nb256YWxlekBhcHBsZS5jb20+CiAKICAgICAg
ICAgTnVsbCBkZXJlZmVyZW5jZSBpbiBEb2N1bWVudExvYWRlcjo6Y29tbWl0RGF0YSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFM
L0NoYW5nZUxvZwppbmRleCAwOWIxMGNhMTI3OWQ5YjgxNTY2ZGE4ZmZhMmUwMWU0NWQ1MGI3YmZh
Li5hNmY2YzJjZmQwYjVjMTFjZTcwZTEyOTc3OGZjMjEwZGUxMWU1MjQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0wMi0wNCAgRXJpYyBDYXJsc29uICA8ZXJpYy5j
YXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWFjXSBDb25uZWN0IE1lZGlhU2Vzc2lvbiB3
aXRoIE1lZGlhUmVtb3RlIGFuZCBOb3dQbGF5aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE0MzEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc0
MDAwMzYzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcGFsL3NwaS9tYWMvTWVkaWFSZW1vdGVTUEkuaDoKKwogMjAyMS0wMi0wMSAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIERpc2FibGUgaW50ZXJz
dGl0aWFsIGV2ZW50cyBvbiBBVlBsYXllckl0ZW0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDc5M2YzNGE3MzdlMzhl
YjZjMWMxOTI4NGIyYTQ3Y2EwNjQ5MzAyMjkuLmRhYWNmODY3OGRiMGIxYzI0NTEzMjZkMjQ2ODg1
MGY5MTViZDVhZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDItMDQgIEVyaWMg
Q2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW01hY10gQ29ubmVj
dCBNZWRpYVNlc3Npb24gd2l0aCBNZWRpYVJlbW90ZSBhbmQgTm93UGxheWluZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNDMxCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS83NDAwMDM2Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgYSBwcml2YXRlIHByZWZlcmVuY2Ugc28gdGhlIG5ldyBNZWRp
YVNlc3Npb24gQVBJIHRlc3QgY2FuIGVuYWJsZSB0aGUgZmVhdHVyZS4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbToKKyAgICAgICAgKC1bV0tQcmVmZXJl
bmNlcyBfbWVkaWFTZXNzaW9uRW5hYmxlZF0pOgorICAgICAgICAoLVtXS1ByZWZlcmVuY2VzIF9z
ZXRNZWRpYVNlc3Npb25FbmFibGVkOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tQcmVmZXJlbmNlc1ByaXZhdGUuaDoKKwogMjAyMS0wMi0wNCAgSnVsaWFuIEdvbnphbGV6ICA8
anVsaWFuX2FfZ29uemFsZXpAYXBwbGUuY29tPgogCiAgICAgICAgIE51bGwgZGVyZWZlcmVuY2Ug
aW4gRG9jdW1lbnRMb2FkZXI6OmNvbW1pdERhdGEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNlc3Npb24vTWVkaWFJbWFnZS5oCmluZGV4IGFmMTE5NWVhZDBmYjIwMGYyYjVh
YWFhZjA2Yjc4MGMyNjFlMmRhZGQuLjQ5MzI0MDBhMDJmODc2OWQxOTQ4OWNkMzhhMmRhODAzYTQ4
MWMyNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01l
ZGlhSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRp
YUltYWdlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzMsOCArMzMsMzMgQEAgc3RydWN0IE1lZGlhSW1hZ2UgewogICAgIFN0cmluZyBz
cmM7CiAgICAgU3RyaW5nIHNpemVzOwogICAgIFN0cmluZyB0eXBlOworCisgICAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxNZWRpYUltYWdlPiBkZWNvZGUoRGVjb2Rl
ciYpOwogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gaW5saW5lIHZvaWQgTWVkaWFJbWFn
ZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBzcmMg
PDwgc2l6ZXMgPDwgdHlwZTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIE9w
dGlvbmFsPE1lZGlhSW1hZ2U+IE1lZGlhSW1hZ2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
eworICAgIFN0cmluZyBzcmM7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzcmMpKQorICAgICAg
ICByZXR1cm4geyB9OworCisgICAgU3RyaW5nIHNpemVzOworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoc2l6ZXMpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgU3RyaW5nIHR5cGU7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZSh0eXBlKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJl
dHVybiBNZWRpYUltYWdlIHsgV1RGTW92ZShzcmMpLCBXVEZNb3ZlKHNpemVzKSwgV1RGTW92ZSh0
eXBlKSB9OworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU0VTU0lPTikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5j
cHAKaW5kZXggYTZmNDQ5YzQyNjBmY2ZiN2NhNDZjMDZkMTk4ZWM3ZTY1NjI4MWQ5ZC4uZjZmZjMx
ZmIwOGRkNDk4MWEzYmNlOTAzOTJiZGJkMmNkYTVmY2RiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjQsMjUgKzY0
LDI4IEBAIHZvaWQgTWVkaWFNZXRhZGF0YTo6cmVzZXRNZWRpYVNlc3Npb24oKQogCiB2b2lkIE1l
ZGlhTWV0YWRhdGE6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7Ci0gICAgaWYgKG1f
dGl0bGUgPT0gdGl0bGUpCisgICAgaWYgKG1fbWV0YWRhdGEudGl0bGUgPT0gdGl0bGUpCiAgICAg
ICAgIHJldHVybjsKLSAgICBtX3RpdGxlID0gdGl0bGU7CisKKyAgICBtX21ldGFkYXRhLnRpdGxl
ID0gdGl0bGU7CiAgICAgbWV0YWRhdGFVcGRhdGVkKCk7CiB9CiAKIHZvaWQgTWVkaWFNZXRhZGF0
YTo6c2V0QXJ0aXN0KGNvbnN0IFN0cmluZyYgYXJ0aXN0KQogewotICAgIGlmIChtX2FydGlzdCA9
PSBhcnRpc3QpCisgICAgaWYgKG1fbWV0YWRhdGEuYXJ0aXN0ID09IGFydGlzdCkKICAgICAgICAg
cmV0dXJuOwotICAgIG1fYXJ0aXN0ID0gYXJ0aXN0OworCisgICAgbV9tZXRhZGF0YS5hcnRpc3Qg
PSBhcnRpc3Q7CiAgICAgbWV0YWRhdGFVcGRhdGVkKCk7CiB9CiAKIHZvaWQgTWVkaWFNZXRhZGF0
YTo6c2V0QWxidW0oY29uc3QgU3RyaW5nJiBhbGJ1bSkKIHsKLSAgICBpZiAobV9hbGJ1bSA9PSBh
bGJ1bSkKKyAgICBpZiAobV9tZXRhZGF0YS5hbGJ1bSA9PSBhbGJ1bSkKICAgICAgICAgcmV0dXJu
OwotICAgIG1fYWxidW0gPSBhbGJ1bTsKKworICAgIG1fbWV0YWRhdGEuYWxidW0gPSBhbGJ1bTsK
ICAgICBtZXRhZGF0YVVwZGF0ZWQoKTsKIH0KIApAQCAtOTcsNyArMTAwLDcgQEAgRXhjZXB0aW9u
T3I8dm9pZD4gTWVkaWFNZXRhZGF0YTo6c2V0QXJ0d29yayhTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBWZWMKICAgICAgICAgcmVzb2x2ZWRBcnR3b3JrLnVuY2hlY2tlZEFwcGVuZChN
ZWRpYUltYWdlIHsgcmVzb2x2ZWRTcmMuc3RyaW5nKCksIGltYWdlLnNpemVzLCBpbWFnZS50eXBl
IH0pOwogICAgIH0KIAotICAgIG1fYXJ0d29yayA9IFdURk1vdmUocmVzb2x2ZWRBcnR3b3JrKTsK
KyAgICBtX21ldGFkYXRhLmFydHdvcmsgPSBXVEZNb3ZlKHJlc29sdmVkQXJ0d29yayk7CiAgICAg
bWV0YWRhdGFVcGRhdGVkKCk7CiAgICAgcmV0dXJuIHsgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuaAppbmRleCAyNjRlZWNj
YTk1MGIyMmVhNDUzYjcxZTQyZGZhODA0NjBhOTc2YmNhLi4zMGUwOTNkNmQyN2RkYjc0MTUyODFl
ZThiNWQxMDA0ZWZjZmFhNWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShN
RURJQV9TRVNTSU9OKQogCisjaW5jbHVkZSAiTWVkaWFNZXRhZGF0YUluaXQuaCIKICNpbmNsdWRl
ICJNZWRpYVNlc3Npb24uaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CkBAIC0zNCwxMCArMzUsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIERvY3VtZW50OwotY2xhc3MgTWVkaWFTZXNzaW9uOwogc3RydWN0IE1lZGlhSW1hZ2U7
Ci1zdHJ1Y3QgTWVkaWFNZXRhZGF0YUluaXQ7CisKK3VzaW5nIE1lZGlhU2Vzc2lvbk1ldGFkYXRh
ID0gTWVkaWFNZXRhZGF0YUluaXQ7CiAKIGNsYXNzIE1lZGlhTWV0YWRhdGEgOiBwdWJsaWMgUmVm
Q291bnRlZDxNZWRpYU1ldGFkYXRhPiB7CiBwdWJsaWM6CkBAIC00NywyNyArNDcsMjYgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0TWVkaWFTZXNzaW9uKE1lZGlhU2Vzc2lvbiYpOwogICAgIHZvaWQg
cmVzZXRNZWRpYVNlc3Npb24oKTsKIAotICAgIGNvbnN0IFN0cmluZyYgdGl0bGUoKSBjb25zdCB7
IHJldHVybiBtX3RpdGxlOyB9CisgICAgY29uc3QgU3RyaW5nJiB0aXRsZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbWV0YWRhdGEudGl0bGU7IH0KICAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZyYp
OwogCi0gICAgY29uc3QgU3RyaW5nJiBhcnRpc3QoKSBjb25zdCB7IHJldHVybiBtX2FydGlzdDsg
fQorICAgIGNvbnN0IFN0cmluZyYgYXJ0aXN0KCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5h
cnRpc3Q7IH0KICAgICB2b2lkIHNldEFydGlzdChjb25zdCBTdHJpbmcmKTsKIAotICAgIGNvbnN0
IFN0cmluZyYgYWxidW0oKSBjb25zdCB7IHJldHVybiBtX2FsYnVtOyB9CisgICAgY29uc3QgU3Ry
aW5nJiBhbGJ1bSgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRhdGEuYWxidW07IH0KICAgICB2b2lk
IHNldEFsYnVtKGNvbnN0IFN0cmluZyYpOwogCi0gICAgY29uc3QgVmVjdG9yPE1lZGlhSW1hZ2U+
JiBhcnR3b3JrKCkgY29uc3QgeyByZXR1cm4gbV9hcnR3b3JrOyB9CisgICAgY29uc3QgVmVjdG9y
PE1lZGlhSW1hZ2U+JiBhcnR3b3JrKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5hcnR3b3Jr
OyB9CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0QXJ0d29yayhTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiwgVmVjdG9yPE1lZGlhSW1hZ2U+JiYpOwogCisgICAgY29uc3QgTWVkaWFTZXNzaW9uTWV0
YWRhdGEmIG1ldGFkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YTsgfQorCiBwcml2YXRl
OgogICAgIE1lZGlhTWV0YWRhdGEoKTsKICAgICB2b2lkIG1ldGFkYXRhVXBkYXRlZCgpOwogCiAg
ICAgV2Vha1B0cjxNZWRpYVNlc3Npb24+IG1fc2Vzc2lvbjsKLSAgICBTdHJpbmcgbV90aXRsZTsK
LSAgICBTdHJpbmcgbV9hcnRpc3Q7Ci0gICAgU3RyaW5nIG1fYWxidW07Ci0gICAgVmVjdG9yPE1l
ZGlhSW1hZ2U+IG1fYXJ0d29yazsKKyAgICBNZWRpYVNlc3Npb25NZXRhZGF0YSBtX21ldGFkYXRh
OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Np
b24vTWVkaWFNZXRhZGF0YUluaXQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNz
aW9uL01lZGlhTWV0YWRhdGFJbml0LmgKaW5kZXggMDEyZWMyZDA5NWY5M2JiZmUyOGEzOGQ2M2Fh
ZWE0MjEyNmFiNTZlNS4uNjY5ZGVmZmEyZDY5NDA4NWYwOGYxMGRmMWI5MTZlZjQ0ZTg4NWUwZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRh
ZGF0YUluaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRp
YU1ldGFkYXRhSW5pdC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTM2LDggKzM2LDM3IEBAIHN0cnVjdCBNZWRpYU1ldGFkYXRhSW5pdCB7
CiAgICAgU3RyaW5nIGFydGlzdDsKICAgICBTdHJpbmcgYWxidW07CiAgICAgVmVjdG9yPE1lZGlh
SW1hZ2U+IGFydHdvcms7CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29k
ZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9w
dGlvbmFsPE1lZGlhTWV0YWRhdGFJbml0PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAordGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gaW5saW5lIHZvaWQgTWVkaWFNZXRhZGF0YUluaXQ6OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgdGl0bGUgPDwgYXJ0aXN0
IDw8IGFsYnVtIDw8IGFydHdvcms7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGlu
ZSBPcHRpb25hbDxNZWRpYU1ldGFkYXRhSW5pdD4gTWVkaWFNZXRhZGF0YUluaXQ6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFN0cmluZyB0aXRsZTsKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHRpdGxlKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIFN0cmluZyBhcnRpc3Q7
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhcnRpc3QpKQorICAgICAgICByZXR1cm4geyB9Owor
CisgICAgU3RyaW5nIGFsYnVtOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWxidW0pKQorICAg
ICAgICByZXR1cm4geyB9OworCisgICAgVmVjdG9yPE1lZGlhSW1hZ2U+IGFydHdvcms7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShhcnR3b3JrKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAg
IHJldHVybiBNZWRpYU1ldGFkYXRhSW5pdCB7IFdURk1vdmUodGl0bGUpLCBXVEZNb3ZlKGFydGlz
dCksIFdURk1vdmUoYWxidW0pLCBXVEZNb3ZlKGFydHdvcmspIH07Cit9CisKIH0KIAogI2VuZGlm
IC8vIEVOQUJMRShNRURJQV9TRVNTSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAKaW5kZXggMWFiNjIyNDgzMmVlZmExMjky
ZjEzODYxM2I0MWYwNzcwOTk2MjNjZS4uYTNiNWE5MGYwNDdkZjdlODlhMzc1NTU3MDRiYzNmZWU3
NWVlMTIwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24v
TWVkaWFTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lv
bi9NZWRpYVNlc3Npb24uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDExICsyOCw1MyBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NF
U1NJT04pCiAKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFNZXRhZGF0YS5o
IgogI2luY2x1ZGUgIk5hdmlnYXRvci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBjb25zdCB2b2lkKiBu
ZXh0TG9nSWRlbnRpZmllcigpCit7CisgICAgc3RhdGljIHVpbnQ2NF90IGxvZ0lkZW50aWZpZXIg
PSBjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpOworICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PGNvbnN0IHZvaWQqPigrK2xvZ0lkZW50aWZpZXIpOworfQorCitzdGF0aWMgV1RGTG9n
Q2hhbm5lbCYgbG9nQ2hhbm5lbCgpIHsgcmV0dXJuIExvZ01lZGlhOyB9CitzdGF0aWMgY29uc3Qg
Y2hhciogbG9nQ2xhc3NOYW1lKCkgeyByZXR1cm4gIk1lZGlhU2Vzc2lvbiI7IH0KKworc3RhdGlj
IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgcGxhdGZvcm1D
b21tYW5kRm9yTWVkaWFTZXNzaW9uQWN0aW9uKE1lZGlhU2Vzc2lvbkFjdGlvbiBhY3Rpb24pCit7
CisgICAgc3RhdGljIGNvbnN0IGF1dG8gY29tbWFuZE1hcCA9IG1ha2VOZXZlckRlc3Ryb3llZChb
XSB7CisgICAgICAgIHN0cnVjdCBNYXBFbnRyeSB7CisgICAgICAgICAgICBNZWRpYVNlc3Npb25B
Y3Rpb24gYWN0aW9uOworICAgICAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNv
bnRyb2xDb21tYW5kVHlwZSBjb21tYW5kOworICAgICAgICB9OworICAgICAgICBzdGF0aWMgY29u
c3QgTWFwRW50cnkgZW50cmllc1tdID0geworICAgICAgICAgICAgeyBNZWRpYVNlc3Npb25BY3Rp
b246OlBsYXksIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5Q29tbWFuZCB9LAorICAgICAgICAg
ICAgeyBNZWRpYVNlc3Npb25BY3Rpb246OlBhdXNlLCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGF1
c2VDb21tYW5kIH0sCisgICAgICAgICAgICB7IE1lZGlhU2Vzc2lvbkFjdGlvbjo6U2Vla2Zvcndh
cmQsIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTa2lwRm9yd2FyZENvbW1hbmQgfSwKKyAgICAgICAg
ICAgIHsgTWVkaWFTZXNzaW9uQWN0aW9uOjpTZWVrYmFja3dhcmQsIFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpTa2lwQmFja3dhcmRDb21tYW5kIH0sCisgICAgICAgICAgICB7IE1lZGlhU2Vzc2lvbkFj
dGlvbjo6UHJldmlvdXN0cmFjaywgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5leHRUcmFja0NvbW1h
bmQgfSwKKyAgICAgICAgICAgIHsgTWVkaWFTZXNzaW9uQWN0aW9uOjpOZXh0dHJhY2ssIFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpQcmV2aW91c1RyYWNrQ29tbWFuZCB9LAorICAgICAgICAgICAgeyBN
ZWRpYVNlc3Npb25BY3Rpb246OlN0b3AsIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTdG9wQ29tbWFu
ZCB9LAorICAgICAgICAgICAgeyBNZWRpYVNlc3Npb25BY3Rpb246OlNlZWt0bywgUGxhdGZvcm1N
ZWRpYVNlc3Npb246OlNlZWtUb1BsYXliYWNrUG9zaXRpb25Db21tYW5kIH0sCisgICAgICAgIH07
CisKKyAgICAgICAgSGFzaE1hcDxNZWRpYVNlc3Npb25BY3Rpb24sIFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIFdURjo6SW50SGFzaDxNZWRpYVNlc3Npb25B
Y3Rpb24+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPE1lZGlhU2Vzc2lvbkFjdGlvbj4+IG1h
cDsKKyAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IGVudHJpZXMpCisgICAgICAgICAgICBtYXAu
YWRkKGVudHJ5LmFjdGlvbiwgZW50cnkuY29tbWFuZCk7CisgICAgICAgIHJldHVybiBtYXA7Cisg
ICAgfSgpKTsKKworICAgIGF1dG8gaXQgPSBjb21tYW5kTWFwLmdldCgpLmZpbmQoYWN0aW9uKTsK
KyAgICBpZiAoaXQgIT0gY29tbWFuZE1hcC5nZXQoKS5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGl0
LT52YWx1ZTsKKworICAgIHJldHVybiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9Db21tYW5kOwor
fQorCiBSZWY8TWVkaWFTZXNzaW9uPiBNZWRpYVNlc3Npb246OmNyZWF0ZShOYXZpZ2F0b3ImIG5h
dmlnYXRvcikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVNlc3Npb24obmF2aWdh
dG9yKSk7CkBAIC00MSwxMiArODMsMTggQEAgUmVmPE1lZGlhU2Vzc2lvbj4gTWVkaWFTZXNzaW9u
OjpjcmVhdGUoTmF2aWdhdG9yJiBuYXZpZ2F0b3IpCiBNZWRpYVNlc3Npb246Ok1lZGlhU2Vzc2lv
bihOYXZpZ2F0b3ImIG5hdmlnYXRvcikKICAgICA6IG1fbmF2aWdhdG9yKG1ha2VXZWFrUHRyKG5h
dmlnYXRvcikpCiB7CisgICAgbV9sb2dnZXIgPSBtYWtlUmVmUHRyKERvY3VtZW50OjpzaGFyZWRM
b2dnZXIoKSk7CisgICAgbV9sb2dJZGVudGlmaWVyID0gbmV4dExvZ0lkZW50aWZpZXIoKTsKKwor
ICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CiB9CiAKIE1lZGlhU2Vzc2lvbjo6fk1lZGlh
U2Vzc2lvbigpID0gZGVmYXVsdDsKIAogdm9pZCBNZWRpYVNlc3Npb246OnNldE1ldGFkYXRhKFJl
ZlB0cjxNZWRpYU1ldGFkYXRhPiYmIG1ldGFkYXRhKQogeworICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUik7CisKICAgICBpZiAobV9tZXRhZGF0YSkKICAgICAgICAgbV9tZXRhZGF0YS0+cmVz
ZXRNZWRpYVNlc3Npb24oKTsKICAgICBtX21ldGFkYXRhID0gV1RGTW92ZShtZXRhZGF0YSk7CkBA
IC02MCw2ICsxMDgsOCBAQCB2b2lkIE1lZGlhU2Vzc2lvbjo6c2V0UGxheWJhY2tTdGF0ZShNZWRp
YVNlc3Npb25QbGF5YmFja1N0YXRlIHN0YXRlKQogICAgIGlmIChtX3BsYXliYWNrU3RhdGUgPT0g
c3RhdGUpCiAgICAgICAgIHJldHVybjsKIAorICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwg
c3RhdGUpOworCiAgICAgYXV0byBjdXJyZW50UG9zaXRpb24gPSB0aGlzLT5jdXJyZW50UG9zaXRp
b24oKTsKICAgICBpZiAobV9wb3NpdGlvblN0YXRlICYmIGN1cnJlbnRQb3NpdGlvbikgewogICAg
ICAgICBtX3Bvc2l0aW9uU3RhdGUtPnBvc2l0aW9uID0gKmN1cnJlbnRQb3NpdGlvbjsKQEAgLTcw
LDEwICsxMjAsMTggQEAgdm9pZCBNZWRpYVNlc3Npb246OnNldFBsYXliYWNrU3RhdGUoTWVkaWFT
ZXNzaW9uUGxheWJhY2tTdGF0ZSBzdGF0ZSkKIAogdm9pZCBNZWRpYVNlc3Npb246OnNldEFjdGlv
bkhhbmRsZXIoTWVkaWFTZXNzaW9uQWN0aW9uIGFjdGlvbiwgUmVmUHRyPE1lZGlhU2Vzc2lvbkFj
dGlvbkhhbmRsZXI+JiYgaGFuZGxlcikKIHsKLSAgICBpZiAoaGFuZGxlcikKKyAgICBpZiAoaGFu
ZGxlcikgeworICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJhZGRpbmcgIiwgYWN0
aW9uKTsKICAgICAgICAgbV9hY3Rpb25IYW5kbGVycy5zZXQoYWN0aW9uLCBoYW5kbGVyKTsKLSAg
ICBlbHNlCi0gICAgICAgIG1fYWN0aW9uSGFuZGxlcnMucmVtb3ZlKGFjdGlvbik7CisgICAgICAg
IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmFkZFN1cHBvcnRl
ZENvbW1hbmQocGxhdGZvcm1Db21tYW5kRm9yTWVkaWFTZXNzaW9uQWN0aW9uKGFjdGlvbikpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChtX2FjdGlvbkhhbmRsZXJzLmNvbnRhaW5zKGFjdGlv
bikpIHsKKyAgICAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInJlbW92aW5nICIs
IGFjdGlvbik7CisgICAgICAgICAgICBtX2FjdGlvbkhhbmRsZXJzLnJlbW92ZShhY3Rpb24pOwor
ICAgICAgICB9CisgICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFu
YWdlcigpLnJlbW92ZVN1cHBvcnRlZENvbW1hbmQocGxhdGZvcm1Db21tYW5kRm9yTWVkaWFTZXNz
aW9uQWN0aW9uKGFjdGlvbikpOworICAgIH0KKyAgICAKICAgICBhY3Rpb25IYW5kbGVyc1VwZGF0
ZWQoKTsKIH0KIApAQCAtODksNiArMTQ3LDggQEAgUmVmUHRyPE1lZGlhU2Vzc2lvbkFjdGlvbkhh
bmRsZXI+IE1lZGlhU2Vzc2lvbjo6aGFuZGxlckZvckFjdGlvbihNZWRpYVNlc3Npb25BY3QKIAog
RXhjZXB0aW9uT3I8dm9pZD4gTWVkaWFTZXNzaW9uOjpzZXRQb3NpdGlvblN0YXRlKE9wdGlvbmFs
PE1lZGlhUG9zaXRpb25TdGF0ZT4mJiBzdGF0ZSkKIHsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5U
SUZJRVIpOworCiAgICAgaWYgKCFzdGF0ZSkgewogICAgICAgICBtX3Bvc2l0aW9uU3RhdGUgPSBX
VEY6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5oCmluZGV4IDNmNjRmM2IwMjQ2ODRl
NGY3ZWM2NDQ4N2I0MTdmNWVkMTczYTc5MDkuLjRmNGJlNDc3MjY0NDA4NmI3N2Q2MWQ5ZjViMDgy
M2ExNWQwNTA1NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNz
aW9uL01lZGlhU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNz
aW9uL01lZGlhU2Vzc2lvbi5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDEwICsyNywxNCBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NF
U1NJT04pCiAKKyNpbmNsdWRlICJKU01lZGlhUG9zaXRpb25TdGF0ZS5oIgorI2luY2x1ZGUgIkpT
TWVkaWFTZXNzaW9uQWN0aW9uLmgiCisjaW5jbHVkZSAiSlNNZWRpYVNlc3Npb25QbGF5YmFja1N0
YXRlLmgiCiAjaW5jbHVkZSAiTWVkaWFQb3NpdGlvblN0YXRlLmgiCiAjaW5jbHVkZSAiTWVkaWFT
ZXNzaW9uQWN0aW9uLmgiCiAjaW5jbHVkZSAiTWVkaWFTZXNzaW9uQWN0aW9uSGFuZGxlci5oIgog
I2luY2x1ZGUgIk1lZGlhU2Vzc2lvblBsYXliYWNrU3RhdGUuaCIKKyNpbmNsdWRlIDx3dGYvTG9n
Z2VyLmg+CiAjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KICNpbmNsdWRlIDx3dGYvT3B0
aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CkBAIC01NywxMyArNjEsMTggQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPGRvdWJsZT4gY3VycmVudFBvc2l0
aW9uKCkgY29uc3Q7CiAKICAgICB2b2lkIG1ldGFkYXRhVXBkYXRlZCgpOworCiAgICAgdm9pZCBh
Y3Rpb25IYW5kbGVyc1VwZGF0ZWQoKTsKICAgICBib29sIGhhc0FjdGlvbkhhbmRsZXIoTWVkaWFT
ZXNzaW9uQWN0aW9uKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8TWVkaWFTZXNz
aW9uQWN0aW9uSGFuZGxlcj4gaGFuZGxlckZvckFjdGlvbihNZWRpYVNlc3Npb25BY3Rpb24pIGNv
bnN0OworICAgIGJvb2wgaGFzQWN0aXZlQWN0aW9uSGFuZGxlcnMoKSBjb25zdCB7IHJldHVybiAh
bV9hY3Rpb25IYW5kbGVycy5pc0VtcHR5KCk7IH0KIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBN
ZWRpYVNlc3Npb24oTmF2aWdhdG9yJik7CiAKKyAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNv
bnN0IHsgcmV0dXJuICptX2xvZ2dlci5nZXQoKTsgfQorICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7IH0KKwogICAgIFdlYWtQdHI8
TmF2aWdhdG9yPiBtX25hdmlnYXRvcjsKICAgICBSZWZQdHI8TWVkaWFNZXRhZGF0YT4gbV9tZXRh
ZGF0YTsKICAgICBNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRlIG1fcGxheWJhY2tTdGF0ZSB7IE1l
ZGlhU2Vzc2lvblBsYXliYWNrU3RhdGU6Ok5vbmUgfTsKQEAgLTcxLDYgKzgwLDIwIEBAIHByaXZh
dGU6CiAgICAgT3B0aW9uYWw8ZG91YmxlPiBtX2xhc3RSZXBvcnRlZFBvc2l0aW9uOwogICAgIE1v
bm90b25pY1RpbWUgbV90aW1lQXRMYXN0UG9zaXRpb25VcGRhdGU7CiAgICAgSGFzaE1hcDxNZWRp
YVNlc3Npb25BY3Rpb24sIFJlZlB0cjxNZWRpYVNlc3Npb25BY3Rpb25IYW5kbGVyPiwgV1RGOjpJ
bnRIYXNoPE1lZGlhU2Vzc2lvbkFjdGlvbj4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8TWVk
aWFTZXNzaW9uQWN0aW9uPj4gbV9hY3Rpb25IYW5kbGVyczsKKyAgICBSZWZQdHI8Y29uc3QgTG9n
Z2VyPiBtX2xvZ2dlcjsKKyAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7Cit9OworCit9
CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBMb2dBcmd1bWVudDxXZWJD
b3JlOjpNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRlPiB7CisgICAgc3RhdGljIFN0cmluZyB0b1N0
cmluZyhXZWJDb3JlOjpNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRlIHN0YXRlKSB7IHJldHVybiBj
b252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhzdGF0ZSk7IH0KK307CisKK3RlbXBsYXRlPD4gc3Ry
dWN0IExvZ0FyZ3VtZW50PFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkFjdGlvbj4geworICAgIHN0YXRp
YyBTdHJpbmcgdG9TdHJpbmcoV2ViQ29yZTo6TWVkaWFTZXNzaW9uQWN0aW9uIGFjdGlvbikgeyBy
ZXR1cm4gY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoYWN0aW9uKTsgfQogfTsKIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL01lZGlhUmVtb3RlU1BJLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvTWVkaWFSZW1vdGVTUEkuaAppbmRleCA2
NTE1YzBkNzZmMDVkYTAwNjE4MGEyYTU3NTEzZWYyZTY0NWM4MWU0Li5iMzQ0YTY0NDBmMmJhODI1
YWE5MTEzYzExODJlZTQ4MmYxM2VhZjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3NwaS9tYWMvTWVkaWFSZW1vdGVTUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L3NwaS9tYWMvTWVkaWFSZW1vdGVTUEkuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05MiwxOSArOTIsMjkgQEAgZW51bSB7CiB0eXBlZGVm
IHVpbnQzMl90IE1STm93UGxheWluZ0NsaWVudFZpc2liaWxpdHk7CiAKIHR5cGVkZWYgdWludDMy
X3QgTVJNZWRpYVJlbW90ZUVycm9yOwordHlwZWRlZiB1aW50MzJfdCBNUlNlbmRDb21tYW5kQXBw
T3B0aW9uczsKK3R5cGVkZWYgdWludDMyX3QgTVJTZW5kQ29tbWFuZEVycm9yOwogdHlwZWRlZiBz
dHJ1Y3QgX01ST3JpZ2luICpNUk9yaWdpblJlZjsKIHR5cGVkZWYgc3RydWN0IF9NUk1lZGlhUmVt
b3RlQ29tbWFuZEluZm8gKk1STWVkaWFSZW1vdGVDb21tYW5kSW5mb1JlZjsKIHR5cGVkZWYgdm9p
ZCAqTVJOb3dQbGF5aW5nQ2xpZW50UmVmOwogdHlwZWRlZiB2b2lkKF5NUk1lZGlhUmVtb3RlQXN5
bmNDb21tYW5kSGFuZGxlckJsb2NrKShNUk1lZGlhUmVtb3RlQ29tbWFuZCBjb21tYW5kLCBDRkRp
Y3Rpb25hcnlSZWYgb3B0aW9ucywgdm9pZCheY29tcGxldGlvbikoQ0ZBcnJheVJlZikpOwogCitA
aW50ZXJmYWNlIE1SQ29tbWFuZEluZm8gOiBOU09iamVjdAorQHByb3BlcnR5IChub25hdG9taWMs
IHJlYWRvbmx5KSBNUk1lZGlhUmVtb3RlQ29tbWFuZCBjb21tYW5kOworQHByb3BlcnR5IChub25h
dG9taWMsIHJlYWRvbmx5LCBnZXR0ZXI9aXNFbmFibGVkKSBCT09MIGVuYWJsZWQ7CitAcHJvcGVy
dHkgKG5vbmF0b21pYywgcmVhZG9ubHksIG51bGxhYmxlLCBjb3B5KSBOU0RpY3Rpb25hcnkgKm9w
dGlvbnM7CitAZW5kCisKIFdURl9FWFRFUk5fQ19CRUdJTgogCiAjcHJhZ21hIG1hcmsgLSBNUlJl
bW90ZUNvbnRyb2wKIAogdm9pZCogTVJNZWRpYVJlbW90ZUFkZEFzeW5jQ29tbWFuZEhhbmRsZXJC
bG9jayhNUk1lZGlhUmVtb3RlQXN5bmNDb21tYW5kSGFuZGxlckJsb2NrKTsKIHZvaWQgTVJNZWRp
YVJlbW90ZVJlbW92ZUNvbW1hbmRIYW5kbGVyQmxvY2sodm9pZCAqb2JzZXJ2ZXIpOwotdm9pZCBN
Uk1lZGlhUmVtb3RlU2V0U3VwcG9ydGVkQ29tbWFuZHMoQ0ZBcnJheVJlZiBjb21tYW5kcywgTVJP
cmlnaW5SZWYsIGRpc3BhdGNoX3F1ZXVlX3QgcmVwbHlRLCB2b2lkKF5jb21wbGV0aW9uKShNUk1l
ZGlhUmVtb3RlRXJyb3IgZXJyKSk7Cit2b2lkIE1STWVkaWFSZW1vdGVTZXRTdXBwb3J0ZWRDb21t
YW5kcyhDRkFycmF5UmVmLCBNUk9yaWdpblJlZiwgZGlzcGF0Y2hfcXVldWVfdCwgdm9pZCheY29t
cGxldGlvbikoTVJNZWRpYVJlbW90ZUVycm9yKSk7Cit2b2lkIE1STWVkaWFSZW1vdGVHZXRTdXBw
b3J0ZWRDb21tYW5kc0Zvck9yaWdpbihNUk9yaWdpblJlZiwgZGlzcGF0Y2hfcXVldWVfdCwgdm9p
ZCheY29tcGxldGlvbikoQ0ZBcnJheVJlZikpOwogdm9pZCBNUk1lZGlhUmVtb3RlU2V0Tm93UGxh
eWluZ1Zpc2liaWxpdHkoTVJPcmlnaW5SZWYsIE1STm93UGxheWluZ0NsaWVudFZpc2liaWxpdHkp
OworQm9vbGVhbiBNUk1lZGlhUmVtb3RlU2VuZENvbW1hbmRUb0FwcChNUk1lZGlhUmVtb3RlQ29t
bWFuZCwgQ0ZEaWN0aW9uYXJ5UmVmLCBNUk9yaWdpblJlZiwgQ0ZTdHJpbmdSZWYsIE1SU2VuZENv
bW1hbmRBcHBPcHRpb25zLCBkaXNwYXRjaF9xdWV1ZV90LCB2b2lkKF5jb21wbGV0aW9uKShNUlNl
bmRDb21tYW5kRXJyb3IsIENGQXJyYXlSZWYpKTsKIAogI3ByYWdtYSBtYXJrIC0gTVJPcmlnaW4K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IGZhNmMyOWY0YjRiYWZmNDFiNzA4ZjIyMGI3NjBmYzkyZWU0MmQwYTEuLmJkM2JjMTYw
ZDhiYWY0N2I0MTYyMjg4MDc3NjU2MDJiNWQyYjQ0OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzOSw2ICsxMzksMTAgQEAK
IAkJMDc3QUYxNDMxOEY0QjFCQjAwMDFFRDYxIC8qIFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVN
YWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3N0FG
MTQxMThGNEIxQkIwMDAxRUQ2MSAvKiBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDc3QjY0MTMx
Qjk0RjEyRTAwM0U5QUQ1IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzdCNjQxMTFCOTRGMTJF
MDAzRTlBRDUgLyogTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwNzdCNjQxNzFCOTVGNzAzMDAz
RTlBRDUgLyogTWVkaWFQbGF5YmFja1RhcmdldE1vY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3N0I2NDE1MUI5NUY3MDMwMDNFOUFENSAvKiBNZWRp
YVBsYXliYWNrVGFyZ2V0TW9jay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTA3ODI4OTQ4MjVDMjNGRTUwMEE3QkEwMyAvKiBNZWRpYU1ldGFkYXRh
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRERERUEy
RDI1MzhDRTA0MDBBMTMwMEMgLyogTWVkaWFNZXRhZGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTA3ODI4OTRBMjVDMzZGQ0YwMEE3QkEwMyAv
KiBNZWRpYVNlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENERERFQTIzMjUzOENEODAwMEExMzAwQyAvKiBNZWRpYVNlc3Npb24uaCAqLzsgfTsK
KwkJMDc4Mjg5NEIyNUMzNkZFRDAwQTdCQTAzIC8qIE1lZGlhSW1hZ2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERERFQTMyMjUzOENFMzUwMEExMzAw
QyAvKiBNZWRpYUltYWdlLmggKi87IH07CisJCTA3ODI4OTRDMjVDMzcwMEIwMEE3QkEwMyAvKiBN
ZWRpYU1ldGFkYXRhSW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0REREVBMzAyNTM4Q0UxRTAwQTEzMDBDIC8qIE1lZGlhTWV0YWRhdGFJbml0Lmgg
Ki87IH07CiAJCTA3ODMyMjg1MTgwMTNFRDgwMDk5OUUwQyAvKiBNZWRpYVN0cmVhbUF1ZGlvU291
cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzgz
MjI4MzE4MDEzRUQ4MDA5OTlFMEMgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oICovOyB9Owog
CQkwNzg0NjM0MzE0NUIxNTFBMDBBNThERjEgLyogSlNUcmFja0V2ZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzg0NjM0MTE0NUIxNTFBMDBBNThE
RjEgLyogSlNUcmFja0V2ZW50LmggKi87IH07CiAJCTA3ODQ2Mzg1MTQ1QjFCOEUwMEE1OERGMSAv
KiBKU1RyYWNrQ3VzdG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwNzg0NjM4NDE0NUIxQjhFMDBBNThERjEgLyogSlNUcmFja0N1c3RvbS5oICovOyB9
OwpAQCAtMzM3MDIsMTAgKzMzNzA2LDEzIEBACiAJCQkJRTQ0NjEzQUQwQ0Q2MzMxMDAwRkFEQTc1
IC8qIE1lZGlhRXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTRFMTk1OTIyMEEzOURBQkEwMDIy
MEZFNSAvKiBNZWRpYUZlYXR1cmVOYW1lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdBNkQxRUMx
NDkxMTM3NzAwMDUxRDBDIC8qIE1lZGlhRnJhZ21lbnRVUklQYXJzZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCTA3ODI4OTRCMjVDMzZGRUQwMEE3QkEwMyAvKiBNZWRpYUltYWdlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDREY0QjcxQTFFMDFEM0QwMDBFMjM1QTIgLyogTWVkaWFLZXlTZXNzaW9uVHlw
ZS5pZGwgaW4gSGVhZGVycyAqLywKIAkJCQlDREY0QjcyODFFMDNDNTczMDBFMjM1QTIgLyogTWVk
aWFLZXlzUmVxdWlyZW1lbnQuaWRsIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RGNEI3MTgxRTAxQ0I5
MTAwRTIzNUEyIC8qIE1lZGlhS2V5c1Jlc3RyaWN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QThFQTgwMEUwQTE5NTE2RTAwQThFRjVGIC8qIE1lZGlhTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMDc4Mjg5NDgyNUMyM0ZFNTAwQTdCQTAzIC8qIE1lZGlhTWV0YWRhdGEuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTA3ODI4OTRDMjVDMzcwMEIwMEE3QkEwMyAvKiBNZWRpYU1ldGFkYXRhSW5pdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNUVCQjg5MzExQzc3NzdGRjAwQzY1RDQxIC8qIE1lZGlhUGF5
bG9hZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdFM0RGRDExQTlFNzg2NTAwNzY0Q0E4IC8qIE1l
ZGlhUGxheWJhY2tUYXJnZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OTIxNjU1MUFBNTYwQUEw
MEEzQzA0OSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAg
LTMzNzQ2LDYgKzMzNzUzLDcgQEAKIAkJCQkxQjEyNEQ4RDFEMzgwQjcwMDBFQ0RGQjAgLyogTWVk
aWFTYW1wbGVBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREJFQUVBRDE5RDkyQjZDMDBC
RUJBODggLyogTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUExN0QyNzVFMUVBQzU3OTgwMEJGMDFFNyAvKiBNZWRpYVNlbGVjdGlvbk9wdGlvbi5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMDc4Mjg5NEEyNUMzNkZDRjAwQTdCQTAzIC8qIE1lZGlhU2Vzc2lvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDE2RUNBRTUyNUI1OENDNDAwQjM0REE1IC8qIE1lZGlhU2Vz
c2lvbkdyb3VwSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RBOTU5M0YyNDEyQkFF
MDAwOTEwRUVGIC8qIE1lZGlhU2Vzc2lvbkhlbHBlcklPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDE0NDYwQTIyNDEyOTk0NTAwODE0QkU3IC8qIE1lZGlhU2Vzc2lvbklkZW50aWZpZXIuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXgg
YTZhNTRhNjExNDU1ZTRiZmE5OWU4NmY2MDNjNTI5MGRmNzAwZDEwOS4uMTUyNjY5MjM3ZDNlYzA0
ZWU3NTg0ZWRiMTk1MzA0NWVkOTZhZmQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNy0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
Ny0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNzUwNSw2ICs3NTA1LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJl
bW8KICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsIGNvbW1hbmQpOwogCiAgICAgVXNlckdl
c3R1cmVJbmRpY2F0b3IgcmVtb3RlQ29udHJvbFVzZXJHZXN0dXJlKFByb2Nlc3NpbmdVc2VyR2Vz
dHVyZSwgJmRvY3VtZW50KCkpOworICAgIGRvdWJsZSBvZmZzZXQgPSAxMDsKICAgICBzd2l0Y2gg
KGNvbW1hbmQpIHsKICAgICBjYXNlIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5Q29tbWFuZDoK
ICAgICAgICAgcGxheSgpOwpAQCAtNzUyNiw2ICs3NTI3LDE2IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6ZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpSZW1vCiAgICAgY2FzZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW5kU2Vla2luZ0ZvcndhcmRD
b21tYW5kOgogICAgICAgICBlbmRTY2FubmluZygpOwogICAgICAgICBicmVhazsKKyAgICBjYXNl
IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTa2lwRm9yd2FyZENvbW1hbmQ6CisgICAgICAgIGlmIChh
cmd1bWVudCkKKyAgICAgICAgICAgIG9mZnNldCA9IGFyZ3VtZW50LT5hc0RvdWJsZTsKKyAgICAg
ICAgaGFuZGxlU2Vla1RvUGxheWJhY2tQb3NpdGlvbihvZmZzZXQpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTa2lwQmFja3dhcmRDb21tYW5kOgorICAg
ICAgICBpZiAoYXJndW1lbnQpCisgICAgICAgICAgICBvZmZzZXQgPSBhcmd1bWVudC0+YXNEb3Vi
bGU7CisgICAgICAgIGhhbmRsZVNlZWtUb1BsYXliYWNrUG9zaXRpb24oMCAtIG9mZnNldCk7Cisg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgUGxhdGZvcm1NZWRpYVNlc3Npb246OlNlZWtUb1BsYXli
YWNrUG9zaXRpb25Db21tYW5kOgogICAgICAgICBBU1NFUlQoYXJndW1lbnQpOwogICAgICAgICBp
ZiAoYXJndW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVu
dFNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNw
cAppbmRleCA1OGQ0MmVjZTQxMjZkOWM2YjM0MTg4MGMwZGE3MDMzYTQ5MGNlMDVjLi40YWViYmQ2
YWQ3OGY1OGYzMjkwNTNlMDcyZmQ1MGIxZmU3YzQyMGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTQsNiArNTQsMTIgQEAKICNpbmNsdWRlICJTb3Vy
Y2VCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKKyNpZiBF
TkFCTEUoTUVESUFfU0VTU0lPTikKKyNpbmNsdWRlICJNZWRpYU1ldGFkYXRhLmgiCisjaW5jbHVk
ZSAiTWVkaWFTZXNzaW9uLmgiCisjaW5jbHVkZSAiTmF2aWdhdG9yTWVkaWFTZXNzaW9uLmgiCisj
ZW5kaWYKKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSAiQXVkaW9TZXNzaW9u
LmgiCiAjaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCkBAIC0xMDIxLDYgKzEw
MjcsNzAgQEAgYm9vbCBNZWRpYUVsZW1lbnRTZXNzaW9uOjphbGxvd3NQbGF5YmFja0NvbnRyb2xz
Rm9yQXV0b3BsYXlpbmdBdWRpbygpIGNvbnN0CiAgICAgcmV0dXJuIHBhZ2UgJiYgcGFnZS0+YWxs
b3dzUGxheWJhY2tDb250cm9sc0ZvckF1dG9wbGF5aW5nQXVkaW8oKTsKIH0KIAorI2lmIEVOQUJM
RShNRURJQV9TRVNTSU9OKQordm9pZCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpkaWRSZWNlaXZlUmVt
b3RlQ29udHJvbENvbW1hbmQoUmVtb3RlQ29udHJvbENvbW1hbmRUeXBlIGNvbW1hbmRUeXBlLCBj
b25zdCBSZW1vdGVDb21tYW5kQXJndW1lbnQqIGFyZ3VtZW50KQoreworICAgIGF1dG8qIHdpbmRv
dyA9IG1fZWxlbWVudC5kb2N1bWVudCgpLmRvbVdpbmRvdygpOworICAgIGF1dG8qIHNlc3Npb24g
PSB3aW5kb3cgPyAmTmF2aWdhdG9yTWVkaWFTZXNzaW9uOjptZWRpYVNlc3Npb24od2luZG93LT5u
YXZpZ2F0b3IoKSkgOiBudWxscHRyOworICAgIGlmICghc2Vzc2lvbiB8fCAhc2Vzc2lvbi0+aGFz
QWN0aXZlQWN0aW9uSGFuZGxlcnMoKSkgeworICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
ZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKGNvbW1hbmRUeXBlLCBhcmd1bWVudCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBNZWRpYVNlc3Npb25BY3Rpb25EZXRhaWxzIGFj
dGlvbkRldGFpbHM7CisgICAgc3dpdGNoIChjb21tYW5kVHlwZSkgeworICAgIGNhc2UgTm9Db21t
YW5kOgorICAgICAgICByZXR1cm47CisgICAgY2FzZSBQbGF5Q29tbWFuZDoKKyAgICAgICAgYWN0
aW9uRGV0YWlscy5hY3Rpb24gPSBNZWRpYVNlc3Npb25BY3Rpb246OlBsYXk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgUGF1c2VDb21tYW5kOgorICAgICAgICBhY3Rpb25EZXRhaWxzLmFjdGlv
biA9IE1lZGlhU2Vzc2lvbkFjdGlvbjo6UGF1c2U7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
U3RvcENvbW1hbmQ6CisgICAgICAgIGFjdGlvbkRldGFpbHMuYWN0aW9uID0gTWVkaWFTZXNzaW9u
QWN0aW9uOjpTdG9wOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFRvZ2dsZVBsYXlQYXVzZUNv
bW1hbmQ6CisgICAgICAgIGFjdGlvbkRldGFpbHMuYWN0aW9uID0gbV9lbGVtZW50LnBhdXNlZCgp
ID8gTWVkaWFTZXNzaW9uQWN0aW9uOjpQbGF5IDogTWVkaWFTZXNzaW9uQWN0aW9uOjpQYXVzZTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTZWVrVG9QbGF5YmFja1Bvc2l0aW9uQ29tbWFuZDoK
KyAgICAgICAgQVNTRVJUKGFyZ3VtZW50KTsKKyAgICAgICAgaWYgKCFhcmd1bWVudCkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgYWN0aW9uRGV0YWlscy5hY3Rpb24gPSBNZWRpYVNlc3Np
b25BY3Rpb246OlNlZWt0bzsKKyAgICAgICAgYWN0aW9uRGV0YWlscy5zZWVrVGltZSA9IGFyZ3Vt
ZW50LT5hc0RvdWJsZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTa2lwRm9yd2FyZENvbW1h
bmQ6CisgICAgICAgIGlmIChhcmd1bWVudCkKKyAgICAgICAgICAgIGFjdGlvbkRldGFpbHMuc2Vl
a09mZnNldCA9IGFyZ3VtZW50LT5hc0RvdWJsZTsKKyAgICAgICAgYWN0aW9uRGV0YWlscy5hY3Rp
b24gPSBNZWRpYVNlc3Npb25BY3Rpb246OlNlZWtmb3J3YXJkOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFNraXBCYWNrd2FyZENvbW1hbmQ6CisgICAgICAgIGlmIChhcmd1bWVudCkKKyAgICAg
ICAgICAgIGFjdGlvbkRldGFpbHMuc2Vla09mZnNldCA9IGFyZ3VtZW50LT5hc0RvdWJsZTsKKyAg
ICAgICAgYWN0aW9uRGV0YWlscy5hY3Rpb24gPSBNZWRpYVNlc3Npb25BY3Rpb246OlNlZWtiYWNr
d2FyZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOZXh0VHJhY2tDb21tYW5kOgorICAgICAg
ICBhY3Rpb25EZXRhaWxzLmFjdGlvbiA9IE1lZGlhU2Vzc2lvbkFjdGlvbjo6TmV4dHRyYWNrOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFByZXZpb3VzVHJhY2tDb21tYW5kOgorICAgICAgICBh
Y3Rpb25EZXRhaWxzLmFjdGlvbiA9IE1lZGlhU2Vzc2lvbkFjdGlvbjo6UHJldmlvdXN0cmFjazsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBCZWdpblNlZWtpbmdCYWNrd2FyZENvbW1hbmQ6Cisg
ICAgY2FzZSBFbmRTZWVraW5nQmFja3dhcmRDb21tYW5kOgorICAgIGNhc2UgQmVnaW5TZWVraW5n
Rm9yd2FyZENvbW1hbmQ6CisgICAgY2FzZSBFbmRTZWVraW5nRm9yd2FyZENvbW1hbmQ6CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgCisg
ICAgaWYgKGF1dG8gaGFuZGxlciA9IHNlc3Npb24tPmhhbmRsZXJGb3JBY3Rpb24oYWN0aW9uRGV0
YWlscy5hY3Rpb24pKQorICAgICAgICBoYW5kbGVyLT5oYW5kbGVFdmVudChhY3Rpb25EZXRhaWxz
KTsKKyAgICBlbHNlCisgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgIklnbm9yaW5n
IGNvbW1hbmQsIG5vIGFjdGlvbiBoYW5kbGVyIHJlZ2lzdGVyZWQgZm9yICIsIGFjdGlvbkRldGFp
bHMuYWN0aW9uKTsKK30KKyNlbmRpZgorCiBPcHRpb25hbDxOb3dQbGF5aW5nSW5mbz4gTWVkaWFF
bGVtZW50U2Vzc2lvbjo6bm93UGxheWluZ0luZm8oKSBjb25zdAogewogICAgIGF1dG8qIHBhZ2Ug
PSBtX2VsZW1lbnQuZG9jdW1lbnQoKS5wYWdlKCk7CkBAIC0xMDMyLDcgKzExMDIsMTkgQEAgT3B0
aW9uYWw8Tm93UGxheWluZ0luZm8+IE1lZGlhRWxlbWVudFNlc3Npb246Om5vd1BsYXlpbmdJbmZv
KCkgY29uc3QKICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUoY3VycmVudFRpbWUpIHx8ICFzdXBwb3J0
c1NlZWtpbmcpCiAgICAgICAgIGN1cnJlbnRUaW1lID0gTWVkaWFQbGF5ZXI6OmludmFsaWRUaW1l
KCk7CiAKLSAgICByZXR1cm4gTm93UGxheWluZ0luZm8geyBtX2VsZW1lbnQubWVkaWFTZXNzaW9u
VGl0bGUoKSwgbV9lbGVtZW50LnNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcigpLCBkdXJhdGlv
biwgY3VycmVudFRpbWUsIHN1cHBvcnRzU2Vla2luZywgbV9lbGVtZW50Lm1lZGlhU2Vzc2lvblVu
aXF1ZUlkZW50aWZpZXIoKSwgaXNQbGF5aW5nLCBhbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNp
YmlsaXR5IH07CisgICAgU3RyaW5nIHRpdGxlOworICAgIFN0cmluZyBhcnRpc3Q7CisgICAgU3Ry
aW5nIGFsYnVtOworICAgIGF1dG8qIHdpbmRvdyA9IG1fZWxlbWVudC5kb2N1bWVudCgpLmRvbVdp
bmRvdygpOworICAgIGF1dG8qIHNlc3Npb25NZXRhZGF0YSA9IHdpbmRvdyA/IE5hdmlnYXRvck1l
ZGlhU2Vzc2lvbjo6bWVkaWFTZXNzaW9uKHdpbmRvdy0+bmF2aWdhdG9yKCkpLm1ldGFkYXRhKCkg
OiBudWxscHRyOworICAgIGlmIChzZXNzaW9uTWV0YWRhdGEpIHsKKyAgICAgICAgdGl0bGUgPSBz
ZXNzaW9uTWV0YWRhdGEtPnRpdGxlKCk7CisgICAgICAgIGFydGlzdCA9IHNlc3Npb25NZXRhZGF0
YS0+YXJ0aXN0KCk7CisgICAgICAgIGFsYnVtID0gc2Vzc2lvbk1ldGFkYXRhLT5hbGJ1bSgpOwor
ICAgIH0gZWxzZQorICAgICAgICB0aXRsZSA9IG1fZWxlbWVudC5tZWRpYVNlc3Npb25UaXRsZSgp
OworCisgICAgcmV0dXJuIE5vd1BsYXlpbmdJbmZvIHsgV1RGTW92ZSh0aXRsZSksIFdURk1vdmUo
YXJ0aXN0KSwgV1RGTW92ZShhbGJ1bSksIG1fZWxlbWVudC5zb3VyY2VBcHBsaWNhdGlvbklkZW50
aWZpZXIoKSwgZHVyYXRpb24sIGN1cnJlbnRUaW1lLCBzdXBwb3J0c1NlZWtpbmcsIG1fZWxlbWVu
dC5tZWRpYVNlc3Npb25VbmlxdWVJZGVudGlmaWVyKCksIGlzUGxheWluZywgYWxsb3dzTm93UGxh
eWluZ0NvbnRyb2xzVmlzaWJpbGl0eSB9OwogfQogCiB2b2lkIE1lZGlhRWxlbWVudFNlc3Npb246
OnVwZGF0ZU1lZGlhVXNhZ2VJZkNoYW5nZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxl
bWVudFNlc3Npb24uaAppbmRleCAxYWI0NjJmNDQ2MWE0NGZjY2VjZWQ5ZmJkMTIzYjZlNzUyYjc3
NDIzLi5kNzFlNGRiYjRmMDNjNDM2ZWYzNGVjOTRjZWU0NzAyYWVhMmEwMWJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE3NCw2ICsxNzQsMTAgQEAg
cHVibGljOgogICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuICJNZWRpYUVsZW1lbnRTZXNzaW9uIjsgfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFf
U0VTU0lPTikKKyAgICB2b2lkIGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChSZW1vdGVD
b250cm9sQ29tbWFuZFR5cGUsIGNvbnN0IFJlbW90ZUNvbW1hbmRBcmd1bWVudCogPSBudWxscHRy
KSBmaW5hbDsKKyNlbmRpZgorCiBwcml2YXRlOgogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlC
QUNLX1RBUkdFVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IDY3MDFhMmRlMDc0
MDI4NDM1YTRiZjczNmJmYjZmZjI5YTA0OGZkYjUuLjFhZDQzZmU1MzZhZDNjYWNiZDJjNGU3ZTA0
YjE1MDI2N2U5ZThiMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAtMTAxLDcg
KzEwMSw2IEBAIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiBjbGFzcyBIVE1MVmlkZW9FbGVtZW50
OwogY2xhc3MgSGl0VGVzdFJlc3VsdDsKIGNsYXNzIEludFJlY3Q7Ci1jbGFzcyBNZWRpYVNlc3Np
b25NZXRhZGF0YTsKIGNsYXNzIE5hdmlnYXRpb25BY3Rpb247CiBjbGFzcyBOb2RlOwogY2xhc3Mg
UGFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlbW90ZUNvbW1hbmRM
aXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVu
ZXIuY3BwCmluZGV4IGFmMzRkNTBkM2E1YThhNjVlNWJjOTVlODc3NTMxYTdhYmY0NDc5NjcuLjVi
MmE5MWYyYzViNDgwZmZmNWNkODQyMjk2MzEyMjU4NDg1MTVjZmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNyw0ICszNywyNSBA
QCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ29tbWFuZExpc3RlbmVyPiBSZW1vdGVDb21tYW5kTGlz
dGVuZXI6OmNyZWF0ZShSZW1vdGVDb21tYQogCiAjZW5kaWYKIAordm9pZCBSZW1vdGVDb21tYW5k
TGlzdGVuZXI6OnNjaGVkdWxlU3VwcG9ydGVkQ29tbWFuZHNVcGRhdGUoKQoreworICAgIGlmICgh
bV91cGRhdGVDb21tYW5kc1Rhc2suaGFzUGVuZGluZ1Rhc2soKSkgeworICAgICAgICBtX3VwZGF0
ZUNvbW1hbmRzVGFzay5zY2hlZHVsZVRhc2soW3RoaXNdICgpICB7CisgICAgICAgICAgICB1cGRh
dGVTdXBwb3J0ZWRDb21tYW5kcygpOworICAgICAgICB9KTsKKyAgICB9Cit9CisKK3ZvaWQgUmVt
b3RlQ29tbWFuZExpc3RlbmVyOjphZGRTdXBwb3J0ZWRDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgY29tbWFuZCkKK3sKKyAgICBtX3JlZ2lzdGVy
ZWRDb21tYW5kcy5hZGQoY29tbWFuZCk7CisgICAgc2NoZWR1bGVTdXBwb3J0ZWRDb21tYW5kc1Vw
ZGF0ZSgpOworfQorCit2b2lkIFJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6cmVtb3ZlU3VwcG9ydGVk
Q29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlIGNv
bW1hbmQpCit7CisgICAgbV9yZWdpc3RlcmVkQ29tbWFuZHMucmVtb3ZlKGNvbW1hbmQpOworICAg
IHNjaGVkdWxlU3VwcG9ydGVkQ29tbWFuZHNVcGRhdGUoKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuaAppbmRleCAyYjQzNGFlZjZl
NzVlYTM1MGM4ODg1ZjBlZWY3MGM1OTZlMDExZTk3Li42N2FjYmFhODY0ZDExNmJmMDIzMTFiMTQz
NDg4MDM0YmEwNmM5NmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZW1v
dGVDb21tYW5kTGlzdGVuZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZW1vdGVD
b21tYW5kTGlzdGVuZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIFJlbW90ZUNvbW1hbmRMaXN0
ZW5lcl9oCiAjZGVmaW5lIFJlbW90ZUNvbW1hbmRMaXN0ZW5lcl9oCiAKKyNpbmNsdWRlICJEZWZl
cnJhYmxlVGFzay5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTQ1LDEyICs0NiwyMCBAQCBwdWJsaWM6CiAgICAgUmVtb3RlQ29t
bWFuZExpc3RlbmVyKFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCYgY2xpZW50KSA6IG1fY2xp
ZW50KGNsaWVudCkgeyB9CiAgICAgdmlydHVhbCB+UmVtb3RlQ29tbWFuZExpc3RlbmVyKCkgPSBk
ZWZhdWx0OwogCisgICAgdm9pZCBhZGRTdXBwb3J0ZWRDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUpOworICAgIHZvaWQgcmVtb3ZlU3VwcG9ydGVk
Q29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlKTsK
ICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3VwcG9ydGVkQ29tbWFuZHMoKSB7IH0KKyAgICB2b2lk
IHNjaGVkdWxlU3VwcG9ydGVkQ29tbWFuZHNVcGRhdGUoKTsKIAogICAgIFJlbW90ZUNvbW1hbmRM
aXN0ZW5lckNsaWVudCYgY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQ7IH0KIAogcHJv
dGVjdGVkOgogICAgIFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCYgbV9jbGllbnQ7CisKKyAg
ICB1c2luZyBSZW1vdGVDb21tYW5kc1NldCA9IEhhc2hTZXQ8UGxhdGZvcm1NZWRpYVNlc3Npb246
OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgV1RGOjpJbnRIYXNoPFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRz
PFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGU+PjsKKyAgICBS
ZW1vdGVDb21tYW5kc1NldCBtX3JlZ2lzdGVyZWRDb21tYW5kczsKKworICAgIERlZmVycmFibGVU
YXNrPFRpbWVyPiBtX3VwZGF0ZUNvbW1hbmRzVGFzazsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oCmluZGV4IDY3ZTkxZTIyZGY4ZjAw
ZGI0NDU4MmU5ODBmYjYyMmE4YTA3ODkwZTUuLjc1NDgyN2FhNjBmMjk1MDdkZTMxN2FiZGM3NzI3
ZjFhMThmNGRiZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL05v
d1BsYXlpbmdJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxh
eWluZ0luZm8uaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zMiw2ICszMiw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IE5v
d1BsYXlpbmdJbmZvIHsKICAgICBTdHJpbmcgdGl0bGU7CisgICAgU3RyaW5nIGFydGlzdDsKKyAg
ICBTdHJpbmcgYWxidW07CiAgICAgU3RyaW5nIHNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcjsK
ICAgICBkb3VibGUgZHVyYXRpb24geyAwIH07CiAgICAgZG91YmxlIGN1cnJlbnRUaW1lIHsgMCB9
OwpAQCAtNTUsNiArNTcsMTQgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIE9wdGlv
bmFsPE5vd1BsYXlpbmdJbmZvPiBOb3dQbGF5aW5nSW5mbzo6ZGVjb2RlKEQKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHRpdGxlKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAorICAgIFN0cmluZyBh
cnRpc3Q7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhcnRpc3QpKQorICAgICAgICByZXR1cm4g
eyB9OworCisgICAgU3RyaW5nIGFsYnVtOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWxidW0p
KQorICAgICAgICByZXR1cm4geyB9OworCiAgICAgU3RyaW5nIHNvdXJjZUFwcGxpY2F0aW9uSWRl
bnRpZmllcjsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNvdXJjZUFwcGxpY2F0aW9uSWRlbnRp
ZmllcikpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC04Myw3ICs5Myw3IEBAIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IGlubGluZSBPcHRpb25hbDxOb3dQbGF5aW5nSW5mbz4gTm93UGxheWluZ0lu
Zm86OmRlY29kZShECiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhbGxvd3NOb3dQbGF5aW5nQ29u
dHJvbHNWaXNpYmlsaXR5KSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIHJldHVybiBOb3dQ
bGF5aW5nSW5mbyB7IFdURk1vdmUodGl0bGUpLCBXVEZNb3ZlKHNvdXJjZUFwcGxpY2F0aW9uSWRl
bnRpZmllciksIGR1cmF0aW9uLCBjdXJyZW50VGltZSwgc3VwcG9ydHNTZWVraW5nLCB1bmlxdWVJ
ZGVudGlmaWVyLCBpc1BsYXlpbmcsIGFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHkg
fTsKKyAgICByZXR1cm4gTm93UGxheWluZ0luZm8geyBXVEZNb3ZlKHRpdGxlKSwgV1RGTW92ZShh
cnRpc3QpLCBXVEZNb3ZlKGFsYnVtKSwgV1RGTW92ZShzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZp
ZXIpLCBkdXJhdGlvbiwgY3VycmVudFRpbWUsIHN1cHBvcnRzU2Vla2luZywgdW5pcXVlSWRlbnRp
ZmllciwgaXNQbGF5aW5nLCBhbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5IH07CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcAppbmRleCA5MjY5YWQzOTNlNjIw
NTkxYzgwYjQyMThmNTk4NDQ1OWZlZjlmYmEzLi40MzdjNmQwYTUxNjY0NTkwYTQ2OWJhZDFiYjU4
MjJjMTk4MmUxOTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Q
bGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTMsNiArOTMsMTAgQEAgU3RyaW5nIGNv
bnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250
cm9sQ29tbWFuZFR5cGUKICAgICAgICAgTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoIkJlZ2luU2Vl
a2luZ0ZvcndhcmRDb21tYW5kIiksCiAgICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJF
bmRTZWVraW5nRm9yd2FyZENvbW1hbmQiKSwKICAgICAgICAgTUFLRV9TVEFUSUNfU1RSSU5HX0lN
UEwoIlNlZWtUb1BsYXliYWNrUG9zaXRpb25Db21tYW5kIiksCisgICAgICAgIE1BS0VfU1RBVElD
X1NUUklOR19JTVBMKCJTa2lwRm9yd2FyZENvbW1hbmQiKSwKKyAgICAgICAgTUFLRV9TVEFUSUNf
U1RSSU5HX0lNUEwoIlNraXBCYWNrd2FyZENvbW1hbmQiKSwKKyAgICAgICAgTUFLRV9TVEFUSUNf
U1RSSU5HX0lNUEwoIk5leHRUcmFja0NvbW1hbmQiKSwKKyAgICAgICAgTUFLRV9TVEFUSUNfU1RS
SU5HX0lNUEwoIlByZXZpb3VzVHJhY2tDb21tYW5kIiksCiAgICAgfTsKICAgICBzdGF0aWNfYXNz
ZXJ0KCFzdGF0aWNfY2FzdDxzaXplX3Q+KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb0NvbW1hbmQp
LCAiUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5vQ29tbWFuZCBpcyBub3QgMCBhcyBleHBlY3RlZCIp
OwogICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6UGxheUNvbW1hbmQpID09IDEsICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheUNvbW1h
bmQgaXMgbm90IDEgYXMgZXhwZWN0ZWQiKTsKQEAgLTEwNCw2ICsxMDgsMTAgQEAgU3RyaW5nIGNv
bnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250
cm9sQ29tbWFuZFR5cGUKICAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oUGxh
dGZvcm1NZWRpYVNlc3Npb246OkJlZ2luU2Vla2luZ0ZvcndhcmRDb21tYW5kKSA9PSA3LCAiUGxh
dGZvcm1NZWRpYVNlc3Npb246OkJlZ2luU2Vla2luZ0ZvcndhcmRDb21tYW5kIGlzIG5vdCA3IGFz
IGV4cGVjdGVkIik7CiAgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpFbmRTZWVraW5nRm9yd2FyZENvbW1hbmQpID09IDgsICJQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6RW5kU2Vla2luZ0ZvcndhcmRDb21tYW5kIGlzIG5vdCA4IGFzIGV4cGVj
dGVkIik7CiAgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpTZWVrVG9QbGF5YmFja1Bvc2l0aW9uQ29tbWFuZCkgPT0gOSwgIlBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpTZWVrVG9QbGF5YmFja1Bvc2l0aW9uQ29tbWFuZCBpcyBub3QgOSBhcyBl
eHBlY3RlZCIpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6U2tpcEZvcndhcmRDb21tYW5kKSA9PSAxMCwgIlBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpTa2lwRm9yd2FyZENvbW1hbmQgaXMgbm90IDEwIGFzIGV4cGVjdGVkIik7CisgICAg
c3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpT
a2lwQmFja3dhcmRDb21tYW5kKSA9PSAxMSwgIlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTa2lwQmFj
a3dhcmRDb21tYW5kIGlzIG5vdCAxMSBhcyBleHBlY3RlZCIpOworICAgIHN0YXRpY19hc3NlcnQo
c3RhdGljX2Nhc3Q8c2l6ZV90PihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TmV4dFRyYWNrQ29tbWFu
ZCkgPT0gMTIsICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TmV4dFRyYWNrQ29tbWFuZCBpcyBub3Qg
MTIgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4o
UGxhdGZvcm1NZWRpYVNlc3Npb246OlByZXZpb3VzVHJhY2tDb21tYW5kKSA9PSAxMywgIlBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpQcmV2aW91c1RyYWNrQ29tbWFuZCBpcyBub3QgMTMgYXMgZXhwZWN0
ZWQiKTsKICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb21tYW5kKSA8IFdURl9BUlJB
WV9MRU5HVEgodmFsdWVzKSk7CiAgICAgcmV0dXJuIHZhbHVlc1tzdGF0aWNfY2FzdDxzaXplX3Q+
KGNvbW1hbmQpXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L1BsYXRmb3JtTWVkaWFTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Q
bGF0Zm9ybU1lZGlhU2Vzc2lvbi5oCmluZGV4IGM5ODEyMTNkNWU5MDc2ZTQyZWI5MGRiNGYzYTEx
NTZiNTJmNGI2MjYuLmQ5NTJmYTk1YjNmMjczNzBlNjBiNGM2OTEyZTk1MWE1ZDY4ZDBkYjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNz
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNl
c3Npb24uaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTEzMCw5ICsxMzAsMTMgQEAgcHVibGljOgogICAgICAgICBCZWdpblNlZWtp
bmdGb3J3YXJkQ29tbWFuZCwKICAgICAgICAgRW5kU2Vla2luZ0ZvcndhcmRDb21tYW5kLAogICAg
ICAgICBTZWVrVG9QbGF5YmFja1Bvc2l0aW9uQ29tbWFuZCwKKyAgICAgICAgU2tpcEZvcndhcmRD
b21tYW5kLAorICAgICAgICBTa2lwQmFja3dhcmRDb21tYW5kLAorICAgICAgICBOZXh0VHJhY2tD
b21tYW5kLAorICAgICAgICBQcmV2aW91c1RyYWNrQ29tbWFuZCwKICAgICB9OwogICAgIGJvb2wg
Y2FuUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kcygpIGNvbnN0OwotICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgY29uc3Qg
UmVtb3RlQ29tbWFuZEFyZ3VtZW50KiBhcmd1bWVudCA9IG51bGxwdHIpOworICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUmVtb3RlQ29udHJvbENvbW1hbmRU
eXBlLCBjb25zdCBSZW1vdGVDb21tYW5kQXJndW1lbnQqID0gbnVsbHB0cik7CiAgICAgYm9vbCBz
dXBwb3J0c1NlZWtpbmcoKSBjb25zdDsKIAogICAgIGVudW0gRGlzcGxheVR5cGUgOiB1aW50OF90
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZv
cm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgKaW5kZXggMWZjYjMzNDI0ZjBiNTVmZDIyMDliNjM0Y2Vk
ZGVlODM5YzRkN2VkNi4uMjNkZDk5YzZkZWYyZmY0ZGFlZjg3YTA1MDk4Yjc3NWE4MDdkY2ExMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNl
c3Npb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZv
cm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNTIsNiArMTUyLDkgQEAgcHVibGljOgogICAg
IGJvb2wgaXNJbnRlcnJ1cHRlZCgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJydXB0ZWQ7IH0KICAg
ICBib29sIGhhc05vU2Vzc2lvbigpIGNvbnN0OwogCisgICAgdmlydHVhbCB2b2lkIGFkZFN1cHBv
cnRlZENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlw
ZSkgeyB9OworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVTdXBwb3J0ZWRDb21tYW5kKFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUpIHsgfTsKKwogcHJvdGVjdGVk
OgogICAgIGZyaWVuZCBjbGFzcyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjsKICAgICBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLmgKaW5kZXggNDFi
YTJkNTBjOGFhNmFhYmE5OTYyNzU5NWVlMDQyZGU0NmI3MmEyZS4uZDllMzdhYTgzN2Q2NThhOTcy
ZTZiYjQzMjY2YzZjZGQ2MGRmYTk3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODQs
NiArODQsOSBAQCBwcm90ZWN0ZWQ6CiAKICAgICBHZW5lcmljVGFza1F1ZXVlPFRpbWVyPiYgdGFz
a1F1ZXVlKCkgeyByZXR1cm4gbV90YXNrUXVldWU7IH0KIAorICAgIHZvaWQgYWRkU3VwcG9ydGVk
Q29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlKSBm
aW5hbDsKKyAgICB2b2lkIHJlbW92ZVN1cHBvcnRlZENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Np
b246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSkgZmluYWw7CisKIHByaXZhdGU6CiAjaWYgIVJF
TEVBU0VfTE9HX0RJU0FCTEVECiAgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gIk1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYSI7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFn
ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vz
c2lvbk1hbmFnZXJDb2NvYS5tbQppbmRleCAwNmZmZmU3MDQ0NmU4MWJjMTFiZWU2ZTNlOWQzYTg2
NmJmOTI3N2M3Li5kMzRmYzkwZDdhYThiNjQwODA3OWEzMTQ4OGFiMDJmODBiN2YyODk2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25N
YW5hZ2VyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2Ev
TWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTUzLDYgKzE1Myw5IEBAIHZvaWQgTWVk
aWFTZXNzaW9uTWFuYWdlckNvY29hOjpwcmVwYXJlVG9TZW5kVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3QoKQogdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNjaGVkdWxlU2Vzc2lvblN0
YXR1c1VwZGF0ZSgpCiB7CiAgICAgbV90YXNrUXVldWUuZW5xdWV1ZVRhc2soW3RoaXNdICgpIG11
dGFibGUgeworICAgICAgICBpZiAobV9yZW1vdGVDb21tYW5kTGlzdGVuZXIpCisgICAgICAgICAg
ICBtX3JlbW90ZUNvbW1hbmRMaXN0ZW5lci0+dXBkYXRlU3VwcG9ydGVkQ29tbWFuZHMoKTsKKwog
ICAgICAgICB1cGRhdGVOb3dQbGF5aW5nSW5mbygpOwogCiAgICAgICAgIGZvckVhY2hTZXNzaW9u
KFtdIChhdXRvJiBzZXNzaW9uKSB7CkBAIC0yMzIsMTAgKzIzNSwyMyBAQCB2b2lkIE1lZGlhU2Vz
c2lvbk1hbmFnZXJDb2NvYTo6Y2xpZW50Q2hhcmFjdGVyaXN0aWNzQ2hhbmdlZChQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbgogCiB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2Vzc2lvbkNhblBy
b2R1Y2VBdWRpb0NoYW5nZWQoKQogeworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CiAg
ICAgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uQ2FuUHJvZHVjZUF1ZGlvQ2hh
bmdlZCgpOwogICAgIHNjaGVkdWxlU2Vzc2lvblN0YXR1c1VwZGF0ZSgpOwogfQogCit2b2lkIE1l
ZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6YWRkU3VwcG9ydGVkQ29tbWFuZChQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlIGNvbW1hbmQpCit7CisgICAgaWYgKG1f
cmVtb3RlQ29tbWFuZExpc3RlbmVyKQorICAgICAgICBtX3JlbW90ZUNvbW1hbmRMaXN0ZW5lci0+
YWRkU3VwcG9ydGVkQ29tbWFuZChjb21tYW5kKTsKK30KKwordm9pZCBNZWRpYVNlc3Npb25NYW5h
Z2VyQ29jb2E6OnJlbW92ZVN1cHBvcnRlZENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJl
bW90ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21tYW5kKQoreworICAgIGlmIChtX3JlbW90ZUNvbW1h
bmRMaXN0ZW5lcikKKyAgICAgICAgbV9yZW1vdGVDb21tYW5kTGlzdGVuZXItPnJlbW92ZVN1cHBv
cnRlZENvbW1hbmQoY29tbWFuZCk7Cit9CisKIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29h
OjpjbGVhck5vd1BsYXlpbmdJbmZvKCkKIHsKICAgICBpZiAoY2FuTG9hZF9NZWRpYVJlbW90ZV9N
Uk1lZGlhUmVtb3RlU2V0Tm93UGxheWluZ1Zpc2liaWxpdHkoKSkKQEAgLTI2MCw2ICsyNzYsMTIg
QEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJbmZvKGJvb2wg
c2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24KIAogICAgIGF1dG8gaW5mbyA9IGFkb3B0Q0YoQ0ZE
aWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCA0LCAma0NGVHlwZURp
Y3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7
CiAKKyAgICBpZiAoIW5vd1BsYXlpbmdJbmZvLmFydGlzdC5pc0VtcHR5KCkpCisgICAgICAgIENG
RGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0lu
Zm9BcnRpc3QsIG5vd1BsYXlpbmdJbmZvLmFydGlzdC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsK
KworICAgIGlmICghbm93UGxheWluZ0luZm8uYWxidW0uaXNFbXB0eSgpKQorICAgICAgICBDRkRp
Y3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZv
QWxidW0sIG5vd1BsYXlpbmdJbmZvLmFsYnVtLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworCiAg
ICAgaWYgKCFub3dQbGF5aW5nSW5mby50aXRsZS5pc0VtcHR5KCkpCiAgICAgICAgIENGRGljdGlv
bmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9UaXRs
ZSwgbm93UGxheWluZ0luZm8udGl0bGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9NZWRpYVJlbW90ZVNvZnRMaW5rLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTWVkaWFSZW1vdGVTb2Z0TGluay5oCmluZGV4
IDhiNWNkMjNmYjAyYWEyNjQ2NjBlZGYzODE0ZTc3ZmI4NjJmZDUwYzguLjBhZTgzZGQwMjI5OWEy
Zjk2YjIxNzc0ODJiM2M3NzJiYjY5MGQwNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9NZWRpYVJlbW90ZVNvZnRMaW5rLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL01lZGlhUmVtb3RlU29mdExpbmsuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01OCw2ICs1OCwxNCBAQCBTT0ZUX0xJTktf
RlVOQ1RJT05fTUFZX0ZBSUxfRk9SX0hFQURFUihXZWJDb3JlLCBNZWRpYVJlbW90ZSwgTVJNZWRp
YVJlbW90ZVNldFBhcgogI2RlZmluZSBNUk1lZGlhUmVtb3RlU2V0UGFyZW50QXBwbGljYXRpb24g
c29mdExpbmtfTWVkaWFSZW1vdGVfTVJNZWRpYVJlbW90ZVNldFBhcmVudEFwcGxpY2F0aW9uCiBT
T0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihXZWJDb3JlLCBNZWRpYVJlbW90ZSwga01STWVk
aWFSZW1vdGVOb3dQbGF5aW5nSW5mb1RpdGxlLCBDRlN0cmluZ1JlZik7CiAjZGVmaW5lIGtNUk1l
ZGlhUmVtb3RlTm93UGxheWluZ0luZm9UaXRsZSBnZXRfTWVkaWFSZW1vdGVfa01STWVkaWFSZW1v
dGVOb3dQbGF5aW5nSW5mb1RpdGxlKCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFdl
YkNvcmUsIE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0aXN0LCBD
RlN0cmluZ1JlZik7CisjZGVmaW5lIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnRpc3Qg
Z2V0X01lZGlhUmVtb3RlX2tNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnRpc3QoKQorU09G
VF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoV2ViQ29yZSwgTWVkaWFSZW1vdGUsIGtNUk1lZGlh
UmVtb3RlTm93UGxheWluZ0luZm9BbGJ1bSwgQ0ZTdHJpbmdSZWYpOworI2RlZmluZSBrTVJNZWRp
YVJlbW90ZU5vd1BsYXlpbmdJbmZvQWxidW0gZ2V0X01lZGlhUmVtb3RlX2tNUk1lZGlhUmVtb3Rl
Tm93UGxheWluZ0luZm9BbGJ1bSgpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihXZWJD
b3JlLCBNZWRpYVJlbW90ZSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtEYXRh
LCBDRlN0cmluZ1JlZik7CisjZGVmaW5lIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3
b3JrRGF0YSBnZXRfTWVkaWFSZW1vdGVfa01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdv
cmtEYXRhKCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFdlYkNvcmUsIE1lZGlhUmVt
b3RlLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya01JTUVUeXBlLCBDRlN0cmlu
Z1JlZik7CisjZGVmaW5lIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrTUlNRVR5
cGUgZ2V0X01lZGlhUmVtb3RlX2tNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrTUlN
RVR5cGUoKQogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoV2ViQ29yZSwgTWVkaWFSZW1v
dGUsIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9EdXJhdGlvbiwgQ0ZTdHJpbmdSZWYpOwog
I2RlZmluZSBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRHVyYXRpb24gZ2V0X01lZGlhUmVt
b3RlX2tNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9EdXJhdGlvbigpCiBTT0ZUX0xJTktfQ09O
U1RBTlRfRk9SX0hFQURFUihXZWJDb3JlLCBNZWRpYVJlbW90ZSwga01STWVkaWFSZW1vdGVOb3dQ
bGF5aW5nSW5mb0VsYXBzZWRUaW1lLCBDRlN0cmluZ1JlZik7CkBAIC02OCw2ICs3Niw4IEBAIFNP
RlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBrTVJNZWRp
YVJlbW90ZU9wdGlvblBsYXliYWNrCiAjZGVmaW5lIGtNUk1lZGlhUmVtb3RlT3B0aW9uUGxheWJh
Y2tQb3NpdGlvbiBnZXRfTWVkaWFSZW1vdGVfa01STWVkaWFSZW1vdGVPcHRpb25QbGF5YmFja1Bv
c2l0aW9uKCkKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFdlYkNvcmUsIE1lZGlhUmVt
b3RlLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvVW5pcXVlSWRlbnRpZmllciwgQ0ZTdHJp
bmdSZWYpOwogI2RlZmluZSBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvVW5pcXVlSWRlbnRp
ZmllciBnZXRfTWVkaWFSZW1vdGVfa01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb1VuaXF1ZUlk
ZW50aWZpZXIoKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoV2ViQ29yZSwgTWVkaWFS
ZW1vdGUsIGtNUk1lZGlhUmVtb3RlT3B0aW9uU2tpcEludGVydmFsLCBDRlN0cmluZ1JlZik7Cisj
ZGVmaW5lIGtNUk1lZGlhUmVtb3RlT3B0aW9uU2tpcEludGVydmFsIGdldF9NZWRpYVJlbW90ZV9r
TVJNZWRpYVJlbW90ZU9wdGlvblNraXBJbnRlcnZhbCgpCiAKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoV2ViQ29yZSwgTWVkaWFSZW1vdGUs
IE1STWVkaWFSZW1vdGVDb3B5UGlja2FibGVSb3V0ZXMsIENGQXJyYXlSZWYsICgpLCAoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9NZWRpYVJlbW90ZVNvZnRMaW5r
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL01lZGlhUmVtb3RlU29mdExpbmsubW0K
aW5kZXggODRkYWNiODUxZjhjZjZjMWJkNjY3YTk2ZTdiYzA5ZjczOTJmOWQ1NC4uNzNlN2IyMGQ5
YmY1NTI3MDQ3YWMzODExNTIwMDZmM2U4NTIxNWUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL01lZGlhUmVtb3RlU29mdExpbmsubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL01lZGlhUmVtb3RlU29mdExpbmsubW0KQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIAogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ0LDExICs0NCwxNiBAQCBT
T0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShXZWJDb3JlLCBNZWRpYVJlbW90ZSwgTVJNZWRp
YVJlbW90ZVNldE5vd1BsYXlpbmdJbgogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2Vi
Q29yZSwgTWVkaWFSZW1vdGUsIE1STWVkaWFSZW1vdGVTZXROb3dQbGF5aW5nQXBwbGljYXRpb25Q
bGF5YmFja1N0YXRlRm9yT3JpZ2luLCB2b2lkLCAoTVJPcmlnaW5SZWYgb3JpZ2luLCBNUlBsYXli
YWNrU3RhdGUgcGxheWJhY2tTdGF0ZSwgZGlzcGF0Y2hfcXVldWVfdCByZXBseVEsIHZvaWQoXmNv
bXBsZXRpb24pKE1STWVkaWFSZW1vdGVFcnJvcikpLCAob3JpZ2luLCBwbGF5YmFja1N0YXRlLCBy
ZXBseVEsIGNvbXBsZXRpb24pKQogU09GVF9MSU5LX0ZVTkNUSU9OX01BWV9GQUlMX0ZPUl9TT1VS
Q0UoV2ViQ29yZSwgTWVkaWFSZW1vdGUsIE1STWVkaWFSZW1vdGVTZXRQYXJlbnRBcHBsaWNhdGlv
biwgdm9pZCwgKE1ST3JpZ2luUmVmIG9yaWdpbiwgQ0ZTdHJpbmdSZWYgcGFyZW50QXBwRGlzcGxh
eUlEKSwgKG9yaWdpbiwgcGFyZW50QXBwRGlzcGxheUlEKSkKIFNPRlRfTElOS19DT05TVEFOVF9G
T1JfU09VUkNFKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJ
bmZvVGl0bGUsIENGU3RyaW5nUmVmKTsKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFdl
YkNvcmUsIE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0aXN0LCBD
RlN0cmluZ1JlZik7CitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShXZWJDb3JlLCBNZWRp
YVJlbW90ZSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FsYnVtLCBDRlN0cmluZ1JlZik7
CitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShXZWJDb3JlLCBNZWRpYVJlbW90ZSwga01S
TWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtEYXRhLCBDRlN0cmluZ1JlZik7CitTT0ZU
X0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShXZWJDb3JlLCBNZWRpYVJlbW90ZSwga01STWVkaWFS
ZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtNSU1FVHlwZSwgQ0ZTdHJpbmdSZWYpOwogU09GVF9M
SU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgTWVkaWFSZW1vdGUsIGtNUk1lZGlhUmVt
b3RlTm93UGxheWluZ0luZm9EdXJhdGlvbiwgQ0ZTdHJpbmdSZWYpOwogU09GVF9MSU5LX0NPTlNU
QU5UX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgTWVkaWFSZW1vdGUsIGtNUk1lZGlhUmVtb3RlTm93UGxh
eWluZ0luZm9FbGFwc2VkVGltZSwgQ0ZTdHJpbmdSZWYpOwogU09GVF9MSU5LX0NPTlNUQU5UX0ZP
Ul9TT1VSQ0UoV2ViQ29yZSwgTWVkaWFSZW1vdGUsIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0lu
Zm9QbGF5YmFja1JhdGUsIENGU3RyaW5nUmVmKTsKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09V
UkNFKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU9wdGlvblBsYXliYWNrUG9z
aXRpb24sIENGU3RyaW5nUmVmKTsKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFdlYkNv
cmUsIE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvVW5pcXVlSWRlbnRp
ZmllciwgQ0ZTdHJpbmdSZWYpOworU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoV2ViQ29y
ZSwgTWVkaWFSZW1vdGUsIGtNUk1lZGlhUmVtb3RlT3B0aW9uU2tpcEludGVydmFsLCBDRlN0cmlu
Z1JlZik7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZP
Ul9TT1VSQ0UoV2ViQ29yZSwgTWVkaWFSZW1vdGUsIE1STWVkaWFSZW1vdGVDb3B5UGlja2FibGVS
b3V0ZXMsIENGQXJyYXlSZWYsICgpLCAoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLmgKaW5kZXggOTRhNDJlMTkxNzFi
MmRjYjlmZTliOTBmMWQ1OGMyM2M5Zjc4YTIzYi4uYjcxY2FkODY4MTg4ODRkOTk0YWZhZWU4Mzgy
NjljOTVmNzFkY2M2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Jl
bW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9SZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOSw5ICszOSwxMyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB+UmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjKCk7CiAKIHByb3RlY3RlZDoKLSAgICB2
b2lkIHVwZGF0ZVN1cHBvcnRlZENvbW1hbmRzKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVT
dXBwb3J0ZWRDb21tYW5kcygpIGZpbmFsOwogCiAgICAgdm9pZCogbV9jb21tYW5kSGFuZGxlciB7
IG51bGxwdHIgfTsKKworICAgIGNvbnN0IFJlbW90ZUNvbW1hbmRzU2V0JiBkZWZhdWx0Q29tbWFu
ZHMoKTsKKyAgICBSZW1vdGVDb21tYW5kc1NldCBtX2N1cnJlbnRDb21tYW5kczsKKyAgICBib29s
IG1fc3VwcG9ydHNTZWVraW5nIHsgZmFsc2UgfTsKIH07CiAgICAgCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5tbQpp
bmRleCA0ZWE4MzkyMDcyNzE4NDQ4YTg2MjJmZmUyZDMyNWNmNzM3MTI0NjI4Li5mYWY3NTNmODdh
NDRmZjIwZmVkODI5M2Q3YzE1YjA1YjNhODcwMmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9SZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMubW0KQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIAogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM1LDQyICsz
NSwxMDIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgT3B0aW9uYWw8TVJNZWRp
YVJlbW90ZUNvbW1hbmQ+IG1lZGlhUmVtb3RlQ29tbWFuZEZvclBsYXRmb3JtQ29tbWFuZChQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlIGNvbW1hbmQpCit7Cisg
ICAgc3RhdGljIGNvbnN0IGF1dG8gY29tbWFuZE1hcCA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7
CisgICAgICAgIHN0cnVjdCBNYXBFbnRyeSB7CisgICAgICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlIHBsYXRmb3JtQ29tbWFuZDsKKyAgICAgICAg
ICAgIE1STWVkaWFSZW1vdGVDb21tYW5kIG1lZGlhUmVtb3RlQ29tbWFuZDsKKyAgICAgICAgfTsK
KyAgICAgICAgc3RhdGljIGNvbnN0IE1hcEVudHJ5IGVudHJpZXNbXSA9IHsKKyAgICAgICAgICAg
IHsgUGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXlDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFu
ZFBsYXkgfSwKKyAgICAgICAgICAgIHsgUGxhdGZvcm1NZWRpYVNlc3Npb246OlBhdXNlQ29tbWFu
ZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRQYXVzZSB9LAorICAgICAgICAgICAgeyBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6U3RvcENvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kU3RvcCB9LAorICAg
ICAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6VG9nZ2xlUGxheVBhdXNlQ29tbWFuZCwg
TVJNZWRpYVJlbW90ZUNvbW1hbmRUb2dnbGVQbGF5UGF1c2UgfSwKKyAgICAgICAgICAgIHsgUGxh
dGZvcm1NZWRpYVNlc3Npb246OkJlZ2luU2Vla2luZ0JhY2t3YXJkQ29tbWFuZCwgTVJNZWRpYVJl
bW90ZUNvbW1hbmRCZWdpblJld2luZCB9LAorICAgICAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6RW5kU2Vla2luZ0JhY2t3YXJkQ29tbWFuZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRFbmRS
ZXdpbmQgfSwKKyAgICAgICAgICAgIHsgUGxhdGZvcm1NZWRpYVNlc3Npb246OkJlZ2luU2Vla2lu
Z0ZvcndhcmRDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZEJlZ2luRmFzdEZvcndhcmQgfSwK
KyAgICAgICAgICAgIHsgUGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZFNlZWtpbmdGb3J3YXJkQ29t
bWFuZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRFbmRGYXN0Rm9yd2FyZCB9LAorICAgICAgICAgICAg
eyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2Vla1RvUGxheWJhY2tQb3NpdGlvbkNvbW1hbmQsIE1S
TWVkaWFSZW1vdGVDb21tYW5kU2Vla1RvUGxheWJhY2tQb3NpdGlvbiB9LAorICAgICAgICAgICAg
eyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEZvcndhcmRDb21tYW5kLCBNUk1lZGlhUmVtb3Rl
Q29tbWFuZFNraXBGb3J3YXJkIH0sCisgICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpTa2lwQmFja3dhcmRDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZFNraXBCYWNrd2FyZCB9
LAorICAgICAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TmV4dFRyYWNrQ29tbWFuZCwg
TVJNZWRpYVJlbW90ZUNvbW1hbmROZXh0VHJhY2sgfSwKKyAgICAgICAgICAgIHsgUGxhdGZvcm1N
ZWRpYVNlc3Npb246OlByZXZpb3VzVHJhY2tDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZFBy
ZXZpb3VzVHJhY2sgfSwKKyAgICAgICAgfTsKKworICAgICAgICBIYXNoTWFwPFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIE1STWVkaWFSZW1vdGVDb21tYW5k
LCBXVEY6OkludEhhc2g8UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5k
VHlwZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8UGxhdGZvcm1NZWRpYVNlc3Npb246OlJl
bW90ZUNvbnRyb2xDb21tYW5kVHlwZT4+IG1hcDsKKyAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6
IGVudHJpZXMpCisgICAgICAgICAgICBtYXAuYWRkKGVudHJ5LnBsYXRmb3JtQ29tbWFuZCwgZW50
cnkubWVkaWFSZW1vdGVDb21tYW5kKTsKKyAgICAgICAgcmV0dXJuIG1hcDsKKyAgICB9KCkpOwor
CisgICAgYXV0byBpdCA9IGNvbW1hbmRNYXAuZ2V0KCkuZmluZChjb21tYW5kKTsKKyAgICBpZiAo
aXQgIT0gY29tbWFuZE1hcC5nZXQoKS5lbmQoKSkKKyAgICAgICAgcmV0dXJuIHsgaXQtPnZhbHVl
IH07CisKKyAgICByZXR1cm4geyB9OworfQorCiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ29tbWFu
ZExpc3RlbmVyPiBSZW1vdGVDb21tYW5kTGlzdGVuZXI6OmNyZWF0ZShSZW1vdGVDb21tYW5kTGlz
dGVuZXJDbGllbnQmIGNsaWVudCkKIHsKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVDb21t
YW5kTGlzdGVuZXJNYWM+KGNsaWVudCk7CiB9CiAKK2NvbnN0IFJlbW90ZUNvbW1hbmRMaXN0ZW5l
cjo6UmVtb3RlQ29tbWFuZHNTZXQmIFJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYzo6ZGVmYXVsdENv
bW1hbmRzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVtb3RlQ29tbWFuZHNTZXQ+
IGNvbW1hbmRzKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVt
b3RlQ29udHJvbENvbW1hbmRUeXBlPiB7CisgICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQ
bGF5Q29tbWFuZCwKKyAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OlBhdXNlQ29tbWFuZCwK
KyAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OlRvZ2dsZVBsYXlQYXVzZUNvbW1hbmQsCisg
ICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpCZWdpblNlZWtpbmdGb3J3YXJkQ29tbWFuZCwK
KyAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZFNlZWtpbmdGb3J3YXJkQ29tbWFuZCwK
KyAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OkJlZ2luU2Vla2luZ0JhY2t3YXJkQ29tbWFu
ZCwKKyAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZFNlZWtpbmdCYWNrd2FyZENvbW1h
bmQsCisgICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTZWVrVG9QbGF5YmFja1Bvc2l0aW9u
Q29tbWFuZCwKKyAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OlNraXBGb3J3YXJkQ29tbWFu
ZCwKKyAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OlNraXBCYWNrd2FyZENvbW1hbmQsCisg
ICAgfSk7CisKKyAgICByZXR1cm4gY29tbWFuZHM7Cit9CisKK3N0YXRpYyBib29sIGlzU2Vla0Nv
bW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21t
YW5kKQoreworICAgIHJldHVybiBjb21tYW5kID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTZWVr
VG9QbGF5YmFja1Bvc2l0aW9uQ29tbWFuZAorICAgICAgICB8fCBjb21tYW5kID09IFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpTa2lwRm9yd2FyZENvbW1hbmQKKyAgICAgICAgfHwgY29tbWFuZCA9PSBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEJhY2t3YXJkQ29tbWFuZAorICAgICAgICB8fCBjb21t
YW5kID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpCZWdpblNlZWtpbmdGb3J3YXJkQ29tbWFuZAor
ICAgICAgICB8fCBjb21tYW5kID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpCZWdpblNlZWtpbmdC
YWNrd2FyZENvbW1hbmQ7Cit9CisKIHZvaWQgUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjOjp1cGRh
dGVTdXBwb3J0ZWRDb21tYW5kcygpCiB7CiAgICAgaWYgKCFpc01lZGlhUmVtb3RlRnJhbWV3b3Jr
QXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHN0YXRpYyBjb25zdCBNUk1lZGlh
UmVtb3RlQ29tbWFuZCBzdXBwb3J0ZWRDb21tYW5kc1tdID0gewotICAgICAgICBNUk1lZGlhUmVt
b3RlQ29tbWFuZFBsYXksCi0gICAgICAgIE1STWVkaWFSZW1vdGVDb21tYW5kUGF1c2UsCi0gICAg
ICAgIE1STWVkaWFSZW1vdGVDb21tYW5kVG9nZ2xlUGxheVBhdXNlLAotICAgICAgICBNUk1lZGlh
UmVtb3RlQ29tbWFuZEJlZ2luRmFzdEZvcndhcmQsCi0gICAgICAgIE1STWVkaWFSZW1vdGVDb21t
YW5kRW5kRmFzdEZvcndhcmQsCi0gICAgICAgIE1STWVkaWFSZW1vdGVDb21tYW5kQmVnaW5SZXdp
bmQsCi0gICAgICAgIE1STWVkaWFSZW1vdGVDb21tYW5kRW5kUmV3aW5kLAotICAgICAgICBNUk1l
ZGlhUmVtb3RlQ29tbWFuZFNlZWtUb1BsYXliYWNrUG9zaXRpb24sCi0gICAgfTsKKyAgICBhdXRv
JiBzdXBwb3J0ZWRDb21tYW5kcyA9ICFtX3JlZ2lzdGVyZWRDb21tYW5kcy5pc0VtcHR5KCkgPyBt
X3JlZ2lzdGVyZWRDb21tYW5kcyA6IGRlZmF1bHRDb21tYW5kcygpOworICAgIGlmIChtX3N1cHBv
cnRzU2Vla2luZyA9PSBjbGllbnQoKS5zdXBwb3J0c1NlZWtpbmcoKSAmJiBtX2N1cnJlbnRDb21t
YW5kcyA9PSBzdXBwb3J0ZWRDb21tYW5kcykKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBj
b21tYW5kSW5mb0FycmF5ID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBzdXBwb3J0ZWRDb21tYW5kcy5zaXplKCksICZrQ0ZUeXBlQXJyYXlDYWxsQmFj
a3MpKTsKKyAgICBmb3IgKGF1dG8gcGxhdGZvcm1Db21tYW5kIDogc3VwcG9ydGVkQ29tbWFuZHMp
IHsKKyAgICAgICAgaWYgKGlzU2Vla0NvbW1hbmQocGxhdGZvcm1Db21tYW5kKSAmJiAhY2xpZW50
KCkuc3VwcG9ydHNTZWVraW5nKCkpCisgICAgICAgICAgICBjb250aW51ZTsKIAotICAgIGF1dG8g
Y29tbWFuZEluZm9BcnJheSA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgc2l6ZW9mKHN1cHBvcnRlZENvbW1hbmRzKSAvIHNpemVvZihNUk1lZGlhUmVt
b3RlQ29tbWFuZCksICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKKyAgICAgICAgYXV0byBjb21t
YW5kID0gbWVkaWFSZW1vdGVDb21tYW5kRm9yUGxhdGZvcm1Db21tYW5kKHBsYXRmb3JtQ29tbWFu
ZCk7CisgICAgICAgIEFTU0VSVChjb21tYW5kKTsKKyAgICAgICAgaWYgKCFjb21tYW5kKQorICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICBmb3IgKGF1dG8gY29tbWFuZCA6IHN1cHBvcnRlZENv
bW1hbmRzKSB7CiAgICAgICAgIGF1dG8gY29tbWFuZEluZm8gPSBhZG9wdENGKE1STWVkaWFSZW1v
dGVDb21tYW5kSW5mb0NyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0KSk7Ci0gICAgICAgIE1STWVk
aWFSZW1vdGVDb21tYW5kSW5mb1NldENvbW1hbmQoY29tbWFuZEluZm8uZ2V0KCksIGNvbW1hbmQp
OworICAgICAgICBNUk1lZGlhUmVtb3RlQ29tbWFuZEluZm9TZXRDb21tYW5kKGNvbW1hbmRJbmZv
LmdldCgpLCBjb21tYW5kLnZhbHVlKCkpOwogICAgICAgICBNUk1lZGlhUmVtb3RlQ29tbWFuZElu
Zm9TZXRFbmFibGVkKGNvbW1hbmRJbmZvLmdldCgpLCB0cnVlKTsKICAgICAgICAgQ0ZBcnJheUFw
cGVuZFZhbHVlKGNvbW1hbmRJbmZvQXJyYXkuZ2V0KCksIGNvbW1hbmRJbmZvLmdldCgpKTsKICAg
ICB9CiAKLSAgICBhdXRvIHNlZWtDb21tYW5kSW5mbyA9IGFkb3B0Q0YoTVJNZWRpYVJlbW90ZUNv
bW1hbmRJbmZvQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQpKTsKLSAgICBNUk1lZGlhUmVtb3Rl
Q29tbWFuZEluZm9TZXRDb21tYW5kKHNlZWtDb21tYW5kSW5mby5nZXQoKSwgTVJNZWRpYVJlbW90
ZUNvbW1hbmRTZWVrVG9QbGF5YmFja1Bvc2l0aW9uKTsKLSAgICBNUk1lZGlhUmVtb3RlQ29tbWFu
ZEluZm9TZXRFbmFibGVkKHNlZWtDb21tYW5kSW5mby5nZXQoKSwgY2xpZW50KCkuc3VwcG9ydHNT
ZWVraW5nKCkpOwotICAgIENGQXJyYXlBcHBlbmRWYWx1ZShjb21tYW5kSW5mb0FycmF5LmdldCgp
LCBzZWVrQ29tbWFuZEluZm8uZ2V0KCkpOwotCiAgICAgTVJNZWRpYVJlbW90ZVNldFN1cHBvcnRl
ZENvbW1hbmRzKGNvbW1hbmRJbmZvQXJyYXkuZ2V0KCksIE1STWVkaWFSZW1vdGVHZXRMb2NhbE9y
aWdpbigpLCBudWxscHRyLCBudWxscHRyKTsKKyAgICBtX2N1cnJlbnRDb21tYW5kcyA9IHN1cHBv
cnRlZENvbW1hbmRzOworICAgIG1fc3VwcG9ydHNTZWVraW5nID0gY2xpZW50KCkuc3VwcG9ydHNT
ZWVraW5nKCk7CiB9CiAKIFJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYzo6UmVtb3RlQ29tbWFuZExp
c3RlbmVyTWFjKFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCYgY2xpZW50KQpAQCAtNzksNyAr
MTM5LDcgQEAgUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjOjpSZW1vdGVDb21tYW5kTGlzdGVuZXJN
YWMoUmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50JgogICAgIGlmICghaXNNZWRpYVJlbW90ZUZy
YW1ld29ya0F2YWlsYWJsZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICB1cGRhdGVTdXBwb3J0
ZWRDb21tYW5kcygpOworICAgIHNjaGVkdWxlU3VwcG9ydGVkQ29tbWFuZHNVcGRhdGUoKTsKIAog
ICAgIGF1dG8gd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyk7CiAgICAgbV9jb21tYW5kSGFu
ZGxlciA9IE1STWVkaWFSZW1vdGVBZGRBc3luY0NvbW1hbmRIYW5kbGVyQmxvY2soXihNUk1lZGlh
UmVtb3RlQ29tbWFuZCBjb21tYW5kLCBDRkRpY3Rpb25hcnlSZWYgb3B0aW9ucywgdm9pZCheY29t
cGxldGlvbikoQ0ZBcnJheVJlZikpIHsKQEAgLTg4LDYgKzE0OCw3IEBAIFJlbW90ZUNvbW1hbmRM
aXN0ZW5lck1hYzo6UmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjKFJlbW90ZUNvbW1hbmRMaXN0ZW5l
ckNsaWVudCYKIAogICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENv
bW1hbmRUeXBlIHBsYXRmb3JtQ29tbWFuZCB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb0NvbW1h
bmQgfTsKICAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbW1hbmRBcmd1bWVu
dCBhcmd1bWVudCB7IDAgfTsKKyAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNv
bW1hbmRBcmd1bWVudCogYXJndW1lbnRQdHIgPSBudWxscHRyOwogICAgICAgICBNUk1lZGlhUmVt
b3RlQ29tbWFuZEhhbmRsZXJTdGF0dXMgc3RhdHVzID0gTVJNZWRpYVJlbW90ZUNvbW1hbmRIYW5k
bGVyU3RhdHVzU3VjY2VzczsKIAogICAgICAgICBzd2l0Y2ggKGNvbW1hbmQpIHsKQEAgLTEyOCwx
NiArMTg5LDM3IEBAIFJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYzo6UmVtb3RlQ29tbWFuZExpc3Rl
bmVyTWFjKFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCYKICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgQ0ZOdW1iZXJHZXRWYWx1ZShwb3NpdGlvblJlZiwga0NGTnVtYmVyRG91YmxlVHlw
ZSwgJmFyZ3VtZW50LmFzRG91YmxlKTsKKyAgICAgICAgICAgIGFyZ3VtZW50UHRyID0gJmFyZ3Vt
ZW50OwogICAgICAgICAgICAgcGxhdGZvcm1Db21tYW5kID0gUGxhdGZvcm1NZWRpYVNlc3Npb246
OlNlZWtUb1BsYXliYWNrUG9zaXRpb25Db21tYW5kOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBNUk1lZGlhUmVtb3RlQ29tbWFuZFNraXBGb3J3YXJkOgorICAg
ICAgICBjYXNlIE1STWVkaWFSZW1vdGVDb21tYW5kU2tpcEJhY2t3YXJkOgorICAgICAgICAgICAg
aWYgKCFjbGllbnQuc3VwcG9ydHNTZWVraW5nKCkpIHsKKyAgICAgICAgICAgICAgICBzdGF0dXMg
PSBNUk1lZGlhUmVtb3RlQ29tbWFuZEhhbmRsZXJTdGF0dXNDb21tYW5kRmFpbGVkOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoYXV0byBw
b3NpdGlvblJlZiA9IHN0YXRpY19jYXN0PENGTnVtYmVyUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1
ZShvcHRpb25zLCBrTVJNZWRpYVJlbW90ZU9wdGlvblNraXBJbnRlcnZhbCkpKSB7CisgICAgICAg
ICAgICAgICAgQ0ZOdW1iZXJHZXRWYWx1ZShwb3NpdGlvblJlZiwga0NGTnVtYmVyRG91YmxlVHlw
ZSwgJmFyZ3VtZW50LmFzRG91YmxlKTsKKyAgICAgICAgICAgICAgICBhcmd1bWVudFB0ciA9ICZh
cmd1bWVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcGxhdGZvcm1Db21tYW5kID0g
KGNvbW1hbmQgPT0gTVJNZWRpYVJlbW90ZUNvbW1hbmRTa2lwRm9yd2FyZCkgPyBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6U2tpcEZvcndhcmRDb21tYW5kIDogUGxhdGZvcm1NZWRpYVNlc3Npb246OlNr
aXBCYWNrd2FyZENvbW1hbmQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNUk1l
ZGlhUmVtb3RlQ29tbWFuZE5leHRUcmFjazoKKyAgICAgICAgICAgIHBsYXRmb3JtQ29tbWFuZCA9
IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOZXh0VHJhY2tDb21tYW5kOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgTVJNZWRpYVJlbW90ZUNvbW1hbmRQcmV2aW91c1RyYWNrOgorICAg
ICAgICAgICAgcGxhdGZvcm1Db21tYW5kID0gUGxhdGZvcm1NZWRpYVNlc3Npb246OlByZXZpb3Vz
VHJhY2tDb21tYW5kOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgICAgICBMT0coTWVkaWEsICJSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWM6OlJlbW90ZUNvbW1h
bmRMaXN0ZW5lck1hYyAtIGNvbW1hbmQgJXUgbm90IHN1cHBvcnRlZCEiLCBjb21tYW5kKTsKICAg
ICAgICAgICAgIHN0YXR1cyA9IE1STWVkaWFSZW1vdGVDb21tYW5kSGFuZGxlclN0YXR1c0NvbW1h
bmRGYWlsZWQ7CiAgICAgICAgIH07CiAKICAgICAgICAgaWYgKHdlYWtUaGlzICYmIHN0YXR1cyAh
PSBNUk1lZGlhUmVtb3RlQ29tbWFuZEhhbmRsZXJTdGF0dXNDb21tYW5kRmFpbGVkKQotICAgICAg
ICAgICAgd2Vha1RoaXMtPm1fY2xpZW50LmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChw
bGF0Zm9ybUNvbW1hbmQsICZhcmd1bWVudCk7CisgICAgICAgICAgICB3ZWFrVGhpcy0+bV9jbGll
bnQuZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKHBsYXRmb3JtQ29tbWFuZCwgYXJndW1l
bnRQdHIpOwogCiAgICAgICAgIGNvbXBsZXRpb24oKF9fYnJpZGdlIENGQXJyYXlSZWYpQFtAKHN0
YXR1cyldKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLUHJlZmVyZW5jZXMubW0KaW5kZXggNjJkY2IzMDZhODk5Y2E4YmE0Mjg0OTJmOTM3NjEw
ZjY4YTlmZTQ1My4uMGM3OWJmZmVkNWJlZGM3NzlhMmM5ODEyM2YyOGU3MjM2NjA1NGMzYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMu
bW0KQEAgLTE0NzksNiArMTQ3OSwxNiBAQCBzdGF0aWMgV2ViQ29yZTo6RWRpdGFibGVMaW5rQmVo
YXZpb3IgdG9FZGl0YWJsZUxpbmtCZWhhdmlvcihfV0tFZGl0YWJsZUxpbmtCZWhhdgogICAgIF9w
cmVmZXJlbmNlcy0+c2V0UGl0Y2hDb3JyZWN0aW9uQWxnb3JpdGhtKHBpdGNoQ29ycmVjdGlvbkFs
Z29yaXRobSk7CiB9CiAKKy0gKEJPT0wpX21lZGlhU2Vzc2lvbkVuYWJsZWQKK3sKKyAgICByZXR1
cm4gX3ByZWZlcmVuY2VzLT5tZWRpYVNlc3Npb25FbmFibGVkKCk7Cit9CisKKy0gKHZvaWQpX3Nl
dE1lZGlhU2Vzc2lvbkVuYWJsZWQ6KEJPT0wpbWVkaWFTZXNzaW9uRW5hYmxlZAoreworICAgIF9w
cmVmZXJlbmNlcy0+c2V0TWVkaWFTZXNzaW9uRW5hYmxlZChtZWRpYVNlc3Npb25FbmFibGVkKTsK
K30KKwogQGVuZAogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLUHJlZmVyZW5jZXNQcml2YXRlLmgKaW5kZXggZjA2OTFmZDU3NTA0ZjNjYTgxMWU3
NGIwZDBhMzllM2Q3OGE4ZDQxMS4uNzY2Njk2MDA4ZmUyYmI0YWQzZmY2MjEzZDI1YjM3YmZmZWRj
MmJkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJl
ZmVyZW5jZXNQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLUHJlZmVyZW5jZXNQcml2YXRlLmgKQEAgLTE3MCw2ICsxNzAsNyBAQCB0eXBlZGVmIE5TX0VO
VU0oTlNJbnRlZ2VyLCBfV0tQaXRjaENvcnJlY3Rpb25BbGdvcml0aG0pIHsKIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCBzZXR0ZXI9X3NldFNwZWVjaFJlY29nbml0aW9uRW5hYmxlZDopIEJPT0wgX3Nw
ZWVjaFJlY29nbml0aW9uRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRFbmFibGVkOikgQk9PTCBfcHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRFbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRQaXRjaENvcnJlY3Rpb25B
bGdvcml0aG06KSBfV0tQaXRjaENvcnJlY3Rpb25BbGdvcml0aG0gX3BpdGNoQ29ycmVjdGlvbkFs
Z29yaXRobSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOworQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0TWVkaWFTZXNzaW9uRW5hYmxl
ZDopIEJPT0wgX21lZGlhU2Vzc2lvbkVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogI2lmICFUQVJHRVRfT1NfSVBIT05FCiBAcHJv
cGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRXZWJHTEVuYWJsZWQ6KSBCT09MIF93ZWJHTEVu
YWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7CmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDVhZTMxZmJlY2ExYzdiOTM3OWU0
ZmNlYzM3NmVjNGI4MTk1NWFkNC4uMmZiMDQxMTJjZGMzYTg4OGQwYmJjMjBiMTg1ZWM2NDExMGUy
YTgxNCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDMzIEBACisyMDIxLTAyLTA0ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25A
YXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIENvbm5lY3QgTWVkaWFTZXNzaW9uIHdpdGggTWVk
aWFSZW1vdGUgYW5kIE5vd1BsYXlpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyMTQzMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzQwMDAzNjM+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL01lZGlhU2Vzc2lvbi5tbTogQWRk
ZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25UZXN0Ojp3ZWJWaWV3KToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvblRlc3Q6OndlYlZpZXdQaWQpOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uVGVzdDo6Z2V0Tm93UGxheWluZ0Ns
aWVudCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25UZXN0OjpnZXROb3dQ
bGF5aW5nQ2xpZW50UGlkKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvblRl
c3Q6OmxvYWRQYWdlQW5kQmVjb21lTm93UGxheWluZyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpNZWRpYVNlc3Npb25UZXN0OjpydW5TY3JpcHRXaXRoVXNlckdlc3R1cmUpOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uVGVzdDo6cGxheSk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpNZWRpYVNlc3Npb25UZXN0OjpwYXVzZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpNZWRpYVNlc3Npb25UZXN0OjpzZW5kTWVkaWFSZW1vdGVDb21tYW5kKToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvblRlc3Q6OnNlbmRNZWRpYVJlbW90ZVNlZWtDb21tYW5k
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvblRlc3Q6Omxpc3RlbkZvckV2
ZW50TWVzc2FnZXMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uVGVzdDo6
ZXZlbnRMaXN0ZW5lcldhc0NhbGxlZCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNl
c3Npb25UZXN0Ojp3YWl0Rm9yRXZlbnRMaXN0ZW5lclRvQmVDYWxsZWQpOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uVGVzdDo6bGlzdGVuRm9yU2Vzc2lvbkhhbmRsZXJNZXNz
YWdlcyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25UZXN0OjpzZXNzaW9u
SGFuZGxlcldhc0NhbGxlZCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25U
ZXN0Ojp3YWl0Rm9yU2Vzc2lvbkhhbmRsZXJUb0JlQ2FsbGVkKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6Ok1lZGlhU2Vzc2lvblRlc3Q6OmdldFN1cHBvcnRlZENvbW1hbmRzKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9tZWRpYS1yZW1vdGUuaHRtbDogQWRkZWQuCisKIDIwMjEtMDItMDQgIEpvbmF0
aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFtQeXRob24tM10gQ2hh
bmdlIHNoZWJhbmcgaW4gdGVzdC13ZWJraXRweSAoUGFydC0xKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCA1YzU5N2E3MWQyZWIzODc4NjA3ZGUyYWZmM2JkMmM4MTczNjgzMzZiLi4wYjQ4ZTdl
YWU1YTJiZjg2YmQ2MWJkMGQ5MmIxYWVkZWM3MjMxOThkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtNTYsNiArNTYsOCBAQAogCQkwNzQ5OTQ1MjFFQTUwMzRCMDAwREE0NEUgLyogZ2V0VXNl
ck1lZGlhMi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxQkFGNEUyMjVBQzlEQjgwMEQ4MkYzMiAvKiBnZXRVc2VyTWVkaWEyLmh0bWwg
Ki87IH07CiAJCTA3NkU1MDdGMUY0NTEzRDYwMDZFOUY1QSAvKiBMb2dnaW5nLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NkU1MDdFMUY0NTAzMUUw
MDZFOUY1QSAvKiBMb2dnaW5nLmNwcCAqLzsgfTsKIAkJMDc3QTVBRjMyMzA2MzhBNjAwQTcxMDVD
IC8qIEFjY2Vzc2liaWxpdHlUZXN0UGx1Z2luLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDc0NjY0NTgyMkZGNjMwNTAwRTM0NTFBIC8qIEFjY2Vzc2li
aWxpdHlUZXN0UGx1Z2luLm1tICovOyB9OworCQkwNzk0NzQwRDI1Q0EwQkRFMDBDNTk3RUIgLyog
TWVkaWFTZXNzaW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDc5NDc0MEMyNUNBMEJERTAwQzU5N0VCIC8qIE1lZGlhU2Vzc2lvbi5tbSAqLzsgfTsK
KwkJMDc5NDc0MkQyNUNCMzNGRDAwQzU5N0VCIC8qIG1lZGlhLXJlbW90ZS5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3OTQ3NDJDMjVD
QjMzQjAwMEM1OTdFQiAvKiBtZWRpYS1yZW1vdGUuaHRtbCAqLzsgfTsKIAkJMDc5OUMzNDkxRUJB
MkQ3QjAwM0I3NTMyIC8qIFVzZXJNZWRpYURpc2FibGVkLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdFREVGQUMxRUI5NDAwQzAwRDQzMjkyIC8qIFVz
ZXJNZWRpYURpc2FibGVkLm1tICovOyB9OwogCQkwNzk5QzM0QjFFQkEzMzAxMDAzQjc1MzIgLyog
ZGlzYWJsZUdldFVzZXJNZWRpYS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3OTlDMzRBMUVCQTMyRjQwMDNCNzUzMiAvKiBkaXNhYmxl
R2V0VXNlck1lZGlhLmh0bWwgKi87IH07CiAJCTA3QzA0NkNBMUU0MjYyQTgwMDcyMDFFNyAvKiBD
QVJpbmdCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDdDMDQ2QzkxRTQyNTczRTAwNzIwMUU3IC8qIENBUmluZ0J1ZmZlci5jcHAgKi87IH07
CkBAIC0xNTU5LDYgKzE1NjEsNyBAQAogCQkJCUFENTdBQzIyMURBNzQ2NkUwMEZGMUJERSAvKiBt
YW55LWlmcmFtZXMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk3NzcyRUNFMTIyRkUw
NkM2MDAwOUE3OTkgLyogbWFueS1zYW1lLW9yaWdpbi1pZnJhbWVzLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8sCiAJCQkJQ0Q4Mzk0REYyMzJBRjdDMDAwMTQ5NDk1IC8qIG1lZGlhLWxvYWRpbmcu
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJCQkwNzk0NzQyRDI1Q0IzM0ZEMDBDNTk3RUIg
LyogbWVkaWEtcmVtb3RlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJQ0RBMzE1OUEx
RUQ1NDhGMTAwOUY2MEQzIC8qIE1lZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvbi5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovLAogCQkJCUNEQzk0NDJGMUVGMjA1RDYwMDU5QzNDNCAvKiBtZWRpYXN0
cmVhbXRyYWNrLWRldGFjaGVkLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJRTEyMjBE
Q0ExNTVCMjhBQTAwMTNFMkZDIC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9h
ZERlbGVnYXRlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC0xNzIyLDYgKzE3MjUsOCBA
QAogCQkwNzQ5MkIzQTFERjhBRTJEMDA2MzNERTEgLyogRW51bWVyYXRlTWVkaWFEZXZpY2VzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVudW1lcmF0ZU1lZGlhRGV2
aWNlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NjZERDFGMUE1QUQ1MjAw
MDIzRTNCQiAvKiBQZW5kaW5nQVBJUmVxdWVzdFVSTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBQZW5kaW5nQVBJUmVxdWVzdFVSTC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA3NkU1MDdFMUY0NTAzMUUwMDZFOUY1QSAvKiBMb2dnaW5nLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvZ2dpbmcuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwNzk0NzQwQzI1Q0EwQkRFMDBDNTk3RUIgLyogTWVkaWFT
ZXNzaW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVkaWFT
ZXNzaW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzk0NzQyQzI1Q0IzM0Iw
MDBDNTk3RUIgLyogbWVkaWEtcmVtb3RlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGgg
PSAibWVkaWEtcmVtb3RlLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzk5
QzM0QTFFQkEzMkY0MDAzQjc1MzIgLyogZGlzYWJsZUdldFVzZXJNZWRpYS5odG1sICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5odG1sOyBwYXRoID0gZGlzYWJsZUdldFVzZXJNZWRpYS5odG1sOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwN0MwNDZDOTFFNDI1NzNFMDA3MjAxRTcgLyogQ0FSaW5nQnVm
ZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENBUmluZ0J1ZmZl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3Q0M3REZEMjI2NjMzMDgwMEUz
OTE4MSAvKiBNZWRpYUJ1ZmZlcmluZ1BvbGljeS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IE1lZGlhQnVmZmVyaW5nUG9saWN5Lm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMzM1OSw2ICszMzY0LDcgQEAKIAkJCQk5NUI2QjNCNjI1MUVCRjJGMDBG
QzQzODIgLyogTWVkaWFEb2N1bWVudC5tbSAqLywKIAkJCQlDRDAzNzBFMjI0QTQ0QjdBMDBCQTND
QUUgLyogTWVkaWFMb2FkaW5nLm1tICovLAogCQkJCTA3RUY3NkQ0MjU0MEZDMDYwMDUzRUQ1MyAv
KiBNZWRpYU11dGVkU3RhdGUubW0gKi8sCisJCQkJMDc5NDc0MEMyNUNBMEJERTAwQzU5N0VCIC8q
IE1lZGlhU2Vzc2lvbi5tbSAqLywKIAkJCQk1MUJFOUU2NTIzNzYwODk1MDBCNEUxMTcgLyogTWVk
aWFUeXBlLm1tICovLAogCQkJCTUxNjVGRTAzMjAxRUU2MTcwMDlGN0VDMyAvKiBNZXNzYWdlUG9y
dFByb3ZpZGVycy5tbSAqLywKIAkJCQk1MUNEMUM2QTFCMzhDRTM2MDAxNDJDQTUgLyogTW9kYWxB
bGVydHMubW0gKi8sCkBAIC0zOTIyLDYgKzM5MjgsNyBAQAogCQkJCTQ2QzUxOUUzMUQzNTYyOTYw
MERBQTUxQSAvKiBMb2NhbFN0b3JhZ2VOdWxsRW50cmllcy5sb2NhbHN0b3JhZ2UgKi8sCiAJCQkJ
NDZDNTE5RTQxRDM1NjI5NjAwREFBNTFBIC8qIExvY2FsU3RvcmFnZU51bGxFbnRyaWVzLmxvY2Fs
c3RvcmFnZS1zaG0gKi8sCiAJCQkJN0E2QTJDNzExRENDRkIwMjAwQzBEMDg1IC8qIExvY2FsU3Rv
cmFnZVF1aXJrRW5hYmxlZC5odG1sICovLAorCQkJCTA3OTQ3NDJDMjVDQjMzQjAwMEM1OTdFQiAv
KiBtZWRpYS1yZW1vdGUuaHRtbCAqLywKIAkJCQk5QjU5RjEyOTIwMzQwODU0MDA5RTYzRDUgLyog
bXNvLWxpc3QtY29tcGF0LW1vZGUuaHRtbCAqLywKIAkJCQk5QkNENDExOTIwNkQ1RUQ3MDAxRDcx
QkUgLyogbXNvLWxpc3Qtb24taDQuaHRtbCAqLywKIAkJCQk5QkYzNTZDQzIwMkQ0NEYyMDBGNzEx
NjAgLyogbXNvLWxpc3QuaHRtbCAqLywKQEAgLTUzODMsNiArNTM5MCw3IEBACiAJCQkJQ0QwMzcw
RTMyNEE0NEQ5NjAwQkEzQ0FFIC8qIE1lZGlhTG9hZGluZy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTA3RUY3NkQ1MjU0MEZDMDYwMDUzRUQ1MyAvKiBNZWRpYU11dGVkU3RhdGUubW0gaW4gU291cmNl
cyAqLywKIAkJCQlDREEzMTU5ODFFRDUzNjUxMDA5RjYwRDMgLyogTWVkaWFQbGF5YmFja1NsZWVw
QXNzZXJ0aW9uLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMDc5NDc0MEQyNUNBMEJERTAwQzU5N0VC
IC8qIE1lZGlhU2Vzc2lvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQzk0NDJFMUVGMUZDMDgw
MDU5QzNDNCAvKiBNZWRpYVN0cmVhbVRyYWNrRGV0YWNoZWQubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk1MUJFOUU2NjIzNzYwODlGMDBCNEUxMTcgLyogTWVkaWFUeXBlLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0NDRTdFQzUxQTQxMUE3RTAwNDQ3QzRDIC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhp
blJlc291cmNlTG9hZERlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCkBAIC01NDIxLDYgKzU0Mjks
NyBAQAogCQkJCUMxMDRCQzFGMjU0NzIzNzEwMEMwNzhDOSAvKiBPdmVycmlkZUFwcGxlTGFuZ3Vh
Z2VzUHJlZmVyZW5jZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNFQkNBMTJGMUUzQTY2MDEwMEM3
MzI5MyAvKiBPdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeS5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTJEQTI1ODZGMjI1QzY3REMwMEI0NUMxQyAvKiBPdmVycmlkZVZpZXdwb3J0QXJndW1lbnRz
Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJOTUzQUJCMzUyNUMwRDY4MjAwNEM4QjczIC8qIFBhZ2VF
eHRlbmRlZEJhY2tncm91bmRDb2xvci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0I0REE5MUM4
M0FFNzMwMENDNjkxOCAvKiBQYWdlR3JvdXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdG
MDcxQTQxMUFFNjAwNDQ3QzRDIC8qIFBhZ2VMb2FkQmFzaWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0NDRTdGMDgxQTQxMUFFNjAwNDQ3QzRDIC8qIFBhZ2VMb2FkRGlkQ2hhbmdlTG9jYXRpb25X
aXRoaW5QYWdlRm9yRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC01NDY0LDcgKzU0NzMsNiBA
QAogCQkJCTUxOEMxMTUzMjA1QjA1MDQwMDFGRjRBRSAvKiBQcm9jZXNzU3dhcE9uTmF2aWdhdGlv
bi5tbSBpbiBTb3VyY2VzICovLAogCQkJCUZFQzJBODU2MjRDRUI2NUYwMEFEQkMzNSAvKiBQcm9w
ZXJ0eVNsb3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwQzExRDBBNjUyRjAwRkVCQ0Yz
IC8qIFByb3Zpc2lvbmFsVVJMTm90Q2hhbmdlLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJOTUzQUJC
MzUyNUMwRDY4MjAwNEM4QjczIC8qIFBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvci5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTVDRkFDRjY1MjI2RkQyREMwMDU2QzdEMCAvKiBQcm94eS5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTA0MUExRTM0MjE2RkZEQkMwMDc4OUUwQSAvKiBQdWJsaWNTdWZmaXgu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwQzIxRDBBNjUzNTAwRkVCQ0YzIC8qIFF1aWNr
TG9vay5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9NZWRpYVNlc3Npb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL01lZGlhU2Vzc2lvbi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MmRkZDBkOTE1NmIx
NDI5M2EwOTEyZTlhOWFjMmQxODhlYjgzNzZmCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9NZWRpYVNlc3Npb24ubW0KQEAgLTAsMCArMSwz
NzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2lmIFBMQVRGT1JNKE1B
QykgJiYgRU5BQkxFKE1FRElBX1NFU1NJT04pCisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVz
LmgiCisjaW1wb3J0ICJUZXN0LmgiCisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0
IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZp
ZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZh
dGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XZWJWaWV3UHJpdmF0ZS5oPgorI2ltcG9ydCA8cGFsL3Nw
aS9tYWMvTWVkaWFSZW1vdGVTUEkuaD4KKyNpbXBvcnQgPHd0Zi9GdW5jdGlvbi5oPgorI2ltcG9y
dCA8d3RmL0hhc2hTZXQuaD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9y
dCA8d3RmL1NvZnRMaW5raW5nLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Cisj
aW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVX
T1JLKE1lZGlhUmVtb3RlKQorCitTT0ZUX0xJTksoTWVkaWFSZW1vdGUsIE1STWVkaWFSZW1vdGVT
ZW5kQ29tbWFuZFRvQXBwLCBCb29sZWFuLCAoTVJNZWRpYVJlbW90ZUNvbW1hbmQgY29tbWFuZCwg
Q0ZEaWN0aW9uYXJ5UmVmIG9wdGlvbnMsIE1ST3JpZ2luUmVmIG9yaWdpbiwgQ0ZTdHJpbmdSZWYg
YXBwRGlzcGxheUlELCBNUlNlbmRDb21tYW5kQXBwT3B0aW9ucyBhcHBPcHRpb25zLCBkaXNwYXRj
aF9xdWV1ZV90IHJlcGx5USwgdm9pZCheY29tcGxldGlvbikoTVJTZW5kQ29tbWFuZEVycm9yIGVy
ciwgQ0ZBcnJheVJlZiBoYW5kbGVyUmV0dXJuU3RhdHVzZXMpKSwgKGNvbW1hbmQsIG9wdGlvbnMs
IG9yaWdpbiwgYXBwRGlzcGxheUlELCBhcHBPcHRpb25zLCByZXBseVEsIGNvbXBsZXRpb24pKTsK
KyNkZWZpbmUgTVJNZWRpYVJlbW90ZVNlbmRDb21tYW5kVG9BcHAgc29mdExpbmtNUk1lZGlhUmVt
b3RlU2VuZENvbW1hbmRUb0FwcAorCitTT0ZUX0xJTksoTWVkaWFSZW1vdGUsIE1STWVkaWFSZW1v
dGVHZXRMb2NhbE9yaWdpbiwgTVJPcmlnaW5SZWYsICgpLCAoKSk7CisjZGVmaW5lIE1STWVkaWFS
ZW1vdGVHZXRMb2NhbE9yaWdpbiBzb2Z0TGlua01STWVkaWFSZW1vdGVHZXRMb2NhbE9yaWdpbgor
CitTT0ZUX0xJTksoTWVkaWFSZW1vdGUsIE1STWVkaWFSZW1vdGVHZXRTdXBwb3J0ZWRDb21tYW5k
c0Zvck9yaWdpbiwgdm9pZCwgKE1ST3JpZ2luUmVmIG9yaWdpbiwgZGlzcGF0Y2hfcXVldWVfdCBx
dWV1ZSwgdm9pZCheY29tcGxldGlvbikoQ0ZBcnJheVJlZiBjb21tYW5kcykpLCAob3JpZ2luLCBx
dWV1ZSwgY29tcGxldGlvbikpOworI2RlZmluZSBNUk1lZGlhUmVtb3RlR2V0U3VwcG9ydGVkQ29t
bWFuZHNGb3JPcmlnaW4gc29mdExpbmtNUk1lZGlhUmVtb3RlR2V0U3VwcG9ydGVkQ29tbWFuZHNG
b3JPcmlnaW4KKworU09GVF9MSU5LKE1lZGlhUmVtb3RlLCBNUk1lZGlhUmVtb3RlR2V0Tm93UGxh
eWluZ0NsaWVudCwgdm9pZCwgKGRpc3BhdGNoX3F1ZXVlX3QgcXVldWUsIHZvaWQoXmNvbXBsZXRp
b24pKE1STm93UGxheWluZ0NsaWVudFJlZiwgQ0ZFcnJvclJlZikpLCAocXVldWUsIGNvbXBsZXRp
b24pKQorI2RlZmluZSBNUk1lZGlhUmVtb3RlR2V0Tm93UGxheWluZ0NsaWVudCBzb2Z0TGlua01S
TWVkaWFSZW1vdGVHZXROb3dQbGF5aW5nQ2xpZW50CisKK1NPRlRfTElOSyhNZWRpYVJlbW90ZSwg
TVJOb3dQbGF5aW5nQ2xpZW50R2V0UHJvY2Vzc0lkZW50aWZpZXIsIHBpZF90LCAoTVJOb3dQbGF5
aW5nQ2xpZW50UmVmIGNsaWVudCksIChjbGllbnQpKQorI2RlZmluZSBNUk5vd1BsYXlpbmdDbGll
bnRHZXRQcm9jZXNzSWRlbnRpZmllciBzb2Z0TGlua01STm93UGxheWluZ0NsaWVudEdldFByb2Nl
c3NJZGVudGlmaWVyCisKK1NPRlRfTElOS19DT05TVEFOVChNZWRpYVJlbW90ZSwga01STWVkaWFS
ZW1vdGVPcHRpb25Ta2lwSW50ZXJ2YWwsIENGU3RyaW5nUmVmKQorI2RlZmluZSBrTVJNZWRpYVJl
bW90ZU9wdGlvblNraXBJbnRlcnZhbCBnZXRrTVJNZWRpYVJlbW90ZU9wdGlvblNraXBJbnRlcnZh
bCgpCisKK1NPRlRfTElOS19DT05TVEFOVChNZWRpYVJlbW90ZSwga01STWVkaWFSZW1vdGVPcHRp
b25QbGF5YmFja1Bvc2l0aW9uLCBDRlN0cmluZ1JlZikKKyNkZWZpbmUga01STWVkaWFSZW1vdGVP
cHRpb25QbGF5YmFja1Bvc2l0aW9uIGdldGtNUk1lZGlhUmVtb3RlT3B0aW9uUGxheWJhY2tQb3Np
dGlvbigpCisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworY2xhc3MgTWVkaWFTZXNzaW9u
VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK3B1YmxpYzoKKyAgICB2b2lkIFNldFVwKCkg
ZmluYWwKKyAgICB7CisgICAgICAgIF9jb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICAgICAgW19jb25maWd1cmF0aW9uIHNl
dE1lZGlhVHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2s6V0tBdWRpb3Zpc3VhbE1l
ZGlhVHlwZUF1ZGlvXTsKKworICAgICAgICBfd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMzAwLCAzMDApIGNvbmZp
Z3VyYXRpb246X2NvbmZpZ3VyYXRpb24uZ2V0KCkgYWRkVG9XaW5kb3c6WUVTXSk7CisKKyAgICAg
ICAgV0tQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMgPSBbX3dlYlZpZXcgY29uZmlndXJhdGlvbl0u
cHJlZmVyZW5jZXM7CisgICAgICAgIHByZWZlcmVuY2VzLl9tZWRpYVNlc3Npb25FbmFibGVkID0g
WUVTOworCisgICAgICAgIF9tZXNzYWdlSGFuZGxlcnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJy
YXkgYWxsb2NdIGluaXRdKTsKKyAgICB9CisKKyAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUK
KyAgICB7CisgICAgICAgIFtfd2ViVmlldyBjbGVhck1lc3NhZ2VIYW5kbGVyczpfbWVzc2FnZUhh
bmRsZXJzLmdldCgpXTsKKyAgICB9CisKKyAgICBUZXN0V0tXZWJWaWV3KiB3ZWJWaWV3KCkgeyBy
ZXR1cm4gX3dlYlZpZXcuZ2V0KCk7IH0KKworICAgIHBpZF90IHdlYlZpZXdQaWQoKSB7IHJldHVy
biBbX3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXTsgfQorCisgICAgUmV0YWluUHRyPE1S
Tm93UGxheWluZ0NsaWVudFJlZj4gZ2V0Tm93UGxheWluZ0NsaWVudCgpCisgICAgeworICAgICAg
ICBib29sIGdvdE5vd1BsYXlpbmcgPSBmYWxzZTsKKyAgICAgICAgUmV0YWluUHRyPE1STm93UGxh
eWluZ0NsaWVudFJlZj4gbm93UGxheWluZ0NsaWVudDsKKyAgICAgICAgTVJNZWRpYVJlbW90ZUdl
dE5vd1BsYXlpbmdDbGllbnQoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgWyZdIChNUk5vd1Bs
YXlpbmdDbGllbnRSZWYgcGxheWVyLCBDRkVycm9yUmVmIGVycm9yKSB7CisgICAgICAgICAgICBp
ZiAoIWVycm9yICYmIHBsYXllcikKKyAgICAgICAgICAgICAgICBub3dQbGF5aW5nQ2xpZW50ID0g
cGxheWVyOworICAgICAgICAgICAgZ290Tm93UGxheWluZyA9IHRydWU7CisgICAgICAgIH0pOwor
ICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdvdE5vd1BsYXlpbmcpOworICAgICAg
ICByZXR1cm4gbm93UGxheWluZ0NsaWVudDsKKyAgICB9CisKKyAgICBwaWRfdCBnZXROb3dQbGF5
aW5nQ2xpZW50UGlkKCkKKyAgICB7CisgICAgICAgIHJldHVybiBNUk5vd1BsYXlpbmdDbGllbnRH
ZXRQcm9jZXNzSWRlbnRpZmllcihnZXROb3dQbGF5aW5nQ2xpZW50KCkuZ2V0KCkpOworICAgIH0K
KworICAgIHZvaWQgbG9hZFBhZ2VBbmRCZWNvbWVOb3dQbGF5aW5nKGNvbnN0IFN0cmluZyYgcGFn
ZU5hbWUpCisgICAgeworICAgICAgICBbX3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFn
ZU5hbWVkOnBhZ2VOYW1lXTsKKworICAgICAgICBib29sIGNhbnBsYXl0aHJvdWdoID0gZmFsc2U7
CisgICAgICAgIFt3ZWJWaWV3KCkgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAImNhbnBs
YXl0aHJvdWdoIGV2ZW50IiBhY3Rpb246WyZdIHsKKyAgICAgICAgICAgIGNhbnBsYXl0aHJvdWdo
ID0gdHJ1ZTsKKyAgICAgICAgfV07CisgICAgICAgIHJ1blNjcmlwdFdpdGhVc2VyR2VzdHVyZSgi
bG9hZCgpIik7CisgICAgICAgIFV0aWw6OnJ1bigmY2FucGxheXRocm91Z2gpOworCisgICAgICAg
IHBsYXkoKTsKKyAgICAgICAgcGF1c2UoKTsKKyAgICAgICAgQVNTRVJUX0VRKHdlYlZpZXdQaWQo
KSwgZ2V0Tm93UGxheWluZ0NsaWVudFBpZCgpKTsKKyAgICB9CisKKyAgICB2b2lkIHJ1blNjcmlw
dFdpdGhVc2VyR2VzdHVyZShjb25zdCBTdHJpbmcmIHNjcmlwdCkKKyAgICB7CisgICAgICAgIGJv
b2wgY29tcGxldGUgPSBmYWxzZTsKKyAgICAgICAgW193ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlw
dDpzY3JpcHQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCwgTlNFcnJvciAqKSB7IGNvbXBsZXRl
ID0gdHJ1ZTsgfV07CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmY29tcGxldGUp
OworICAgIH0KKworICAgIHZvaWQgcGxheSgpCisgICAgeworICAgICAgICBib29sIHBsYXlpbmcg
PSBmYWxzZTsKKyAgICAgICAgW193ZWJWaWV3IHBlcmZvcm1BZnRlclJlY2VpdmluZ01lc3NhZ2U6
QCJwbGF5IGV2ZW50IiBhY3Rpb246WyZdIHsgcGxheWluZyA9IHRydWU7IH1dOworICAgICAgICBy
dW5TY3JpcHRXaXRoVXNlckdlc3R1cmUoImF1ZGlvLnBsYXkoKSIpOworICAgICAgICBVdGlsOjpy
dW4oJnBsYXlpbmcpOworICAgIH0KKworICAgIHZvaWQgcGF1c2UoKQorICAgIHsKKyAgICAgICAg
Ym9vbCBwYXVzZWQgPSBmYWxzZTsKKyAgICAgICAgW193ZWJWaWV3IHBlcmZvcm1BZnRlclJlY2Vp
dmluZ01lc3NhZ2U6QCJwYXVzZSBldmVudCIgYWN0aW9uOlsmXSB7IHBhdXNlZCA9IHRydWU7IH1d
OworICAgICAgICBydW5TY3JpcHRXaXRoVXNlckdlc3R1cmUoImF1ZGlvLnBhdXNlKCkiKTsKKyAg
ICAgICAgVXRpbDo6cnVuKCZwYXVzZWQpOworICAgIH0KKworICAgIGJvb2wgc2VuZE1lZGlhUmVt
b3RlQ29tbWFuZChNUk1lZGlhUmVtb3RlQ29tbWFuZCBjb21tYW5kLCBDRkRpY3Rpb25hcnlSZWYg
b3B0aW9ucyA9IG51bGxwdHIpCisgICAgeworICAgICAgICBib29sIGNvbXBsZXRlZCA9IGZhbHNl
OworICAgICAgICBib29sIHN1Y2Nlc3M7CisKKyAgICAgICAgTVJNZWRpYVJlbW90ZVNlbmRDb21t
YW5kVG9BcHAoY29tbWFuZCwgb3B0aW9ucywgTlVMTCwgTlVMTCwgc3RhdGljX2Nhc3Q8TVJTZW5k
Q29tbWFuZEFwcE9wdGlvbnM+KDApLCBOVUxMLCBbJl0gKE1SU2VuZENvbW1hbmRFcnJvciBlcnJv
ciwgQ0ZBcnJheVJlZikgeworICAgICAgICAgICAgc3VjY2VzcyA9ICFlcnJvcjsKKyAgICAgICAg
ICAgIGNvbXBsZXRlZCA9IHRydWU7CisgICAgICAgIH0pOworICAgICAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmNvbXBsZXRlZCk7CisKKyAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7CisgICAg
fQorCisgICAgYm9vbCBzZW5kTWVkaWFSZW1vdGVTZWVrQ29tbWFuZChNUk1lZGlhUmVtb3RlQ29t
bWFuZCBjb21tYW5kLCBkb3VibGUgaW50ZXJ2YWwpCisgICAgeworICAgICAgICBDRlN0cmluZ1Jl
ZiBzZWVrSW50ZXJ2YWwgPSAoY29tbWFuZCA9PSBNUk1lZGlhUmVtb3RlQ29tbWFuZFNlZWtUb1Bs
YXliYWNrUG9zaXRpb24pID8ga01STWVkaWFSZW1vdGVPcHRpb25QbGF5YmFja1Bvc2l0aW9uIDog
a01STWVkaWFSZW1vdGVPcHRpb25Ta2lwSW50ZXJ2YWw7CisgICAgICAgIE5TRGljdGlvbmFyeSAq
b3B0aW9ucyA9IEB7KF9fYnJpZGdlIE5TU3RyaW5nICopc2Vla0ludGVydmFsIDogQChpbnRlcnZh
bCl9OworICAgICAgICByZXR1cm4gc2VuZE1lZGlhUmVtb3RlQ29tbWFuZChjb21tYW5kLCAoX19i
cmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKW9wdGlvbnMpOworICAgIH0KKworICAgIHZvaWQgbGlzdGVu
Rm9yRXZlbnRNZXNzYWdlcyhzdGQ6OmluaXRpYWxpemVyX2xpc3Q8Y29uc3QgY2hhcio+IGV2ZW50
cykKKyAgICB7CisgICAgICAgIGZvciAoYXV0byogZXZlbnQgOiBldmVudHMpIHsKKyAgICAgICAg
ICAgIGF1dG8gZXZlbnRNZXNzYWdlID0gbWFrZVN0cmluZyhldmVudCwgIiBldmVudCIpOworICAg
ICAgICAgICAgW19tZXNzYWdlSGFuZGxlcnMgYWRkT2JqZWN0OmV2ZW50TWVzc2FnZV07CisgICAg
ICAgICAgICBbd2ViVmlldygpIHBlcmZvcm1BZnRlclJlY2VpdmluZ01lc3NhZ2U6ZXZlbnRNZXNz
YWdlIGFjdGlvbjpbdGhpcywgZXZlbnRNZXNzYWdlID0gV1RGTW92ZShldmVudE1lc3NhZ2UpXSB7
CisgICAgICAgICAgICAgICAgX2V2ZW50TGlzdGVuZXJzQ2FsbGVkLmFkZChldmVudE1lc3NhZ2Up
OworICAgICAgICAgICAgfV07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBib29sIGV2ZW50TGlz
dGVuZXJXYXNDYWxsZWQoY29uc3QgU3RyaW5nJiBldmVudCkKKyAgICB7CisgICAgICAgIHJldHVy
biBfZXZlbnRMaXN0ZW5lcnNDYWxsZWQuY29udGFpbnMobWFrZVN0cmluZyhldmVudCwgIiBldmVu
dCIpKTsKKyAgICB9CisKKyAgICB2b2lkIHdhaXRGb3JFdmVudExpc3RlbmVyVG9CZUNhbGxlZChj
b25zdCBTdHJpbmcmIGV2ZW50KQorICAgIHsKKyAgICAgICAgaW50IHRyaWVzID0gMDsKKyAgICAg
ICAgZG8geworICAgICAgICAgICAgaWYgKGV2ZW50TGlzdGVuZXJXYXNDYWxsZWQoZXZlbnQpKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIFV0aWw6OnNsZWVwKDAuMSk7Cisg
ICAgICAgIH0gd2hpbGUgKCsrdHJpZXMgPD0gNTApOworCisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICB2b2lkIGxpc3RlbkZvclNlc3Npb25IYW5kbGVyTWVzc2FnZXMoc3RkOjppbml0aWFs
aXplcl9saXN0PGNvbnN0IGNoYXIqPiBoYW5kbGVycykKKyAgICB7CisgICAgICAgIGZvciAoYXV0
byogaGFuZGxlciA6IGhhbmRsZXJzKSB7CisgICAgICAgICAgICBhdXRvIGhhbmRsZXJNZXNzYWdl
ID0gbWFrZVN0cmluZyhoYW5kbGVyLCAiIGhhbmRsZXIiKTsKKyAgICAgICAgICAgIFtfbWVzc2Fn
ZUhhbmRsZXJzIGFkZE9iamVjdDpoYW5kbGVyTWVzc2FnZV07CisgICAgICAgICAgICBbd2ViVmll
dygpIHBlcmZvcm1BZnRlclJlY2VpdmluZ01lc3NhZ2U6aGFuZGxlck1lc3NhZ2UgYWN0aW9uOlt0
aGlzLCBoYW5kbGVyTWVzc2FnZSA9IFdURk1vdmUoaGFuZGxlck1lc3NhZ2UpXSB7CisgICAgICAg
ICAgICAgICAgX21lZGlhU2Vzc2lvbkhhbmRsZXJzQ2FsbGVkLmFkZChoYW5kbGVyTWVzc2FnZSk7
CisgICAgICAgICAgICB9XTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGJvb2wgc2Vzc2lvbkhh
bmRsZXJXYXNDYWxsZWQoY29uc3QgU3RyaW5nJiBoYW5kbGVyKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIF9tZWRpYVNlc3Npb25IYW5kbGVyc0NhbGxlZC5jb250YWlucyhtYWtlU3RyaW5nKGhhbmRs
ZXIsICIgaGFuZGxlciIpKTsKKyAgICB9CisKKyAgICB2b2lkIHdhaXRGb3JTZXNzaW9uSGFuZGxl
clRvQmVDYWxsZWQoY29uc3QgU3RyaW5nJiBoYW5kbGVyKQorICAgIHsKKyAgICAgICAgaW50IHRy
aWVzID0gMDsKKyAgICAgICAgZG8geworICAgICAgICAgICAgaWYgKHNlc3Npb25IYW5kbGVyV2Fz
Q2FsbGVkKGhhbmRsZXIpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIFV0
aWw6OnNsZWVwKDAuMSk7CisgICAgICAgIH0gd2hpbGUgKCsrdHJpZXMgPD0gNTApOworCisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZXRhaW5QdHI8TlNBcnJheT4gZ2V0U3VwcG9ydGVk
Q29tbWFuZHMoKQorICAgIHsKKyAgICAgICAgYm9vbCBjb21wbGV0ZWQgPSBmYWxzZTsKKyAgICAg
ICAgUmV0YWluUHRyPE5TQXJyYXk+IHJlc3VsdDsKKworICAgICAgICBNUk1lZGlhUmVtb3RlR2V0
U3VwcG9ydGVkQ29tbWFuZHNGb3JPcmlnaW4oTVJNZWRpYVJlbW90ZUdldExvY2FsT3JpZ2luKCks
IGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFsmXSAoQ0ZBcnJheVJlZiBjb21tYW5kcykgewor
ICAgICAgICAgICAgcmVzdWx0ID0gKF9fYnJpZGdlIE5TQXJyYXkgKiljb21tYW5kczsKKyAgICAg
ICAgICAgIGNvbXBsZXRlZCA9IHRydWU7CisgICAgICAgIH0pOworCisgICAgICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmY29tcGxldGVkKTsKKworICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4g
X2NvbmZpZ3VyYXRpb247CisgICAgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IF93ZWJWaWV3Owor
CisgICAgSGFzaFNldDxTdHJpbmc+IF9tZWRpYVNlc3Npb25IYW5kbGVyc0NhbGxlZDsKKyAgICBI
YXNoU2V0PFN0cmluZz4gX2V2ZW50TGlzdGVuZXJzQ2FsbGVkOworICAgIFJldGFpblB0cjxOU011
dGFibGVBcnJheT4gX21lc3NhZ2VIYW5kbGVyczsKK307CisKK1RFU1RfRihNZWRpYVNlc3Npb25U
ZXN0LCBPbmx5T25lSGFuZGxlcikKK3sKKyAgICBsb2FkUGFnZUFuZEJlY29tZU5vd1BsYXlpbmco
Im1lZGlhLXJlbW90ZSIpOworCisgICAgW3dlYlZpZXcoKSBvYmplY3RCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0OkAic2V0RW1wdHlBY3Rpb25IYW5kbGVycyhbICdwbGF5JyBdKSJdOworCisgICAgbGlz
dGVuRm9yU2Vzc2lvbkhhbmRsZXJNZXNzYWdlcyh7ICJwbGF5IiwgInBhdXNlIiwgInNlZWt0byIs
ICJzZWVrZm9yd2FyZCIsICJzZWVrYmFja3dhcmQiLCAicHJldmlvdXN0cmFjayIsICJuZXh0dHJh
Y2siIH0pOworICAgIGxpc3RlbkZvckV2ZW50TWVzc2FnZXMoeyAicGxheSIsICJwYXVzZSIsICJz
ZWVrZWQiIH0pOworCisgICAgc3RhdGljIFZlY3RvcjxNUk1lZGlhUmVtb3RlQ29tbWFuZD4gcmVn
aXN0ZXJlZENvbW1hbmRzID0geyBNUk1lZGlhUmVtb3RlQ29tbWFuZFBsYXkgfTsKKyAgICBhdXRv
IGN1cnJlbnRDb21tYW5kcyA9IGdldFN1cHBvcnRlZENvbW1hbmRzKCk7CisgICAgZm9yIChNUkNv
bW1hbmRJbmZvICpjb21tYW5kIGluIGN1cnJlbnRDb21tYW5kcy5nZXQoKSkgeworICAgICAgICBp
ZiAoIWNvbW1hbmQuZW5hYmxlZCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAKKyAg
ICAgICAgQVNTRVJUX1RSVUUocmVnaXN0ZXJlZENvbW1hbmRzLmNvbnRhaW5zKGNvbW1hbmQuY29t
bWFuZCkpOworICAgIH0KKworICAgIEFTU0VSVF9UUlVFKHNlbmRNZWRpYVJlbW90ZUNvbW1hbmQo
TVJNZWRpYVJlbW90ZUNvbW1hbmRQbGF5KSk7CisgICAgd2FpdEZvclNlc3Npb25IYW5kbGVyVG9C
ZUNhbGxlZCgicGxheSIpOworICAgIEFTU0VSVF9UUlVFKHNlc3Npb25IYW5kbGVyV2FzQ2FsbGVk
KCJwbGF5IikpOworICAgIEFTU0VSVF9GQUxTRShldmVudExpc3RlbmVyV2FzQ2FsbGVkKCJwbGF5
IikpOworCisgICAgLy8gVGhlIG1lZGlhIHNlc3Npb24gb25seSByZWdpc3RlcmVkIGZvciBQbGF5
LCBidXQgbm8gb3RoZXIgY29tbWFuZHMgc2hvdWxkIHJlYWNoIEhUTUxNZWRpYUVsZW1lbnQuCisg
ICAgQVNTRVJUX1RSVUUoc2VuZE1lZGlhUmVtb3RlU2Vla0NvbW1hbmQoTVJNZWRpYVJlbW90ZUNv
bW1hbmRTa2lwRm9yd2FyZCwgMSkpOworICAgIEFTU0VSVF9GQUxTRShzZXNzaW9uSGFuZGxlcldh
c0NhbGxlZCgic2Vla2ZvcndhcmQiKSk7CisgICAgQVNTRVJUX0ZBTFNFKGV2ZW50TGlzdGVuZXJX
YXNDYWxsZWQoInNlZWtlZCIpKTsKKworICAgIEFTU0VSVF9UUlVFKHNlbmRNZWRpYVJlbW90ZVNl
ZWtDb21tYW5kKE1STWVkaWFSZW1vdGVDb21tYW5kU2tpcEJhY2t3YXJkLCAxMCkpOworICAgIEFT
U0VSVF9GQUxTRShzZXNzaW9uSGFuZGxlcldhc0NhbGxlZCgic2Vla2JhY2t3YXJkIikpOworICAg
IEFTU0VSVF9GQUxTRShldmVudExpc3RlbmVyV2FzQ2FsbGVkKCJzZWVrZWQiKSk7CisKKyAgICBB
U1NFUlRfVFJVRShzZW5kTWVkaWFSZW1vdGVTZWVrQ29tbWFuZChNUk1lZGlhUmVtb3RlQ29tbWFu
ZFNlZWtUb1BsYXliYWNrUG9zaXRpb24sIDYpKTsKKyAgICBBU1NFUlRfRkFMU0Uoc2Vzc2lvbkhh
bmRsZXJXYXNDYWxsZWQoInNlZWt0byIpKTsKKyAgICBBU1NFUlRfRkFMU0UoZXZlbnRMaXN0ZW5l
cldhc0NhbGxlZCgic2Vla2VkIikpOworCisgICAgQVNTRVJUX1RSVUUoc2VuZE1lZGlhUmVtb3Rl
Q29tbWFuZChNUk1lZGlhUmVtb3RlQ29tbWFuZE5leHRUcmFjaykpOworICAgIEFTU0VSVF9GQUxT
RShzZXNzaW9uSGFuZGxlcldhc0NhbGxlZCgibmV4dHRyYWNrIikpOworCisgICAgQVNTRVJUX1RS
VUUoc2VuZE1lZGlhUmVtb3RlQ29tbWFuZChNUk1lZGlhUmVtb3RlQ29tbWFuZFByZXZpb3VzVHJh
Y2spKTsKKyAgICBBU1NFUlRfRkFMU0Uoc2Vzc2lvbkhhbmRsZXJXYXNDYWxsZWQoInByZXZpb3Vz
dHJhY2siKSk7Cit9CisKK1RFU1RfRihNZWRpYVNlc3Npb25UZXN0LCBSZW1vdGVDb21tYW5kcykK
K3sKKyAgICBsb2FkUGFnZUFuZEJlY29tZU5vd1BsYXlpbmcoIm1lZGlhLXJlbW90ZSIpOworCisg
ICAgW3dlYlZpZXcoKSBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAic2V0RW1wdHlBY3Rp
b25IYW5kbGVycyhbICdwbGF5JywgJ3BhdXNlJywgJ3NlZWt0bycsICdzZWVrZm9yd2FyZCcsICdz
ZWVrYmFja3dhcmQnLCAncHJldmlvdXN0cmFjaycsICduZXh0dHJhY2snIF0pIl07CisKKyAgICBs
aXN0ZW5Gb3JTZXNzaW9uSGFuZGxlck1lc3NhZ2VzKHsgInBsYXkiLCAicGF1c2UiLCAic2Vla3Rv
IiwgInNlZWtmb3J3YXJkIiwgInNlZWtiYWNrd2FyZCIsICJwcmV2aW91c3RyYWNrIiwgIm5leHR0
cmFjayIgfSk7CisgICAgbGlzdGVuRm9yRXZlbnRNZXNzYWdlcyh7ICJwbGF5IiwgInBhdXNlIiwg
InNlZWtlZCIgfSk7CisKKyAgICBzdGF0aWMgVmVjdG9yPE1STWVkaWFSZW1vdGVDb21tYW5kPiBy
ZWdpc3RlcmVkQ29tbWFuZHMgPSB7IE1STWVkaWFSZW1vdGVDb21tYW5kUGxheSwgTVJNZWRpYVJl
bW90ZUNvbW1hbmRQYXVzZSwgTVJNZWRpYVJlbW90ZUNvbW1hbmRTZWVrVG9QbGF5YmFja1Bvc2l0
aW9uLCBNUk1lZGlhUmVtb3RlQ29tbWFuZFNraXBGb3J3YXJkLCBNUk1lZGlhUmVtb3RlQ29tbWFu
ZFNraXBCYWNrd2FyZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRQcmV2aW91c1RyYWNrLCBNUk1lZGlh
UmVtb3RlQ29tbWFuZE5leHRUcmFjayB9OworICAgIGF1dG8gY3VycmVudENvbW1hbmRzID0gZ2V0
U3VwcG9ydGVkQ29tbWFuZHMoKTsKKyAgICBmb3IgKE1SQ29tbWFuZEluZm8gKmNvbW1hbmQgaW4g
Y3VycmVudENvbW1hbmRzLmdldCgpKSB7CisgICAgICAgIGlmICghY29tbWFuZC5lbmFibGVkKQor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICBBU1NFUlRfVFJVRShyZWdp
c3RlcmVkQ29tbWFuZHMuY29udGFpbnMoY29tbWFuZC5jb21tYW5kKSk7CisgICAgfQorCisgICAg
QVNTRVJUX1RSVUUoc2VuZE1lZGlhUmVtb3RlQ29tbWFuZChNUk1lZGlhUmVtb3RlQ29tbWFuZFBs
YXkpKTsKKyAgICB3YWl0Rm9yU2Vzc2lvbkhhbmRsZXJUb0JlQ2FsbGVkKCJwbGF5Iik7CisgICAg
QVNTRVJUX1RSVUUoc2Vzc2lvbkhhbmRsZXJXYXNDYWxsZWQoInBsYXkiKSk7CisgICAgQVNTRVJU
X0ZBTFNFKGV2ZW50TGlzdGVuZXJXYXNDYWxsZWQoInBsYXkiKSk7CisKKyAgICBBU1NFUlRfVFJV
RShzZW5kTWVkaWFSZW1vdGVDb21tYW5kKE1STWVkaWFSZW1vdGVDb21tYW5kUGF1c2UpKTsKKyAg
ICB3YWl0Rm9yU2Vzc2lvbkhhbmRsZXJUb0JlQ2FsbGVkKCJwYXVzZSIpOworICAgIEFTU0VSVF9U
UlVFKHNlc3Npb25IYW5kbGVyV2FzQ2FsbGVkKCJwYXVzZSIpKTsKKyAgICBBU1NFUlRfRkFMU0Uo
ZXZlbnRMaXN0ZW5lcldhc0NhbGxlZCgicGF1c2UiKSk7CisKKyAgICBBU1NFUlRfVFJVRShzZW5k
TWVkaWFSZW1vdGVTZWVrQ29tbWFuZChNUk1lZGlhUmVtb3RlQ29tbWFuZFNraXBGb3J3YXJkLCAx
KSk7CisgICAgd2FpdEZvclNlc3Npb25IYW5kbGVyVG9CZUNhbGxlZCgic2Vla2ZvcndhcmQiKTsK
KyAgICBBU1NFUlRfVFJVRShzZXNzaW9uSGFuZGxlcldhc0NhbGxlZCgic2Vla2ZvcndhcmQiKSk7
CisgICAgQVNTRVJUX0ZBTFNFKGV2ZW50TGlzdGVuZXJXYXNDYWxsZWQoInNlZWtlZCIpKTsKKwor
ICAgIEFTU0VSVF9UUlVFKHNlbmRNZWRpYVJlbW90ZVNlZWtDb21tYW5kKE1STWVkaWFSZW1vdGVD
b21tYW5kU2tpcEJhY2t3YXJkLCAxMCkpOworICAgIHdhaXRGb3JTZXNzaW9uSGFuZGxlclRvQmVD
YWxsZWQoInNlZWtiYWNrd2FyZCIpOworICAgIEFTU0VSVF9UUlVFKHNlc3Npb25IYW5kbGVyV2Fz
Q2FsbGVkKCJzZWVrYmFja3dhcmQiKSk7CisgICAgQVNTRVJUX0ZBTFNFKGV2ZW50TGlzdGVuZXJX
YXNDYWxsZWQoInNlZWtlZCIpKTsKKworICAgIEFTU0VSVF9UUlVFKHNlbmRNZWRpYVJlbW90ZVNl
ZWtDb21tYW5kKE1STWVkaWFSZW1vdGVDb21tYW5kU2Vla1RvUGxheWJhY2tQb3NpdGlvbiwgNikp
OworICAgIHdhaXRGb3JTZXNzaW9uSGFuZGxlclRvQmVDYWxsZWQoInNlZWt0byIpOworICAgIEFT
U0VSVF9UUlVFKHNlc3Npb25IYW5kbGVyV2FzQ2FsbGVkKCJzZWVrdG8iKSk7CisgICAgQVNTRVJU
X0ZBTFNFKGV2ZW50TGlzdGVuZXJXYXNDYWxsZWQoInNlZWtlZCIpKTsKKworICAgIEFTU0VSVF9U
UlVFKHNlbmRNZWRpYVJlbW90ZUNvbW1hbmQoTVJNZWRpYVJlbW90ZUNvbW1hbmROZXh0VHJhY2sp
KTsKKyAgICB3YWl0Rm9yU2Vzc2lvbkhhbmRsZXJUb0JlQ2FsbGVkKCJuZXh0dHJhY2siKTsKKyAg
ICBBU1NFUlRfVFJVRShzZXNzaW9uSGFuZGxlcldhc0NhbGxlZCgibmV4dHRyYWNrIikpOworCisg
ICAgQVNTRVJUX1RSVUUoc2VuZE1lZGlhUmVtb3RlQ29tbWFuZChNUk1lZGlhUmVtb3RlQ29tbWFu
ZFByZXZpb3VzVHJhY2spKTsKKyAgICB3YWl0Rm9yU2Vzc2lvbkhhbmRsZXJUb0JlQ2FsbGVkKCJw
cmV2aW91c3RyYWNrIik7CisgICAgQVNTRVJUX1RSVUUoc2Vzc2lvbkhhbmRsZXJXYXNDYWxsZWQo
InByZXZpb3VzdHJhY2siKSk7CisKKyAgICAvLyBVbnJlZ2lzdGVyIGFjdGlvbiBoYW5kbGVycywg
c3VwcG9ydGVkIGNvbW1hbmRzIHNob3VsZCBnbyB0byBIVE1MTWVkaWFFbGVtZW50LgorICAgIFt3
ZWJWaWV3KCkgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImNsZWFyQWN0aW9uSGFuZGxl
cnMoKSJdOworCisgICAgQVNTRVJUX1RSVUUoc2VuZE1lZGlhUmVtb3RlQ29tbWFuZChNUk1lZGlh
UmVtb3RlQ29tbWFuZFBsYXkpKTsKKyAgICB3YWl0Rm9yRXZlbnRMaXN0ZW5lclRvQmVDYWxsZWQo
InBsYXkiKTsKKyAgICBBU1NFUlRfVFJVRShldmVudExpc3RlbmVyV2FzQ2FsbGVkKCJwbGF5Iikp
OworCisgICAgQVNTRVJUX1RSVUUoc2VuZE1lZGlhUmVtb3RlQ29tbWFuZChNUk1lZGlhUmVtb3Rl
Q29tbWFuZFBhdXNlKSk7CisgICAgd2FpdEZvckV2ZW50TGlzdGVuZXJUb0JlQ2FsbGVkKCJwbGF5
Iik7CisgICAgQVNTRVJUX1RSVUUoZXZlbnRMaXN0ZW5lcldhc0NhbGxlZCgicGF1c2UiKSk7CisK
KyAgICBBU1NFUlRfVFJVRShzZW5kTWVkaWFSZW1vdGVTZWVrQ29tbWFuZChNUk1lZGlhUmVtb3Rl
Q29tbWFuZFNraXBGb3J3YXJkLCAxKSk7CisgICAgd2FpdEZvckV2ZW50TGlzdGVuZXJUb0JlQ2Fs
bGVkKCJzZWVrZWQiKTsKKyAgICBBU1NFUlRfVFJVRShldmVudExpc3RlbmVyV2FzQ2FsbGVkKCJz
ZWVrZWQiKSk7CisKKyAgICBBU1NFUlRfVFJVRShzZW5kTWVkaWFSZW1vdGVTZWVrQ29tbWFuZChN
Uk1lZGlhUmVtb3RlQ29tbWFuZFNraXBCYWNrd2FyZCwgMTApKTsKKyAgICB3YWl0Rm9yRXZlbnRM
aXN0ZW5lclRvQmVDYWxsZWQoInNlZWtlZCIpOworICAgIEFTU0VSVF9UUlVFKGV2ZW50TGlzdGVu
ZXJXYXNDYWxsZWQoInNlZWtlZCIpKTsKKworICAgIEFTU0VSVF9UUlVFKHNlbmRNZWRpYVJlbW90
ZVNlZWtDb21tYW5kKE1STWVkaWFSZW1vdGVDb21tYW5kU2Vla1RvUGxheWJhY2tQb3NpdGlvbiwg
NikpOworICAgIHdhaXRGb3JFdmVudExpc3RlbmVyVG9CZUNhbGxlZCgic2Vla2VkIik7CisgICAg
QVNTRVJUX1RSVUUoZXZlbnRMaXN0ZW5lcldhc0NhbGxlZCgic2Vla2VkIikpOworfQorCit9CisK
KyNlbmRpZiAvLyBQTEFURk9STShNQUMpICYmIEVOQUJMRShNRURJQV9TRVNTSU9OKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9tZWRpYS1yZW1vdGUu
aHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvbWVkaWEtcmVtb3Rl
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMWM5OTNjN2NkNDAxYWZmMzJjZjIzMmVkYmM4ODNlY2RjNzliYjM1
ZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvbWVkaWEtcmVtb3RlLmh0bWwKQEAgLTAsMCArMSwxMzkgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKyAgICAjZXZlbnRzbG9nIHsKKyAgICAgICAgZm9udC1z
aXplOiAxMHB4OyAKKyAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMCUgLSAoMzIwcHgpKTsKKyAgICAg
ICAgb3ZlcmZsb3cteTogc2Nyb2xsOworICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDE0
NywgMTI4LCAxMDgsIDAuMjUpOworICAgIH0KKzwvc3R5bGU+CisgICAgPHNjcmlwdD4KKworICAg
ICAgICBsZXQgcGxheWxpc3QgPSB7CisgICAgICAgICAgICBjdXJyZW50OiAwLAorICAgICAgICAg
ICAgbWV0YWRhdGE6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHVy
bDogJ3ZpZGVvLXdpdGgtYXVkaW8ubXA0JywKKyAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICdC
aXAgQm9wIFdpdGggQXVkaW8nLAorICAgICAgICAgICAgICAgICAgICBhcnRpc3Q6ICdUaGUgQmlw
IEJvcCBBdXRob3JzJywKKyAgICAgICAgICAgICAgICAgICAgYWxidW06ICdXZWJLaXQgR3JlYXRl
c3QgSGl0cycsCisgICAgICAgICAgICAgICAgICAgIGFydHdvcms6IFsKKworICAgICAgICAgICAg
ICAgICAgICBdLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICB1cmw6ICd2aWRlby13aXRob3V0LWF1ZGlvLm1wNCcsCisgICAgICAgICAg
ICAgICAgICAgIHRpdGxlOiAnQmlwIEJvcCBXaXRob3V0IEF1ZGlvJywKKyAgICAgICAgICAgICAg
ICAgICAgYXJ0aXN0OiAnVGhlIEJpcCBCb3AgQXV0aG9ycycsCisgICAgICAgICAgICAgICAgICAg
IGFsYnVtOiAnV2ViS2l0IE9yaWdpbmFsIFRlc3QgQ29udGVudCcsCisgICAgICAgICAgICAgICAg
ICAgIGFydHdvcms6IFsKKworICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAg
IH0sCisgICAgICAgICAgICBdLAorICAgICAgICB9OworCisgICAgICAgIGZ1bmN0aW9uIHNldE1l
dGFkYXRhKGRhdGEpCisgICAgICAgIHsKKyAgICAgICAgICAgIG5hdmlnYXRvci5tZWRpYVNlc3Np
b24ubWV0YWRhdGEgPSBuZXcgTWVkaWFNZXRhZGF0YShkYXRhKTsKKyAgICAgICAgICAgIHBvc3RN
ZXNzYWdlKCdzZXQgbWV0YWRhdGEnKQorICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2V0
UGxheWxpc3RNZXRhZGF0YShpbmRleCkKKyAgICAgICAgeworICAgICAgICAgICAgc2V0TWV0YWRh
dGEocGxheWxpc3QubWV0YWRhdGFbaW5kZXhdKTsKKyAgICAgICAgCisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBjbGVhckFjdGlvbkhhbmRsZXJzKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgc2V0RW1wdHlBY3Rpb25IYW5kbGVycyhbXSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBzZXRFbXB0eUFjdGlvbkhhbmRsZXJzKGhhbmRsZXJzKQorICAgICAgICB7CisgICAgICAg
ICAgICBjb25zdCBhY3Rpb25zID0geworICAgICAgICAgICAgICAgICdwbGF5JyA6ICgpID0+IHsg
cG9zdE1lc3NhZ2UoJ3BsYXkgaGFuZGxlcicpOyB9LAorCisgICAgICAgICAgICAgICAgJ3BhdXNl
JyA6ICgpID0+IHsgcG9zdE1lc3NhZ2UoJ3BhdXNlIGhhbmRsZXInKSB9LAorICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgICdzZWVrdG8nIDogKGRldGFpbHMpID0+IHsgcG9zdE1lc3Nh
Z2UoJ3NlZWt0byBoYW5kbGVyJykgfSwKKworICAgICAgICAgICAgICAgICdzZWVrZm9yd2FyZCcg
OiAoZGV0YWlscykgPT4geyBwb3N0TWVzc2FnZSgnc2Vla2ZvcndhcmQgaGFuZGxlcicpIH0sCisK
KyAgICAgICAgICAgICAgICAnc2Vla2JhY2t3YXJkJyA6IChkZXRhaWxzKSA9PiB7IHBvc3RNZXNz
YWdlKCdzZWVrYmFja3dhcmQgaGFuZGxlcicpIH0sIAorCisgICAgICAgICAgICAgICAgJ3ByZXZp
b3VzdHJhY2snIDogKCkgPT4geyBwb3N0TWVzc2FnZSgncHJldmlvdXN0cmFjayBoYW5kbGVyJykg
fSwgCisKKyAgICAgICAgICAgICAgICAnbmV4dHRyYWNrJyA6ICgpID0+IHsgcG9zdE1lc3NhZ2Uo
J25leHR0cmFjayBoYW5kbGVyJykgfSwgCisgICAgICAgICAgICB9OworCisgICAgICAgICAgICBP
YmplY3Qua2V5cyhhY3Rpb25zKS5mb3JFYWNoKGFjdGlvbiA9PiB7ICBuYXZpZ2F0b3IubWVkaWFT
ZXNzaW9uLnNldEFjdGlvbkhhbmRsZXIoYWN0aW9uLCBudWxsKTsgfSk7CisKKyAgICAgICAgICAg
IGhhbmRsZXJzLmZvckVhY2goaGFuZGxlciA9PiB7CisgICAgICAgICAgICAgICAgaWYgKCFhY3Rp
b25zW2hhbmRsZXJdKSB7CisgICAgICAgICAgICAgICAgICAgIGxvZyhgYXNrZWQgdG8gcmVnaXN0
ZXIgaGFuZGxlciBmb3IgdW5rbm93biBhY3Rpb24gJyR7aGFuZGxlcn0nYCk7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBs
b2coYHJlZ2lzdGVyaW5nICcke2hhbmRsZXJ9JyBoYW5kbGVyYCk7CisgICAgICAgICAgICAgICAg
bmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5zZXRBY3Rpb25IYW5kbGVyKGhhbmRsZXIsIGFjdGlvbnNb
aGFuZGxlcl0pOyAKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gcG9zdE1lc3NhZ2UobWVzc2FnZSkKKyAgICAgICAgeworICAgICAgICAgICAgbG9nKGAke21l
c3NhZ2V9YCkKKyAgICAgICAgICAgIGlmICh3aW5kb3cud2Via2l0KQorICAgICAgICAgICAgICAg
IHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKG1l
c3NhZ2UpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gcG9zdEV2ZW50KGV2dCkgCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHBvc3RNZXNzYWdlKGAke2V2dC50eXBlfSBldmVudGApOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmdW5jdGlvbiBsb2FkKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgbGV0IHNyYyA9IHBsYXlsaXN0Lm1ldGFkYXRhWzBdLnVybDsKKyAgICAgICAg
ICAgIGlmICghd2luZG93LndlYmtpdCkKKyAgICAgICAgICAgICAgICBzcmMgPSBgLi4vV2ViS2l0
TGVnYWN5L2lvcy8ke3NyY31gOworICAgICAgICAgICAgYXVkaW8uc3JjID0gc3JjOworICAgICAg
ICAgICAgYXVkaW8ubG9hZCgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmdW5jdGlv
biBsb2cobXNnKQorICAgICAgICB7CisgICAgICAgICAgICBsZXQgZXZlbnRMb2cgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnZXZlbnRzbG9nJykKKyAgICAgICAgICAgIGxldCBub3RlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgICAgICBub3RlLmlubmVySFRNTCA9
IG1zZzsKKyAgICAgICAgICAgIGV2ZW50TG9nLmluc2VydEJlZm9yZShub3RlLCBldmVudExvZy5m
aXJzdENoaWxkKTsKKyAgICAgICAgfQorCisgICAgICAgIAorICAgICAgICB3aW5kb3cuYWRkRXZl
bnRMaXN0ZW5lcigibG9hZCIsIGV2dCA9PiB7CisgICAgICAgICAgICBhdWRpbyA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdhdWRpbycpWzBdOworICAgICAgICAgICAgYXVkaW8uYWRk
RXZlbnRMaXN0ZW5lcignY2FucGxheXRocm91Z2gnLCBwb3N0RXZlbnQpOworICAgICAgICAgICAg
YXVkaW8uYWRkRXZlbnRMaXN0ZW5lcigncGxheScsIHBvc3RFdmVudCk7CisgICAgICAgICAgICBh
dWRpby5hZGRFdmVudExpc3RlbmVyKCdwYXVzZScsIHBvc3RFdmVudCk7CisgICAgICAgICAgICBh
dWRpby5hZGRFdmVudExpc3RlbmVyKCdzZWVrZWQnLCBwb3N0RXZlbnQpOworICAgICAgICB9LCBm
YWxzZSk7CisKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxhdWRpbyBjb250
cm9scz4gPC9hdWRpbz4KKyAgICA8YnI+CisgICAgPGJ1dHRvbiBvbmNsaWNrPSJzZXRFbXB0eUFj
dGlvbkhhbmRsZXJzKFsncGxheScsJ3BhdXNlJywnc2Vla3RvJ10pIj5FbXB0eSBQbGF5LCBQYXVz
ZSwgU2Vla1RvPC9idXR0b24+CisgICAgPGJyPgorICAgIDxidXR0b24gb25jbGljaz0ic2V0RW1w
dHlBY3Rpb25IYW5kbGVycyhbJ3BsYXknLCdwYXVzZScsJ3NlZWtmb3J3YXJkJywnc2Vla2JhY2t3
YXJkJ10pIj5FbXB0eSBQbGF5LCBQYXVzZSwgU2VlayBGb3J3YXJkLCBTZWVrIEJhY2t3YXJkPC9i
dXR0b24+CisgICAgPGJyPgorICAgIDxidXR0b24gb25jbGljaz0ibG9hZCgpIj5Mb2FkPC9idXR0
b24+CisgICAgPGJyPgorICAgIDxidXR0b24gb25jbGljaz0ic2V0UGxheWxpc3RNZXRhZGF0YSgw
KSI+U2V0IE1ldGFkYXRhIDE8L2J1dHRvbj48YnV0dG9uIG9uY2xpY2s9InNldFBsYXlsaXN0TWV0
YWRhdGEoMSkiPlNldCBNZXRhZGF0YSAyPC9idXR0b24+CisgICAgPGJyPgorICAgIDxkaXYgaWQ9
J2V2ZW50c2xvZyc+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="commit-queue"
          id="437554"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419345</attachid>
            <date>2021-02-04 17:42:40 -0800</date>
            <delta_ts>2021-02-04 17:57:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221431-20210204174239.patch</filename>
            <type>text/plain</type>
            <size>93995</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDY1NTU5N2Y2NWVlNjhi
MzU4NTk2MzFmZjU2MjljMzNiZmE0YTliOC4uY2M4OTA1ZGZkZWQwZTg0N2Q2MzEwZmFiNjUyMzg4
YThhMTc1ZmQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisyMDIxLTAyLTA0ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIENvbm5l
Y3QgTWVkaWFTZXNzaW9uIHdpdGggTWVkaWFSZW1vdGUgYW5kIE5vd1BsYXlpbmcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTQzMQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNzQwMDAzNjM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUm91dGUgYWxsIHJlbW90ZSBjb250cm9sIGNvbW1hbmRzIHRvIG5h
dmlnYXRvci5tZWRpYVNlc3Npb24gd2hlbiBpdCBoYXMgYW55IAorICAgICAgICByZWdpc3RlcmVk
IGFjdGlvbiBoYW5kbGVycywgYW5kIHBhc3MgbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5tZXRhZGF0
YSB0byBOb3dQbGF5aW5nLgorCisgICAgICAgIFRlc3RlZCBieSBuZXcgQVBJIHRlc3RzIGluIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTWVkaWFTZXNzaW9uLm1tLgorCisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFJbWFnZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFJbWFnZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
SW1hZ2U6OmRlY29kZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRh
ZGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYU1ldGFkYXRhOjpzZXRUaXRsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYU1ldGFkYXRhOjpzZXRBcnRpc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFNZXRhZGF0YTo6c2V0QWxidW0pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFN
ZXRhZGF0YTo6c2V0QXJ0d29yayk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVk
aWFNZXRhZGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFNZXRhZGF0YTo6dGl0bGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFNZXRhZGF0YTo6YXJ0aXN0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhTWV0YWRhdGE6OmFsYnVtIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhTWV0YWRhdGE6OmFydHdvcmsgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFNZXRhZGF0YTo6bWV0YWRhdGEgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
ZXNzaW9uL01lZGlhTWV0YWRhdGFJbml0Lmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYU1ldGFk
YXRhSW5pdDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhTWV0YWRhdGFJ
bml0OjpkZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpuZXh0TG9nSWRlbnRpZmllcik6CisgICAgICAgIChX
ZWJDb3JlOjpsb2dDaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6OmxvZ0NsYXNzTmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUNvbW1hbmRGb3JNZWRpYVNlc3Npb25BY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uOjpNZWRpYVNlc3Npb24pOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTZXNzaW9uOjpzZXRNZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVNlc3Npb246OnNldFBsYXliYWNrU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
ZXNzaW9uOjpzZXRBY3Rpb25IYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lv
bjo6c2V0UG9zaXRpb25TdGF0ZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVk
aWFTZXNzaW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb246Omhhc0FjdGl2ZUFj
dGlvbkhhbmRsZXJzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6bG9n
Z2VyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6bG9nSWRlbnRpZmll
ciBjb25zdCk6CisgICAgICAgIChXVEY6OkxvZ0FyZ3VtZW50PFdlYkNvcmU6Ok1lZGlhU2Vzc2lv
blBsYXliYWNrU3RhdGU+Ojp0b1N0cmluZyk6CisgICAgICAgIChXVEY6OkxvZ0FyZ3VtZW50PFdl
YkNvcmU6Ok1lZGlhU2Vzc2lvbkFjdGlvbj46OnRvU3RyaW5nKToKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmRpZFJlY2VpdmVS
ZW1vdGVDb250cm9sQ29tbWFuZCk6CisgICAgICAgICogaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OmRpZFJlY2VpdmVS
ZW1vdGVDb250cm9sQ29tbWFuZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNz
aW9uOjpub3dQbGF5aW5nSW5mbyBjb25zdCk6CisgICAgICAgICogaHRtbC9NZWRpYUVsZW1lbnRT
ZXNzaW9uLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3Rl
Q29tbWFuZExpc3RlbmVyOjpzY2hlZHVsZVN1cHBvcnRlZENvbW1hbmRzVXBkYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6YWRkU3VwcG9ydGVkQ29tbWFuZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVDb21tYW5kTGlzdGVuZXI6OnJlbW92ZVN1cHBvcnRl
ZENvbW1hbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmg6CisgICAgICAgIChXZWJD
b3JlOjpOb3dQbGF5aW5nSW5mbzo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9Q
bGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RW51bWVy
YXRpb25Ub1N0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNl
c3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6
YWRkU3VwcG9ydGVkQ29tbWFuZCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXI6OnJlbW92ZVN1cHBvcnRlZENvbW1hbmQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2NoZWR1bGVTZXNzaW9uU3RhdHVzVXBk
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2Vzc2lv
bkNhblByb2R1Y2VBdWRpb0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9u
TWFuYWdlckNvY29hOjphZGRTdXBwb3J0ZWRDb21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6cmVtb3ZlU3VwcG9ydGVkQ29tbWFuZCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJbmZvKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvTWVkaWFSZW1vdGVTb2Z0TGluay5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL01lZGlhUmVtb3RlU29mdExpbmsuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om1lZGlhUmVt
b3RlQ29tbWFuZEZvclBsYXRmb3JtQ29tbWFuZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVD
b21tYW5kTGlzdGVuZXJNYWM6OmRlZmF1bHRDb21tYW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpp
c1NlZWtDb21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lck1h
Yzo6dXBkYXRlU3VwcG9ydGVkQ29tbWFuZHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlQ29t
bWFuZExpc3RlbmVyTWFjOjpSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMpOgorCiAyMDIxLTAyLTA0
ICBKdWxpYW4gR29uemFsZXogIDxqdWxpYW5fYV9nb256YWxlekBhcHBsZS5jb20+CiAKICAgICAg
ICAgTnVsbCBkZXJlZmVyZW5jZSBpbiBEb2N1bWVudExvYWRlcjo6Y29tbWl0RGF0YSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFM
L0NoYW5nZUxvZwppbmRleCAwOWIxMGNhMTI3OWQ5YjgxNTY2ZGE4ZmZhMmUwMWU0NWQ1MGI3YmZh
Li5hNmY2YzJjZmQwYjVjMTFjZTcwZTEyOTc3OGZjMjEwZGUxMWU1MjQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0wMi0wNCAgRXJpYyBDYXJsc29uICA8ZXJpYy5j
YXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWFjXSBDb25uZWN0IE1lZGlhU2Vzc2lvbiB3
aXRoIE1lZGlhUmVtb3RlIGFuZCBOb3dQbGF5aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE0MzEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc0
MDAwMzYzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcGFsL3NwaS9tYWMvTWVkaWFSZW1vdGVTUEkuaDoKKwogMjAyMS0wMi0wMSAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIERpc2FibGUgaW50ZXJz
dGl0aWFsIGV2ZW50cyBvbiBBVlBsYXllckl0ZW0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDc5M2YzNGE3MzdlMzhl
YjZjMWMxOTI4NGIyYTQ3Y2EwNjQ5MzAyMjkuLmRhYWNmODY3OGRiMGIxYzI0NTEzMjZkMjQ2ODg1
MGY5MTViZDVhZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDItMDQgIEVyaWMg
Q2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW01hY10gQ29ubmVj
dCBNZWRpYVNlc3Npb24gd2l0aCBNZWRpYVJlbW90ZSBhbmQgTm93UGxheWluZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNDMxCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS83NDAwMDM2Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgYSBwcml2YXRlIHByZWZlcmVuY2Ugc28gdGhlIG5ldyBNZWRp
YVNlc3Npb24gQVBJIHRlc3QgY2FuIGVuYWJsZSB0aGUgZmVhdHVyZS4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbToKKyAgICAgICAgKC1bV0tQcmVmZXJl
bmNlcyBfbWVkaWFTZXNzaW9uRW5hYmxlZF0pOgorICAgICAgICAoLVtXS1ByZWZlcmVuY2VzIF9z
ZXRNZWRpYVNlc3Npb25FbmFibGVkOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tQcmVmZXJlbmNlc1ByaXZhdGUuaDoKKwogMjAyMS0wMi0wNCAgSnVsaWFuIEdvbnphbGV6ICA8
anVsaWFuX2FfZ29uemFsZXpAYXBwbGUuY29tPgogCiAgICAgICAgIE51bGwgZGVyZWZlcmVuY2Ug
aW4gRG9jdW1lbnRMb2FkZXI6OmNvbW1pdERhdGEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNlc3Npb24vTWVkaWFJbWFnZS5oCmluZGV4IGFmMTE5NWVhZDBmYjIwMGYyYjVh
YWFhZjA2Yjc4MGMyNjFlMmRhZGQuLjQ5MzI0MDBhMDJmODc2OWQxOTQ4OWNkMzhhMmRhODAzYTQ4
MWMyNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01l
ZGlhSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRp
YUltYWdlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzMsOCArMzMsMzMgQEAgc3RydWN0IE1lZGlhSW1hZ2UgewogICAgIFN0cmluZyBz
cmM7CiAgICAgU3RyaW5nIHNpemVzOwogICAgIFN0cmluZyB0eXBlOworCisgICAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxNZWRpYUltYWdlPiBkZWNvZGUoRGVjb2Rl
ciYpOwogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gaW5saW5lIHZvaWQgTWVkaWFJbWFn
ZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBzcmMg
PDwgc2l6ZXMgPDwgdHlwZTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIE9w
dGlvbmFsPE1lZGlhSW1hZ2U+IE1lZGlhSW1hZ2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
eworICAgIFN0cmluZyBzcmM7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzcmMpKQorICAgICAg
ICByZXR1cm4geyB9OworCisgICAgU3RyaW5nIHNpemVzOworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoc2l6ZXMpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgU3RyaW5nIHR5cGU7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZSh0eXBlKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJl
dHVybiBNZWRpYUltYWdlIHsgV1RGTW92ZShzcmMpLCBXVEZNb3ZlKHNpemVzKSwgV1RGTW92ZSh0
eXBlKSB9OworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU0VTU0lPTikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5j
cHAKaW5kZXggYTZmNDQ5YzQyNjBmY2ZiN2NhNDZjMDZkMTk4ZWM3ZTY1NjI4MWQ5ZC4uZjZmZjMx
ZmIwOGRkNDk4MWEzYmNlOTAzOTJiZGJkMmNkYTVmY2RiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjQsMjUgKzY0
LDI4IEBAIHZvaWQgTWVkaWFNZXRhZGF0YTo6cmVzZXRNZWRpYVNlc3Npb24oKQogCiB2b2lkIE1l
ZGlhTWV0YWRhdGE6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7Ci0gICAgaWYgKG1f
dGl0bGUgPT0gdGl0bGUpCisgICAgaWYgKG1fbWV0YWRhdGEudGl0bGUgPT0gdGl0bGUpCiAgICAg
ICAgIHJldHVybjsKLSAgICBtX3RpdGxlID0gdGl0bGU7CisKKyAgICBtX21ldGFkYXRhLnRpdGxl
ID0gdGl0bGU7CiAgICAgbWV0YWRhdGFVcGRhdGVkKCk7CiB9CiAKIHZvaWQgTWVkaWFNZXRhZGF0
YTo6c2V0QXJ0aXN0KGNvbnN0IFN0cmluZyYgYXJ0aXN0KQogewotICAgIGlmIChtX2FydGlzdCA9
PSBhcnRpc3QpCisgICAgaWYgKG1fbWV0YWRhdGEuYXJ0aXN0ID09IGFydGlzdCkKICAgICAgICAg
cmV0dXJuOwotICAgIG1fYXJ0aXN0ID0gYXJ0aXN0OworCisgICAgbV9tZXRhZGF0YS5hcnRpc3Qg
PSBhcnRpc3Q7CiAgICAgbWV0YWRhdGFVcGRhdGVkKCk7CiB9CiAKIHZvaWQgTWVkaWFNZXRhZGF0
YTo6c2V0QWxidW0oY29uc3QgU3RyaW5nJiBhbGJ1bSkKIHsKLSAgICBpZiAobV9hbGJ1bSA9PSBh
bGJ1bSkKKyAgICBpZiAobV9tZXRhZGF0YS5hbGJ1bSA9PSBhbGJ1bSkKICAgICAgICAgcmV0dXJu
OwotICAgIG1fYWxidW0gPSBhbGJ1bTsKKworICAgIG1fbWV0YWRhdGEuYWxidW0gPSBhbGJ1bTsK
ICAgICBtZXRhZGF0YVVwZGF0ZWQoKTsKIH0KIApAQCAtOTcsNyArMTAwLDcgQEAgRXhjZXB0aW9u
T3I8dm9pZD4gTWVkaWFNZXRhZGF0YTo6c2V0QXJ0d29yayhTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBWZWMKICAgICAgICAgcmVzb2x2ZWRBcnR3b3JrLnVuY2hlY2tlZEFwcGVuZChN
ZWRpYUltYWdlIHsgcmVzb2x2ZWRTcmMuc3RyaW5nKCksIGltYWdlLnNpemVzLCBpbWFnZS50eXBl
IH0pOwogICAgIH0KIAotICAgIG1fYXJ0d29yayA9IFdURk1vdmUocmVzb2x2ZWRBcnR3b3JrKTsK
KyAgICBtX21ldGFkYXRhLmFydHdvcmsgPSBXVEZNb3ZlKHJlc29sdmVkQXJ0d29yayk7CiAgICAg
bWV0YWRhdGFVcGRhdGVkKCk7CiAgICAgcmV0dXJuIHsgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuaAppbmRleCAyNjRlZWNj
YTk1MGIyMmVhNDUzYjcxZTQyZGZhODA0NjBhOTc2YmNhLi4zMGUwOTNkNmQyN2RkYjc0MTUyODFl
ZThiNWQxMDA0ZWZjZmFhNWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShN
RURJQV9TRVNTSU9OKQogCisjaW5jbHVkZSAiTWVkaWFNZXRhZGF0YUluaXQuaCIKICNpbmNsdWRl
ICJNZWRpYVNlc3Npb24uaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CkBAIC0zNCwxMCArMzUsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIERvY3VtZW50OwotY2xhc3MgTWVkaWFTZXNzaW9uOwogc3RydWN0IE1lZGlhSW1hZ2U7
Ci1zdHJ1Y3QgTWVkaWFNZXRhZGF0YUluaXQ7CisKK3VzaW5nIE1lZGlhU2Vzc2lvbk1ldGFkYXRh
ID0gTWVkaWFNZXRhZGF0YUluaXQ7CiAKIGNsYXNzIE1lZGlhTWV0YWRhdGEgOiBwdWJsaWMgUmVm
Q291bnRlZDxNZWRpYU1ldGFkYXRhPiB7CiBwdWJsaWM6CkBAIC00NywyNyArNDcsMjYgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0TWVkaWFTZXNzaW9uKE1lZGlhU2Vzc2lvbiYpOwogICAgIHZvaWQg
cmVzZXRNZWRpYVNlc3Npb24oKTsKIAotICAgIGNvbnN0IFN0cmluZyYgdGl0bGUoKSBjb25zdCB7
IHJldHVybiBtX3RpdGxlOyB9CisgICAgY29uc3QgU3RyaW5nJiB0aXRsZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbWV0YWRhdGEudGl0bGU7IH0KICAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZyYp
OwogCi0gICAgY29uc3QgU3RyaW5nJiBhcnRpc3QoKSBjb25zdCB7IHJldHVybiBtX2FydGlzdDsg
fQorICAgIGNvbnN0IFN0cmluZyYgYXJ0aXN0KCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5h
cnRpc3Q7IH0KICAgICB2b2lkIHNldEFydGlzdChjb25zdCBTdHJpbmcmKTsKIAotICAgIGNvbnN0
IFN0cmluZyYgYWxidW0oKSBjb25zdCB7IHJldHVybiBtX2FsYnVtOyB9CisgICAgY29uc3QgU3Ry
aW5nJiBhbGJ1bSgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRhdGEuYWxidW07IH0KICAgICB2b2lk
IHNldEFsYnVtKGNvbnN0IFN0cmluZyYpOwogCi0gICAgY29uc3QgVmVjdG9yPE1lZGlhSW1hZ2U+
JiBhcnR3b3JrKCkgY29uc3QgeyByZXR1cm4gbV9hcnR3b3JrOyB9CisgICAgY29uc3QgVmVjdG9y
PE1lZGlhSW1hZ2U+JiBhcnR3b3JrKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5hcnR3b3Jr
OyB9CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0QXJ0d29yayhTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiwgVmVjdG9yPE1lZGlhSW1hZ2U+JiYpOwogCisgICAgY29uc3QgTWVkaWFTZXNzaW9uTWV0
YWRhdGEmIG1ldGFkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YTsgfQorCiBwcml2YXRl
OgogICAgIE1lZGlhTWV0YWRhdGEoKTsKICAgICB2b2lkIG1ldGFkYXRhVXBkYXRlZCgpOwogCiAg
ICAgV2Vha1B0cjxNZWRpYVNlc3Npb24+IG1fc2Vzc2lvbjsKLSAgICBTdHJpbmcgbV90aXRsZTsK
LSAgICBTdHJpbmcgbV9hcnRpc3Q7Ci0gICAgU3RyaW5nIG1fYWxidW07Ci0gICAgVmVjdG9yPE1l
ZGlhSW1hZ2U+IG1fYXJ0d29yazsKKyAgICBNZWRpYVNlc3Npb25NZXRhZGF0YSBtX21ldGFkYXRh
OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Np
b24vTWVkaWFNZXRhZGF0YUluaXQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNz
aW9uL01lZGlhTWV0YWRhdGFJbml0LmgKaW5kZXggMDEyZWMyZDA5NWY5M2JiZmUyOGEzOGQ2M2Fh
ZWE0MjEyNmFiNTZlNS4uNjY5ZGVmZmEyZDY5NDA4NWYwOGYxMGRmMWI5MTZlZjQ0ZTg4NWUwZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRh
ZGF0YUluaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRp
YU1ldGFkYXRhSW5pdC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTM2LDggKzM2LDM3IEBAIHN0cnVjdCBNZWRpYU1ldGFkYXRhSW5pdCB7
CiAgICAgU3RyaW5nIGFydGlzdDsKICAgICBTdHJpbmcgYWxidW07CiAgICAgVmVjdG9yPE1lZGlh
SW1hZ2U+IGFydHdvcms7CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29k
ZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9w
dGlvbmFsPE1lZGlhTWV0YWRhdGFJbml0PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAordGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gaW5saW5lIHZvaWQgTWVkaWFNZXRhZGF0YUluaXQ6OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgdGl0bGUgPDwgYXJ0aXN0
IDw8IGFsYnVtIDw8IGFydHdvcms7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGlu
ZSBPcHRpb25hbDxNZWRpYU1ldGFkYXRhSW5pdD4gTWVkaWFNZXRhZGF0YUluaXQ6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFN0cmluZyB0aXRsZTsKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHRpdGxlKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIFN0cmluZyBhcnRpc3Q7
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhcnRpc3QpKQorICAgICAgICByZXR1cm4geyB9Owor
CisgICAgU3RyaW5nIGFsYnVtOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWxidW0pKQorICAg
ICAgICByZXR1cm4geyB9OworCisgICAgVmVjdG9yPE1lZGlhSW1hZ2U+IGFydHdvcms7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShhcnR3b3JrKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAg
IHJldHVybiBNZWRpYU1ldGFkYXRhSW5pdCB7IFdURk1vdmUodGl0bGUpLCBXVEZNb3ZlKGFydGlz
dCksIFdURk1vdmUoYWxidW0pLCBXVEZNb3ZlKGFydHdvcmspIH07Cit9CisKIH0KIAogI2VuZGlm
IC8vIEVOQUJMRShNRURJQV9TRVNTSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAKaW5kZXggMWFiNjIyNDgzMmVlZmExMjky
ZjEzODYxM2I0MWYwNzcwOTk2MjNjZS4uYTNiNWE5MGYwNDdkZjdlODlhMzc1NTU3MDRiYzNmZWU3
NWVlMTIwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24v
TWVkaWFTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lv
bi9NZWRpYVNlc3Npb24uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDExICsyOCw1MyBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NF
U1NJT04pCiAKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFNZXRhZGF0YS5o
IgogI2luY2x1ZGUgIk5hdmlnYXRvci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBjb25zdCB2b2lkKiBu
ZXh0TG9nSWRlbnRpZmllcigpCit7CisgICAgc3RhdGljIHVpbnQ2NF90IGxvZ0lkZW50aWZpZXIg
PSBjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpOworICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PGNvbnN0IHZvaWQqPigrK2xvZ0lkZW50aWZpZXIpOworfQorCitzdGF0aWMgV1RGTG9n
Q2hhbm5lbCYgbG9nQ2hhbm5lbCgpIHsgcmV0dXJuIExvZ01lZGlhOyB9CitzdGF0aWMgY29uc3Qg
Y2hhciogbG9nQ2xhc3NOYW1lKCkgeyByZXR1cm4gIk1lZGlhU2Vzc2lvbiI7IH0KKworc3RhdGlj
IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgcGxhdGZvcm1D
b21tYW5kRm9yTWVkaWFTZXNzaW9uQWN0aW9uKE1lZGlhU2Vzc2lvbkFjdGlvbiBhY3Rpb24pCit7
CisgICAgc3RhdGljIGNvbnN0IGF1dG8gY29tbWFuZE1hcCA9IG1ha2VOZXZlckRlc3Ryb3llZChb
XSB7CisgICAgICAgIHN0cnVjdCBNYXBFbnRyeSB7CisgICAgICAgICAgICBNZWRpYVNlc3Npb25B
Y3Rpb24gYWN0aW9uOworICAgICAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNv
bnRyb2xDb21tYW5kVHlwZSBjb21tYW5kOworICAgICAgICB9OworICAgICAgICBzdGF0aWMgY29u
c3QgTWFwRW50cnkgZW50cmllc1tdID0geworICAgICAgICAgICAgeyBNZWRpYVNlc3Npb25BY3Rp
b246OlBsYXksIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5Q29tbWFuZCB9LAorICAgICAgICAg
ICAgeyBNZWRpYVNlc3Npb25BY3Rpb246OlBhdXNlLCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGF1
c2VDb21tYW5kIH0sCisgICAgICAgICAgICB7IE1lZGlhU2Vzc2lvbkFjdGlvbjo6U2Vla2Zvcndh
cmQsIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTa2lwRm9yd2FyZENvbW1hbmQgfSwKKyAgICAgICAg
ICAgIHsgTWVkaWFTZXNzaW9uQWN0aW9uOjpTZWVrYmFja3dhcmQsIFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpTa2lwQmFja3dhcmRDb21tYW5kIH0sCisgICAgICAgICAgICB7IE1lZGlhU2Vzc2lvbkFj
dGlvbjo6UHJldmlvdXN0cmFjaywgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5leHRUcmFja0NvbW1h
bmQgfSwKKyAgICAgICAgICAgIHsgTWVkaWFTZXNzaW9uQWN0aW9uOjpOZXh0dHJhY2ssIFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpQcmV2aW91c1RyYWNrQ29tbWFuZCB9LAorICAgICAgICAgICAgeyBN
ZWRpYVNlc3Npb25BY3Rpb246OlN0b3AsIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTdG9wQ29tbWFu
ZCB9LAorICAgICAgICAgICAgeyBNZWRpYVNlc3Npb25BY3Rpb246OlNlZWt0bywgUGxhdGZvcm1N
ZWRpYVNlc3Npb246OlNlZWtUb1BsYXliYWNrUG9zaXRpb25Db21tYW5kIH0sCisgICAgICAgIH07
CisKKyAgICAgICAgSGFzaE1hcDxNZWRpYVNlc3Npb25BY3Rpb24sIFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIFdURjo6SW50SGFzaDxNZWRpYVNlc3Npb25B
Y3Rpb24+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPE1lZGlhU2Vzc2lvbkFjdGlvbj4+IG1h
cDsKKyAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IGVudHJpZXMpCisgICAgICAgICAgICBtYXAu
YWRkKGVudHJ5LmFjdGlvbiwgZW50cnkuY29tbWFuZCk7CisgICAgICAgIHJldHVybiBtYXA7Cisg
ICAgfSgpKTsKKworICAgIGF1dG8gaXQgPSBjb21tYW5kTWFwLmdldCgpLmZpbmQoYWN0aW9uKTsK
KyAgICBpZiAoaXQgIT0gY29tbWFuZE1hcC5nZXQoKS5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGl0
LT52YWx1ZTsKKworICAgIHJldHVybiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9Db21tYW5kOwor
fQorCiBSZWY8TWVkaWFTZXNzaW9uPiBNZWRpYVNlc3Npb246OmNyZWF0ZShOYXZpZ2F0b3ImIG5h
dmlnYXRvcikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVNlc3Npb24obmF2aWdh
dG9yKSk7CkBAIC00MSwxMiArODMsMTggQEAgUmVmPE1lZGlhU2Vzc2lvbj4gTWVkaWFTZXNzaW9u
OjpjcmVhdGUoTmF2aWdhdG9yJiBuYXZpZ2F0b3IpCiBNZWRpYVNlc3Npb246Ok1lZGlhU2Vzc2lv
bihOYXZpZ2F0b3ImIG5hdmlnYXRvcikKICAgICA6IG1fbmF2aWdhdG9yKG1ha2VXZWFrUHRyKG5h
dmlnYXRvcikpCiB7CisgICAgbV9sb2dnZXIgPSBtYWtlUmVmUHRyKERvY3VtZW50OjpzaGFyZWRM
b2dnZXIoKSk7CisgICAgbV9sb2dJZGVudGlmaWVyID0gbmV4dExvZ0lkZW50aWZpZXIoKTsKKwor
ICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CiB9CiAKIE1lZGlhU2Vzc2lvbjo6fk1lZGlh
U2Vzc2lvbigpID0gZGVmYXVsdDsKIAogdm9pZCBNZWRpYVNlc3Npb246OnNldE1ldGFkYXRhKFJl
ZlB0cjxNZWRpYU1ldGFkYXRhPiYmIG1ldGFkYXRhKQogeworICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUik7CisKICAgICBpZiAobV9tZXRhZGF0YSkKICAgICAgICAgbV9tZXRhZGF0YS0+cmVz
ZXRNZWRpYVNlc3Npb24oKTsKICAgICBtX21ldGFkYXRhID0gV1RGTW92ZShtZXRhZGF0YSk7CkBA
IC02MCw2ICsxMDgsOCBAQCB2b2lkIE1lZGlhU2Vzc2lvbjo6c2V0UGxheWJhY2tTdGF0ZShNZWRp
YVNlc3Npb25QbGF5YmFja1N0YXRlIHN0YXRlKQogICAgIGlmIChtX3BsYXliYWNrU3RhdGUgPT0g
c3RhdGUpCiAgICAgICAgIHJldHVybjsKIAorICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwg
c3RhdGUpOworCiAgICAgYXV0byBjdXJyZW50UG9zaXRpb24gPSB0aGlzLT5jdXJyZW50UG9zaXRp
b24oKTsKICAgICBpZiAobV9wb3NpdGlvblN0YXRlICYmIGN1cnJlbnRQb3NpdGlvbikgewogICAg
ICAgICBtX3Bvc2l0aW9uU3RhdGUtPnBvc2l0aW9uID0gKmN1cnJlbnRQb3NpdGlvbjsKQEAgLTcw
LDEwICsxMjAsMTggQEAgdm9pZCBNZWRpYVNlc3Npb246OnNldFBsYXliYWNrU3RhdGUoTWVkaWFT
ZXNzaW9uUGxheWJhY2tTdGF0ZSBzdGF0ZSkKIAogdm9pZCBNZWRpYVNlc3Npb246OnNldEFjdGlv
bkhhbmRsZXIoTWVkaWFTZXNzaW9uQWN0aW9uIGFjdGlvbiwgUmVmUHRyPE1lZGlhU2Vzc2lvbkFj
dGlvbkhhbmRsZXI+JiYgaGFuZGxlcikKIHsKLSAgICBpZiAoaGFuZGxlcikKKyAgICBpZiAoaGFu
ZGxlcikgeworICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJhZGRpbmcgIiwgYWN0
aW9uKTsKICAgICAgICAgbV9hY3Rpb25IYW5kbGVycy5zZXQoYWN0aW9uLCBoYW5kbGVyKTsKLSAg
ICBlbHNlCi0gICAgICAgIG1fYWN0aW9uSGFuZGxlcnMucmVtb3ZlKGFjdGlvbik7CisgICAgICAg
IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmFkZFN1cHBvcnRl
ZENvbW1hbmQocGxhdGZvcm1Db21tYW5kRm9yTWVkaWFTZXNzaW9uQWN0aW9uKGFjdGlvbikpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChtX2FjdGlvbkhhbmRsZXJzLmNvbnRhaW5zKGFjdGlv
bikpIHsKKyAgICAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInJlbW92aW5nICIs
IGFjdGlvbik7CisgICAgICAgICAgICBtX2FjdGlvbkhhbmRsZXJzLnJlbW92ZShhY3Rpb24pOwor
ICAgICAgICB9CisgICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFu
YWdlcigpLnJlbW92ZVN1cHBvcnRlZENvbW1hbmQocGxhdGZvcm1Db21tYW5kRm9yTWVkaWFTZXNz
aW9uQWN0aW9uKGFjdGlvbikpOworICAgIH0KKyAgICAKICAgICBhY3Rpb25IYW5kbGVyc1VwZGF0
ZWQoKTsKIH0KIApAQCAtODksNiArMTQ3LDggQEAgUmVmUHRyPE1lZGlhU2Vzc2lvbkFjdGlvbkhh
bmRsZXI+IE1lZGlhU2Vzc2lvbjo6aGFuZGxlckZvckFjdGlvbihNZWRpYVNlc3Npb25BY3QKIAog
RXhjZXB0aW9uT3I8dm9pZD4gTWVkaWFTZXNzaW9uOjpzZXRQb3NpdGlvblN0YXRlKE9wdGlvbmFs
PE1lZGlhUG9zaXRpb25TdGF0ZT4mJiBzdGF0ZSkKIHsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5U
SUZJRVIpOworCiAgICAgaWYgKCFzdGF0ZSkgewogICAgICAgICBtX3Bvc2l0aW9uU3RhdGUgPSBX
VEY6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5oCmluZGV4IDNmNjRmM2IwMjQ2ODRl
NGY3ZWM2NDQ4N2I0MTdmNWVkMTczYTc5MDkuLjRmNGJlNDc3MjY0NDA4NmI3N2Q2MWQ5ZjViMDgy
M2ExNWQwNTA1NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNz
aW9uL01lZGlhU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNz
aW9uL01lZGlhU2Vzc2lvbi5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDEwICsyNywxNCBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NF
U1NJT04pCiAKKyNpbmNsdWRlICJKU01lZGlhUG9zaXRpb25TdGF0ZS5oIgorI2luY2x1ZGUgIkpT
TWVkaWFTZXNzaW9uQWN0aW9uLmgiCisjaW5jbHVkZSAiSlNNZWRpYVNlc3Npb25QbGF5YmFja1N0
YXRlLmgiCiAjaW5jbHVkZSAiTWVkaWFQb3NpdGlvblN0YXRlLmgiCiAjaW5jbHVkZSAiTWVkaWFT
ZXNzaW9uQWN0aW9uLmgiCiAjaW5jbHVkZSAiTWVkaWFTZXNzaW9uQWN0aW9uSGFuZGxlci5oIgog
I2luY2x1ZGUgIk1lZGlhU2Vzc2lvblBsYXliYWNrU3RhdGUuaCIKKyNpbmNsdWRlIDx3dGYvTG9n
Z2VyLmg+CiAjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KICNpbmNsdWRlIDx3dGYvT3B0
aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CkBAIC01NywxMyArNjEsMTggQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPGRvdWJsZT4gY3VycmVudFBvc2l0
aW9uKCkgY29uc3Q7CiAKICAgICB2b2lkIG1ldGFkYXRhVXBkYXRlZCgpOworCiAgICAgdm9pZCBh
Y3Rpb25IYW5kbGVyc1VwZGF0ZWQoKTsKICAgICBib29sIGhhc0FjdGlvbkhhbmRsZXIoTWVkaWFT
ZXNzaW9uQWN0aW9uKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8TWVkaWFTZXNz
aW9uQWN0aW9uSGFuZGxlcj4gaGFuZGxlckZvckFjdGlvbihNZWRpYVNlc3Npb25BY3Rpb24pIGNv
bnN0OworICAgIGJvb2wgaGFzQWN0aXZlQWN0aW9uSGFuZGxlcnMoKSBjb25zdCB7IHJldHVybiAh
bV9hY3Rpb25IYW5kbGVycy5pc0VtcHR5KCk7IH0KIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBN
ZWRpYVNlc3Npb24oTmF2aWdhdG9yJik7CiAKKyAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNv
bnN0IHsgcmV0dXJuICptX2xvZ2dlci5nZXQoKTsgfQorICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7IH0KKwogICAgIFdlYWtQdHI8
TmF2aWdhdG9yPiBtX25hdmlnYXRvcjsKICAgICBSZWZQdHI8TWVkaWFNZXRhZGF0YT4gbV9tZXRh
ZGF0YTsKICAgICBNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRlIG1fcGxheWJhY2tTdGF0ZSB7IE1l
ZGlhU2Vzc2lvblBsYXliYWNrU3RhdGU6Ok5vbmUgfTsKQEAgLTcxLDYgKzgwLDIwIEBAIHByaXZh
dGU6CiAgICAgT3B0aW9uYWw8ZG91YmxlPiBtX2xhc3RSZXBvcnRlZFBvc2l0aW9uOwogICAgIE1v
bm90b25pY1RpbWUgbV90aW1lQXRMYXN0UG9zaXRpb25VcGRhdGU7CiAgICAgSGFzaE1hcDxNZWRp
YVNlc3Npb25BY3Rpb24sIFJlZlB0cjxNZWRpYVNlc3Npb25BY3Rpb25IYW5kbGVyPiwgV1RGOjpJ
bnRIYXNoPE1lZGlhU2Vzc2lvbkFjdGlvbj4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8TWVk
aWFTZXNzaW9uQWN0aW9uPj4gbV9hY3Rpb25IYW5kbGVyczsKKyAgICBSZWZQdHI8Y29uc3QgTG9n
Z2VyPiBtX2xvZ2dlcjsKKyAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7Cit9OworCit9
CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBMb2dBcmd1bWVudDxXZWJD
b3JlOjpNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRlPiB7CisgICAgc3RhdGljIFN0cmluZyB0b1N0
cmluZyhXZWJDb3JlOjpNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRlIHN0YXRlKSB7IHJldHVybiBj
b252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhzdGF0ZSk7IH0KK307CisKK3RlbXBsYXRlPD4gc3Ry
dWN0IExvZ0FyZ3VtZW50PFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkFjdGlvbj4geworICAgIHN0YXRp
YyBTdHJpbmcgdG9TdHJpbmcoV2ViQ29yZTo6TWVkaWFTZXNzaW9uQWN0aW9uIGFjdGlvbikgeyBy
ZXR1cm4gY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoYWN0aW9uKTsgfQogfTsKIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL01lZGlhUmVtb3RlU1BJLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvTWVkaWFSZW1vdGVTUEkuaAppbmRleCA2
NTE1YzBkNzZmMDVkYTAwNjE4MGEyYTU3NTEzZWYyZTY0NWM4MWU0Li45MzhkMTY2ZTk3MWExYWQz
YTRkMzRjMDIyYWExOTU0NTk3NzNmYjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3NwaS9tYWMvTWVkaWFSZW1vdGVTUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L3NwaS9tYWMvTWVkaWFSZW1vdGVTUEkuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05Miw2ICs5Miw4IEBAIGVudW0gewogdHlwZWRlZiB1
aW50MzJfdCBNUk5vd1BsYXlpbmdDbGllbnRWaXNpYmlsaXR5OwogCiB0eXBlZGVmIHVpbnQzMl90
IE1STWVkaWFSZW1vdGVFcnJvcjsKK3R5cGVkZWYgdWludDMyX3QgTVJTZW5kQ29tbWFuZEFwcE9w
dGlvbnM7Cit0eXBlZGVmIHVpbnQzMl90IE1SU2VuZENvbW1hbmRFcnJvcjsKIHR5cGVkZWYgc3Ry
dWN0IF9NUk9yaWdpbiAqTVJPcmlnaW5SZWY7CiB0eXBlZGVmIHN0cnVjdCBfTVJNZWRpYVJlbW90
ZUNvbW1hbmRJbmZvICpNUk1lZGlhUmVtb3RlQ29tbWFuZEluZm9SZWY7CiB0eXBlZGVmIHZvaWQg
Kk1STm93UGxheWluZ0NsaWVudFJlZjsKQEAgLTEwMyw4ICsxMDUsMTAgQEAgV1RGX0VYVEVSTl9D
X0JFR0lOCiAKIHZvaWQqIE1STWVkaWFSZW1vdGVBZGRBc3luY0NvbW1hbmRIYW5kbGVyQmxvY2so
TVJNZWRpYVJlbW90ZUFzeW5jQ29tbWFuZEhhbmRsZXJCbG9jayk7CiB2b2lkIE1STWVkaWFSZW1v
dGVSZW1vdmVDb21tYW5kSGFuZGxlckJsb2NrKHZvaWQgKm9ic2VydmVyKTsKLXZvaWQgTVJNZWRp
YVJlbW90ZVNldFN1cHBvcnRlZENvbW1hbmRzKENGQXJyYXlSZWYgY29tbWFuZHMsIE1ST3JpZ2lu
UmVmLCBkaXNwYXRjaF9xdWV1ZV90IHJlcGx5USwgdm9pZCheY29tcGxldGlvbikoTVJNZWRpYVJl
bW90ZUVycm9yIGVycikpOwordm9pZCBNUk1lZGlhUmVtb3RlU2V0U3VwcG9ydGVkQ29tbWFuZHMo
Q0ZBcnJheVJlZiwgTVJPcmlnaW5SZWYsIGRpc3BhdGNoX3F1ZXVlX3QsIHZvaWQoXmNvbXBsZXRp
b24pKE1STWVkaWFSZW1vdGVFcnJvcikpOwordm9pZCBNUk1lZGlhUmVtb3RlR2V0U3VwcG9ydGVk
Q29tbWFuZHNGb3JPcmlnaW4oTVJPcmlnaW5SZWYsIGRpc3BhdGNoX3F1ZXVlX3QsIHZvaWQoXmNv
bXBsZXRpb24pKENGQXJyYXlSZWYpKTsKIHZvaWQgTVJNZWRpYVJlbW90ZVNldE5vd1BsYXlpbmdW
aXNpYmlsaXR5KE1ST3JpZ2luUmVmLCBNUk5vd1BsYXlpbmdDbGllbnRWaXNpYmlsaXR5KTsKK0Jv
b2xlYW4gTVJNZWRpYVJlbW90ZVNlbmRDb21tYW5kVG9BcHAoTVJNZWRpYVJlbW90ZUNvbW1hbmQs
IENGRGljdGlvbmFyeVJlZiwgTVJPcmlnaW5SZWYsIENGU3RyaW5nUmVmLCBNUlNlbmRDb21tYW5k
QXBwT3B0aW9ucywgZGlzcGF0Y2hfcXVldWVfdCwgdm9pZCheY29tcGxldGlvbikoTVJTZW5kQ29t
bWFuZEVycm9yLCBDRkFycmF5UmVmKSk7CiAKICNwcmFnbWEgbWFyayAtIE1ST3JpZ2luCiAKQEAg
LTEyOSw0ICsxMzMsMTAgQEAgQ0ZBcnJheVJlZiBNUk1lZGlhUmVtb3RlQ29weVBpY2thYmxlUm91
dGVzKCk7CiAKIFdURl9FWFRFUk5fQ19FTkQKIAorQGludGVyZmFjZSBNUkNvbW1hbmRJbmZvIDog
TlNPYmplY3QKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTVJNZWRpYVJlbW90ZUNv
bW1hbmQgY29tbWFuZDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgZ2V0dGVyPWlz
RW5hYmxlZCkgQk9PTCBlbmFibGVkOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBu
dWxsYWJsZSwgY29weSkgTlNEaWN0aW9uYXJ5ICpvcHRpb25zOworQGVuZAorCiAjZW5kaWYgLy8g
VVNFKEFQUExFX0lOVEVSTkFMX1NESykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmYTZjMjlmNGI0YmFmZjQxYjcwOGYyMjBiNzYw
ZmM5MmVlNDJkMGExLi5iZDNiYzE2MGQ4YmFmNDdiNDE2MjI4ODA3NzY1NjAyYjVkMmI0NDkyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xMzksNiArMTM5LDEwIEBACiAJCTA3N0FGMTQzMThGNEIxQkIwMDAxRUQ2MSAvKiBTZXJp
YWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwNzdBRjE0MTE4RjRCMUJCMDAwMUVENjEgLyogU2VyaWFsaXplZFBs
YXRmb3JtRGF0YUN1ZU1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTA3N0I2NDEzMUI5NEYxMkUwMDNFOUFENSAvKiBNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyTW9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDc3QjY0MTExQjk0RjEyRTAwM0U5QUQ1IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJNb2NrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMDc3QjY0MTcxQjk1RjcwMzAwM0U5QUQ1IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzdCNjQxNTFC
OTVGNzAzMDAzRTlBRDUgLyogTWVkaWFQbGF5YmFja1RhcmdldE1vY2suaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwNzgyODk0ODI1QzIzRkU1MDBB
N0JBMDMgLyogTWVkaWFNZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0REREVBMkQyNTM4Q0UwNDAwQTEzMDBDIC8qIE1lZGlhTWV0YWRhdGEu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwNzgy
ODk0QTI1QzM2RkNGMDBBN0JBMDMgLyogTWVkaWFTZXNzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRERERUEyMzI1MzhDRDgwMDBBMTMwMEMgLyog
TWVkaWFTZXNzaW9uLmggKi87IH07CisJCTA3ODI4OTRCMjVDMzZGRUQwMEE3QkEwMyAvKiBNZWRp
YUltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
RERERUEzMjI1MzhDRTM1MDBBMTMwMEMgLyogTWVkaWFJbWFnZS5oICovOyB9OworCQkwNzgyODk0
QzI1QzM3MDBCMDBBN0JBMDMgLyogTWVkaWFNZXRhZGF0YUluaXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERERFQTMwMjUzOENFMUUwMEExMzAwQyAv
KiBNZWRpYU1ldGFkYXRhSW5pdC5oICovOyB9OwogCQkwNzgzMjI4NTE4MDEzRUQ4MDA5OTlFMEMg
LyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDc4MzIyODMxODAxM0VEODAwOTk5RTBDIC8qIE1lZGlhU3RyZWFt
QXVkaW9Tb3VyY2UuaCAqLzsgfTsKIAkJMDc4NDYzNDMxNDVCMTUxQTAwQTU4REYxIC8qIEpTVHJh
Y2tFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDc4NDYzNDExNDVCMTUxQTAwQTU4REYxIC8qIEpTVHJhY2tFdmVudC5oICovOyB9OwogCQkwNzg0
NjM4NTE0NUIxQjhFMDBBNThERjEgLyogSlNUcmFja0N1c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc4NDYzODQxNDVCMUI4RTAwQTU4REYxIC8q
IEpTVHJhY2tDdXN0b20uaCAqLzsgfTsKQEAgLTMzNzAyLDEwICszMzcwNiwxMyBAQAogCQkJCUU0
NDYxM0FEMENENjMzMTAwMEZBREE3NSAvKiBNZWRpYUVycm9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0RTE5NTkyMjBBMzlEQUJBMDAyMjBGRTUgLyogTWVkaWFGZWF0dXJlTmFtZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTA3QTZEMUVDMTQ5MTEzNzcwMDA1MUQwQyAvKiBNZWRpYUZyYWdtZW50VVJJ
UGFyc2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzgyODk0QjI1QzM2RkVEMDBBN0JBMDMgLyog
TWVkaWFJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RGNEI3MUExRTAxRDNEMDAwRTIzNUEy
IC8qIE1lZGlhS2V5U2Vzc2lvblR5cGUuaWRsIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RGNEI3Mjgx
RTAzQzU3MzAwRTIzNUEyIC8qIE1lZGlhS2V5c1JlcXVpcmVtZW50LmlkbCBpbiBIZWFkZXJzICov
LAogCQkJCUNERjRCNzE4MUUwMUNCOTEwMEUyMzVBMiAvKiBNZWRpYUtleXNSZXN0cmljdGlvbnMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE4RUE4MDBFMEExOTUxNkUwMEE4RUY1RiAvKiBNZWRpYUxp
c3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3ODI4OTQ4MjVDMjNGRTUwMEE3QkEwMyAvKiBNZWRp
YU1ldGFkYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzgyODk0QzI1QzM3MDBCMDBBN0JBMDMg
LyogTWVkaWFNZXRhZGF0YUluaXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTVFQkI4OTMxMUM3Nzc3
RkYwMEM2NUQ0MSAvKiBNZWRpYVBheWxvYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3RTNERkQx
MUE5RTc4NjUwMDc2NENBOCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0LmggaW4gSGVhZGVycyAqLywK
IAkJCQkwNzkyMTY1NTFBQTU2MEFBMDBBM0MwNDkgLyogTWVkaWFQbGF5YmFja1RhcmdldENsaWVu
dC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMzc0Niw2ICszMzc1Myw3IEBACiAJCQkJMUIxMjREOEQx
RDM4MEI3MDAwRUNERkIwIC8qIE1lZGlhU2FtcGxlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQ0RCRUFFQUQxOUQ5MkI2QzAwQkVCQTg4IC8qIE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpD
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTdEMjc1RTFFQUM1Nzk4MDBCRjAxRTcgLyogTWVkaWFT
ZWxlY3Rpb25PcHRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTA3ODI4OTRBMjVDMzZGQ0YwMEE3
QkEwMyAvKiBNZWRpYVNlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNkVDQUU1MjVCNThD
QzQwMEIzNERBNSAvKiBNZWRpYVNlc3Npb25Hcm91cElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUNEQTk1OTNGMjQxMkJBRTAwMDkxMEVFRiAvKiBNZWRpYVNlc3Npb25IZWxwZXJJT1Mu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQxNDQ2MEEyMjQxMjk5NDUwMDgxNEJFNyAvKiBNZWRpYVNl
c3Npb25JZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCmluZGV4IGE2YTU0YTYxMTQ1NWU0YmZhOTllODZmNjAzYzUyOTBkZjcw
MGQxMDkuLjE1MjY2OTIzN2QzZWMwNGVlNzU4NGVkYjE5NTMwNDVlZDk2YWZkNjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc1MDUsNiArNzUwNSw3IEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vCiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBj
b21tYW5kKTsKIAogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIHJlbW90ZUNvbnRyb2xVc2VyR2Vz
dHVyZShQcm9jZXNzaW5nVXNlckdlc3R1cmUsICZkb2N1bWVudCgpKTsKKyAgICBkb3VibGUgb2Zm
c2V0ID0gMTA7CiAgICAgc3dpdGNoIChjb21tYW5kKSB7CiAgICAgY2FzZSBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6UGxheUNvbW1hbmQ6CiAgICAgICAgIHBsYXkoKTsKQEAgLTc1MjYsNiArNzUyNywx
NiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFu
ZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtbwogICAgIGNhc2UgUGxhdGZvcm1NZWRpYVNlc3Np
b246OkVuZFNlZWtpbmdGb3J3YXJkQ29tbWFuZDoKICAgICAgICAgZW5kU2Nhbm5pbmcoKTsKICAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEZvcndhcmRD
b21tYW5kOgorICAgICAgICBpZiAoYXJndW1lbnQpCisgICAgICAgICAgICBvZmZzZXQgPSBhcmd1
bWVudC0+YXNEb3VibGU7CisgICAgICAgIGhhbmRsZVNlZWtUb1BsYXliYWNrUG9zaXRpb24ob2Zm
c2V0KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2tp
cEJhY2t3YXJkQ29tbWFuZDoKKyAgICAgICAgaWYgKGFyZ3VtZW50KQorICAgICAgICAgICAgb2Zm
c2V0ID0gYXJndW1lbnQtPmFzRG91YmxlOworICAgICAgICBoYW5kbGVTZWVrVG9QbGF5YmFja1Bv
c2l0aW9uKDAgLSBvZmZzZXQpOworICAgICAgICBicmVhazsKICAgICBjYXNlIFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpTZWVrVG9QbGF5YmFja1Bvc2l0aW9uQ29tbWFuZDoKICAgICAgICAgQVNTRVJU
KGFyZ3VtZW50KTsKICAgICAgICAgaWYgKGFyZ3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKaW5kZXggNThkNDJlY2U0MTI2ZDljNmIzNDE4ODBjMGRh
NzAzM2E0OTBjZTA1Yy4uNGFlYmJkNmFkNzhmNThmMzI5MDUzZTA3MmZkNTBiMWZlN2M0MjBjMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU0LDYgKzU0
LDEyIEBACiAjaW5jbHVkZSAiU291cmNlQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oPgogCisjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCisjaW5jbHVkZSAiTWVk
aWFNZXRhZGF0YS5oIgorI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgorI2luY2x1ZGUgIk5hdmln
YXRvck1lZGlhU2Vzc2lvbi5oIgorI2VuZGlmCisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
I2luY2x1ZGUgIkF1ZGlvU2Vzc2lvbi5oIgogI2luY2x1ZGUgIlJ1bnRpbWVBcHBsaWNhdGlvbkNo
ZWNrcy5oIgpAQCAtMTAyMSw2ICsxMDI3LDcwIEBAIGJvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6
YWxsb3dzUGxheWJhY2tDb250cm9sc0ZvckF1dG9wbGF5aW5nQXVkaW8oKSBjb25zdAogICAgIHJl
dHVybiBwYWdlICYmIHBhZ2UtPmFsbG93c1BsYXliYWNrQ29udHJvbHNGb3JBdXRvcGxheWluZ0F1
ZGlvKCk7CiB9CiAKKyNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKK3ZvaWQgTWVkaWFFbGVtZW50
U2Vzc2lvbjo6ZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFJlbW90ZUNvbnRyb2xDb21t
YW5kVHlwZSBjb21tYW5kVHlwZSwgY29uc3QgUmVtb3RlQ29tbWFuZEFyZ3VtZW50KiBhcmd1bWVu
dCkKK3sKKyAgICBhdXRvKiB3aW5kb3cgPSBtX2VsZW1lbnQuZG9jdW1lbnQoKS5kb21XaW5kb3co
KTsKKyAgICBhdXRvKiBzZXNzaW9uID0gd2luZG93ID8gJk5hdmlnYXRvck1lZGlhU2Vzc2lvbjo6
bWVkaWFTZXNzaW9uKHdpbmRvdy0+bmF2aWdhdG9yKCkpIDogbnVsbHB0cjsKKyAgICBpZiAoIXNl
c3Npb24gfHwgIXNlc3Npb24tPmhhc0FjdGl2ZUFjdGlvbkhhbmRsZXJzKCkpIHsKKyAgICAgICAg
UGxhdGZvcm1NZWRpYVNlc3Npb246OmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChjb21t
YW5kVHlwZSwgYXJndW1lbnQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgTWVkaWFT
ZXNzaW9uQWN0aW9uRGV0YWlscyBhY3Rpb25EZXRhaWxzOworICAgIHN3aXRjaCAoY29tbWFuZFR5
cGUpIHsKKyAgICBjYXNlIE5vQ29tbWFuZDoKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgUGxh
eUNvbW1hbmQ6CisgICAgICAgIGFjdGlvbkRldGFpbHMuYWN0aW9uID0gTWVkaWFTZXNzaW9uQWN0
aW9uOjpQbGF5OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBhdXNlQ29tbWFuZDoKKyAgICAg
ICAgYWN0aW9uRGV0YWlscy5hY3Rpb24gPSBNZWRpYVNlc3Npb25BY3Rpb246OlBhdXNlOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFN0b3BDb21tYW5kOgorICAgICAgICBhY3Rpb25EZXRhaWxz
LmFjdGlvbiA9IE1lZGlhU2Vzc2lvbkFjdGlvbjo6U3RvcDsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBUb2dnbGVQbGF5UGF1c2VDb21tYW5kOgorICAgICAgICBhY3Rpb25EZXRhaWxzLmFjdGlv
biA9IG1fZWxlbWVudC5wYXVzZWQoKSA/IE1lZGlhU2Vzc2lvbkFjdGlvbjo6UGxheSA6IE1lZGlh
U2Vzc2lvbkFjdGlvbjo6UGF1c2U7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2Vla1RvUGxh
eWJhY2tQb3NpdGlvbkNvbW1hbmQ6CisgICAgICAgIEFTU0VSVChhcmd1bWVudCk7CisgICAgICAg
IGlmICghYXJndW1lbnQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGFjdGlvbkRldGFp
bHMuYWN0aW9uID0gTWVkaWFTZXNzaW9uQWN0aW9uOjpTZWVrdG87CisgICAgICAgIGFjdGlvbkRl
dGFpbHMuc2Vla1RpbWUgPSBhcmd1bWVudC0+YXNEb3VibGU7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgU2tpcEZvcndhcmRDb21tYW5kOgorICAgICAgICBpZiAoYXJndW1lbnQpCisgICAgICAg
ICAgICBhY3Rpb25EZXRhaWxzLnNlZWtPZmZzZXQgPSBhcmd1bWVudC0+YXNEb3VibGU7CisgICAg
ICAgIGFjdGlvbkRldGFpbHMuYWN0aW9uID0gTWVkaWFTZXNzaW9uQWN0aW9uOjpTZWVrZm9yd2Fy
ZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTa2lwQmFja3dhcmRDb21tYW5kOgorICAgICAg
ICBpZiAoYXJndW1lbnQpCisgICAgICAgICAgICBhY3Rpb25EZXRhaWxzLnNlZWtPZmZzZXQgPSBh
cmd1bWVudC0+YXNEb3VibGU7CisgICAgICAgIGFjdGlvbkRldGFpbHMuYWN0aW9uID0gTWVkaWFT
ZXNzaW9uQWN0aW9uOjpTZWVrYmFja3dhcmQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTmV4
dFRyYWNrQ29tbWFuZDoKKyAgICAgICAgYWN0aW9uRGV0YWlscy5hY3Rpb24gPSBNZWRpYVNlc3Np
b25BY3Rpb246Ok5leHR0cmFjazsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQcmV2aW91c1Ry
YWNrQ29tbWFuZDoKKyAgICAgICAgYWN0aW9uRGV0YWlscy5hY3Rpb24gPSBNZWRpYVNlc3Npb25B
Y3Rpb246OlByZXZpb3VzdHJhY2s7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQmVnaW5TZWVr
aW5nQmFja3dhcmRDb21tYW5kOgorICAgIGNhc2UgRW5kU2Vla2luZ0JhY2t3YXJkQ29tbWFuZDoK
KyAgICBjYXNlIEJlZ2luU2Vla2luZ0ZvcndhcmRDb21tYW5kOgorICAgIGNhc2UgRW5kU2Vla2lu
Z0ZvcndhcmRDb21tYW5kOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIAorICAgIGlmIChhdXRvIGhhbmRsZXIgPSBzZXNzaW9uLT5oYW5k
bGVyRm9yQWN0aW9uKGFjdGlvbkRldGFpbHMuYWN0aW9uKSkKKyAgICAgICAgaGFuZGxlci0+aGFu
ZGxlRXZlbnQoYWN0aW9uRGV0YWlscyk7CisgICAgZWxzZQorICAgICAgICBBTFdBWVNfTE9HKExP
R0lERU5USUZJRVIsICJJZ25vcmluZyBjb21tYW5kLCBubyBhY3Rpb24gaGFuZGxlciByZWdpc3Rl
cmVkIGZvciAiLCBhY3Rpb25EZXRhaWxzLmFjdGlvbik7Cit9CisjZW5kaWYKKwogT3B0aW9uYWw8
Tm93UGxheWluZ0luZm8+IE1lZGlhRWxlbWVudFNlc3Npb246Om5vd1BsYXlpbmdJbmZvKCkgY29u
c3QKIHsKICAgICBhdXRvKiBwYWdlID0gbV9lbGVtZW50LmRvY3VtZW50KCkucGFnZSgpOwpAQCAt
MTAzMiw3ICsxMTAyLDE5IEBAIE9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvPiBNZWRpYUVsZW1lbnRT
ZXNzaW9uOjpub3dQbGF5aW5nSW5mbygpIGNvbnN0CiAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKGN1
cnJlbnRUaW1lKSB8fCAhc3VwcG9ydHNTZWVraW5nKQogICAgICAgICBjdXJyZW50VGltZSA9IE1l
ZGlhUGxheWVyOjppbnZhbGlkVGltZSgpOwogCi0gICAgcmV0dXJuIE5vd1BsYXlpbmdJbmZvIHsg
bV9lbGVtZW50Lm1lZGlhU2Vzc2lvblRpdGxlKCksIG1fZWxlbWVudC5zb3VyY2VBcHBsaWNhdGlv
bklkZW50aWZpZXIoKSwgZHVyYXRpb24sIGN1cnJlbnRUaW1lLCBzdXBwb3J0c1NlZWtpbmcsIG1f
ZWxlbWVudC5tZWRpYVNlc3Npb25VbmlxdWVJZGVudGlmaWVyKCksIGlzUGxheWluZywgYWxsb3dz
Tm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSB9OworICAgIFN0cmluZyB0aXRsZTsKKyAgICBT
dHJpbmcgYXJ0aXN0OworICAgIFN0cmluZyBhbGJ1bTsKKyAgICBhdXRvKiB3aW5kb3cgPSBtX2Vs
ZW1lbnQuZG9jdW1lbnQoKS5kb21XaW5kb3coKTsKKyAgICBhdXRvKiBzZXNzaW9uTWV0YWRhdGEg
PSB3aW5kb3cgPyBOYXZpZ2F0b3JNZWRpYVNlc3Npb246Om1lZGlhU2Vzc2lvbih3aW5kb3ctPm5h
dmlnYXRvcigpKS5tZXRhZGF0YSgpIDogbnVsbHB0cjsKKyAgICBpZiAoc2Vzc2lvbk1ldGFkYXRh
KSB7CisgICAgICAgIHRpdGxlID0gc2Vzc2lvbk1ldGFkYXRhLT50aXRsZSgpOworICAgICAgICBh
cnRpc3QgPSBzZXNzaW9uTWV0YWRhdGEtPmFydGlzdCgpOworICAgICAgICBhbGJ1bSA9IHNlc3Np
b25NZXRhZGF0YS0+YWxidW0oKTsKKyAgICB9IGVsc2UKKyAgICAgICAgdGl0bGUgPSBtX2VsZW1l
bnQubWVkaWFTZXNzaW9uVGl0bGUoKTsKKworICAgIHJldHVybiBOb3dQbGF5aW5nSW5mbyB7IFdU
Rk1vdmUodGl0bGUpLCBXVEZNb3ZlKGFydGlzdCksIFdURk1vdmUoYWxidW0pLCBtX2VsZW1lbnQu
c291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKCksIGR1cmF0aW9uLCBjdXJyZW50VGltZSwgc3Vw
cG9ydHNTZWVraW5nLCBtX2VsZW1lbnQubWVkaWFTZXNzaW9uVW5pcXVlSWRlbnRpZmllcigpLCBp
c1BsYXlpbmcsIGFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHkgfTsKIH0KIAogdm9p
ZCBNZWRpYUVsZW1lbnRTZXNzaW9uOjp1cGRhdGVNZWRpYVVzYWdlSWZDaGFuZ2VkKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmgKaW5kZXggMWFiNDYyZjQ0NjFhNDRm
Y2NlY2VkOWZiZDEyM2I2ZTc1MmI3NzQyMy4uZDcxZTRkYmI0ZjAzYzQzNmVmMzRlYzk0Y2VlNDcw
MmFlYTJhMDFiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRT
ZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmgK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0xNzQsNiArMTc0LDEwIEBAIHB1YmxpYzoKICAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05h
bWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiTWVkaWFFbGVtZW50U2Vzc2lvbiI7IH0KICNlbmRp
ZgogCisjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCisgICAgdm9pZCBkaWRSZWNlaXZlUmVtb3Rl
Q29udHJvbENvbW1hbmQoUmVtb3RlQ29udHJvbENvbW1hbmRUeXBlLCBjb25zdCBSZW1vdGVDb21t
YW5kQXJndW1lbnQqID0gbnVsbHB0cikgZmluYWw7CisjZW5kaWYKKwogcHJpdmF0ZToKIAogI2lm
IEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGll
bnQuaAppbmRleCA2NzAxYTJkZTA3NDAyODQzNWE0YmY3MzZiZmI2ZmYyOWEwNDhmZGI1Li4xYWQ0
M2ZlNTM2YWQzY2FjYmQyYzRlN2UwNGIxNTAyNjdlOWU4YjAxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hy
b21lQ2xpZW50LmgKQEAgLTEwMSw3ICsxMDEsNiBAQCBjbGFzcyBIVE1MTWVkaWFFbGVtZW50Owog
Y2xhc3MgSFRNTFZpZGVvRWxlbWVudDsKIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CiBjbGFzcyBJbnRS
ZWN0OwotY2xhc3MgTWVkaWFTZXNzaW9uTWV0YWRhdGE7CiBjbGFzcyBOYXZpZ2F0aW9uQWN0aW9u
OwogY2xhc3MgTm9kZTsKIGNsYXNzIFBhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmNwcAppbmRleCBhZjM0ZDUwZDNhNWE4YTY1ZTViYzk1
ZTg3NzUzMWE3YWJmNDQ3OTY3Li41YjJhOTFmMmM1YjQ4MGZmZjVjZDg0MjI5NjMxMjI1ODQ4NTE1
Y2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlz
dGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0
ZW5lci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzcsNCArMzcsMjUgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNvbW1hbmRMaXN0
ZW5lcj4gUmVtb3RlQ29tbWFuZExpc3RlbmVyOjpjcmVhdGUoUmVtb3RlQ29tbWEKIAogI2VuZGlm
CiAKK3ZvaWQgUmVtb3RlQ29tbWFuZExpc3RlbmVyOjpzY2hlZHVsZVN1cHBvcnRlZENvbW1hbmRz
VXBkYXRlKCkKK3sKKyAgICBpZiAoIW1fdXBkYXRlQ29tbWFuZHNUYXNrLmhhc1BlbmRpbmdUYXNr
KCkpIHsKKyAgICAgICAgbV91cGRhdGVDb21tYW5kc1Rhc2suc2NoZWR1bGVUYXNrKFt0aGlzXSAo
KSAgeworICAgICAgICAgICAgdXBkYXRlU3VwcG9ydGVkQ29tbWFuZHMoKTsKKyAgICAgICAgfSk7
CisgICAgfQorfQorCit2b2lkIFJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6YWRkU3VwcG9ydGVkQ29t
bWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlIGNvbW1h
bmQpCit7CisgICAgbV9yZWdpc3RlcmVkQ29tbWFuZHMuYWRkKGNvbW1hbmQpOworICAgIHNjaGVk
dWxlU3VwcG9ydGVkQ29tbWFuZHNVcGRhdGUoKTsKK30KKwordm9pZCBSZW1vdGVDb21tYW5kTGlz
dGVuZXI6OnJlbW92ZVN1cHBvcnRlZENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90
ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21tYW5kKQoreworICAgIG1fcmVnaXN0ZXJlZENvbW1hbmRz
LnJlbW92ZShjb21tYW5kKTsKKyAgICBzY2hlZHVsZVN1cHBvcnRlZENvbW1hbmRzVXBkYXRlKCk7
Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlbW90ZUNvbW1h
bmRMaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3Rl
bmVyLmgKaW5kZXggMmI0MzRhZWY2ZTc1ZWEzNTBjODg4NWYwZWVmNzBjNTk2ZTAxMWU5Ny4uNjdh
Y2JhYTg2NGQxMTZiZjAyMzExYjE0MzQ4ODAzNGJhMDZjOTZiZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmgKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNiArMjYsNyBAQAogI2lm
bmRlZiBSZW1vdGVDb21tYW5kTGlzdGVuZXJfaAogI2RlZmluZSBSZW1vdGVDb21tYW5kTGlzdGVu
ZXJfaAogCisjaW5jbHVkZSAiRGVmZXJyYWJsZVRhc2suaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NSwxMiArNDYsMjAgQEAg
cHVibGljOgogICAgIFJlbW90ZUNvbW1hbmRMaXN0ZW5lcihSZW1vdGVDb21tYW5kTGlzdGVuZXJD
bGllbnQmIGNsaWVudCkgOiBtX2NsaWVudChjbGllbnQpIHsgfQogICAgIHZpcnR1YWwgflJlbW90
ZUNvbW1hbmRMaXN0ZW5lcigpID0gZGVmYXVsdDsKIAorICAgIHZvaWQgYWRkU3VwcG9ydGVkQ29t
bWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlKTsKKyAg
ICB2b2lkIHJlbW92ZVN1cHBvcnRlZENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90
ZUNvbnRyb2xDb21tYW5kVHlwZSk7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVN1cHBvcnRlZENv
bW1hbmRzKCkgeyB9CisgICAgdm9pZCBzY2hlZHVsZVN1cHBvcnRlZENvbW1hbmRzVXBkYXRlKCk7
CiAKICAgICBSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQmIGNsaWVudCgpIGNvbnN0IHsgcmV0
dXJuIG1fY2xpZW50OyB9CiAKIHByb3RlY3RlZDoKICAgICBSZW1vdGVDb21tYW5kTGlzdGVuZXJD
bGllbnQmIG1fY2xpZW50OworCisgICAgdXNpbmcgUmVtb3RlQ29tbWFuZHNTZXQgPSBIYXNoU2V0
PFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIFdURjo6SW50
SGFzaDxQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlPiwgV1RG
OjpTdHJvbmdFbnVtSGFzaFRyYWl0czxQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJv
bENvbW1hbmRUeXBlPj47CisgICAgUmVtb3RlQ29tbWFuZHNTZXQgbV9yZWdpc3RlcmVkQ29tbWFu
ZHM7CisKKyAgICBEZWZlcnJhYmxlVGFzazxUaW1lcj4gbV91cGRhdGVDb21tYW5kc1Rhc2s7CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5
aW5nSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8u
aAppbmRleCA2N2U5MWUyMmRmOGYwMGRiNDQ1ODJlOTgwZmI2MjJhOGEwNzg5MGU1Li43NTQ4Mjdh
YTYwZjI5NTA3ZGUzMTdhYmRjNzcyN2YxYTE4ZjRkYmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsNiArMzIsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHN0cnVjdCBOb3dQbGF5aW5nSW5mbyB7CiAgICAgU3RyaW5nIHRpdGxlOwor
ICAgIFN0cmluZyBhcnRpc3Q7CisgICAgU3RyaW5nIGFsYnVtOwogICAgIFN0cmluZyBzb3VyY2VB
cHBsaWNhdGlvbklkZW50aWZpZXI7CiAgICAgZG91YmxlIGR1cmF0aW9uIHsgMCB9OwogICAgIGRv
dWJsZSBjdXJyZW50VGltZSB7IDAgfTsKQEAgLTU1LDYgKzU3LDE0IEBAIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IGlubGluZSBPcHRpb25hbDxOb3dQbGF5aW5nSW5mbz4gTm93UGxheWluZ0luZm86
OmRlY29kZShECiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0aXRsZSkpCiAgICAgICAgIHJldHVy
biB7IH07CiAKKyAgICBTdHJpbmcgYXJ0aXN0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXJ0
aXN0KSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIFN0cmluZyBhbGJ1bTsKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGFsYnVtKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKwogICAgIFN0cmlu
ZyBzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXI7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShz
b3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIpKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtODMs
NyArOTMsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUgT3B0aW9uYWw8Tm93UGxh
eWluZ0luZm8+IE5vd1BsYXlpbmdJbmZvOjpkZWNvZGUoRAogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoYWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSkpCiAgICAgICAgIHJldHVybiB7
IH07CiAKLSAgICByZXR1cm4gTm93UGxheWluZ0luZm8geyBXVEZNb3ZlKHRpdGxlKSwgV1RGTW92
ZShzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIpLCBkdXJhdGlvbiwgY3VycmVudFRpbWUsIHN1
cHBvcnRzU2Vla2luZywgdW5pcXVlSWRlbnRpZmllciwgaXNQbGF5aW5nLCBhbGxvd3NOb3dQbGF5
aW5nQ29udHJvbHNWaXNpYmlsaXR5IH07CisgICAgcmV0dXJuIE5vd1BsYXlpbmdJbmZvIHsgV1RG
TW92ZSh0aXRsZSksIFdURk1vdmUoYXJ0aXN0KSwgV1RGTW92ZShhbGJ1bSksIFdURk1vdmUoc291
cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKSwgZHVyYXRpb24sIGN1cnJlbnRUaW1lLCBzdXBwb3J0
c1NlZWtpbmcsIHVuaXF1ZUlkZW50aWZpZXIsIGlzUGxheWluZywgYWxsb3dzTm93UGxheWluZ0Nv
bnRyb2xzVmlzaWJpbGl0eSB9OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5j
cHAKaW5kZXggOTI2OWFkMzkzZTYyMDU5MWM4MGI0MjE4ZjU5ODQ0NTlmZWY5ZmJhMy4uNDM3YzZk
MGE1MTY2NDU5MGE0NjliYWQxYmI1ODIyYzE5ODJlMTk0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTkz
LDYgKzkzLDEwIEBAIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlCiAgICAgICAgIE1BS0VfU1RBVElD
X1NUUklOR19JTVBMKCJCZWdpblNlZWtpbmdGb3J3YXJkQ29tbWFuZCIpLAogICAgICAgICBNQUtF
X1NUQVRJQ19TVFJJTkdfSU1QTCgiRW5kU2Vla2luZ0ZvcndhcmRDb21tYW5kIiksCiAgICAgICAg
IE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJTZWVrVG9QbGF5YmFja1Bvc2l0aW9uQ29tbWFuZCIp
LAorICAgICAgICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiU2tpcEZvcndhcmRDb21tYW5kIiks
CisgICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJTa2lwQmFja3dhcmRDb21tYW5kIiks
CisgICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJOZXh0VHJhY2tDb21tYW5kIiksCisg
ICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJQcmV2aW91c1RyYWNrQ29tbWFuZCIpLAog
ICAgIH07CiAgICAgc3RhdGljX2Fzc2VydCghc3RhdGljX2Nhc3Q8c2l6ZV90PihQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6Tm9Db21tYW5kKSwgIlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb0NvbW1hbmQg
aXMgbm90IDAgYXMgZXhwZWN0ZWQiKTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNp
emVfdD4oUGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXlDb21tYW5kKSA9PSAxLCAiUGxhdGZvcm1N
ZWRpYVNlc3Npb246OlBsYXlDb21tYW5kIGlzIG5vdCAxIGFzIGV4cGVjdGVkIik7CkBAIC0xMDQs
NiArMTA4LDEwIEBAIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlCiAgICAgc3RhdGljX2Fzc2VydChz
dGF0aWNfY2FzdDxzaXplX3Q+KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpCZWdpblNlZWtpbmdGb3J3
YXJkQ29tbWFuZCkgPT0gNywgIlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpCZWdpblNlZWtpbmdGb3J3
YXJkQ29tbWFuZCBpcyBub3QgNyBhcyBleHBlY3RlZCIpOwogICAgIHN0YXRpY19hc3NlcnQoc3Rh
dGljX2Nhc3Q8c2l6ZV90PihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW5kU2Vla2luZ0ZvcndhcmRD
b21tYW5kKSA9PSA4LCAiUGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZFNlZWtpbmdGb3J3YXJkQ29t
bWFuZCBpcyBub3QgOCBhcyBleHBlY3RlZCIpOwogICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nh
c3Q8c2l6ZV90PihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2Vla1RvUGxheWJhY2tQb3NpdGlvbkNv
bW1hbmQpID09IDksICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2Vla1RvUGxheWJhY2tQb3NpdGlv
bkNvbW1hbmQgaXMgbm90IDkgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRp
Y19jYXN0PHNpemVfdD4oUGxhdGZvcm1NZWRpYVNlc3Npb246OlNraXBGb3J3YXJkQ29tbWFuZCkg
PT0gMTAsICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEZvcndhcmRDb21tYW5kIGlzIG5vdCAx
MCBhcyBleHBlY3RlZCIpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEJhY2t3YXJkQ29tbWFuZCkgPT0gMTEsICJQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6U2tpcEJhY2t3YXJkQ29tbWFuZCBpcyBub3QgMTEgYXMgZXhwZWN0ZWQi
KTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oUGxhdGZvcm1NZWRpYVNl
c3Npb246Ok5leHRUcmFja0NvbW1hbmQpID09IDEyLCAiUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5l
eHRUcmFja0NvbW1hbmQgaXMgbm90IDEyIGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2Vy
dChzdGF0aWNfY2FzdDxzaXplX3Q+KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQcmV2aW91c1RyYWNr
Q29tbWFuZCkgPT0gMTMsICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UHJldmlvdXNUcmFja0NvbW1h
bmQgaXMgbm90IDEzIGFzIGV4cGVjdGVkIik7CiAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVf
dD4oY29tbWFuZCkgPCBXVEZfQVJSQVlfTEVOR1RIKHZhbHVlcykpOwogICAgIHJldHVybiB2YWx1
ZXNbc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb21tYW5kKV07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaAppbmRleCBjOTgxMjEz
ZDVlOTA3NmU0MmViOTBkYjRmM2ExMTU2YjUyZjRiNjI2Li5kOTUyZmE5NWIzZjI3MzcwZTYwYjRj
NjkxMmU5NTFhNWQ2OGQwZGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE0LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzAsOSArMTMwLDEzIEBAIHB1Ymxp
YzoKICAgICAgICAgQmVnaW5TZWVraW5nRm9yd2FyZENvbW1hbmQsCiAgICAgICAgIEVuZFNlZWtp
bmdGb3J3YXJkQ29tbWFuZCwKICAgICAgICAgU2Vla1RvUGxheWJhY2tQb3NpdGlvbkNvbW1hbmQs
CisgICAgICAgIFNraXBGb3J3YXJkQ29tbWFuZCwKKyAgICAgICAgU2tpcEJhY2t3YXJkQ29tbWFu
ZCwKKyAgICAgICAgTmV4dFRyYWNrQ29tbWFuZCwKKyAgICAgICAgUHJldmlvdXNUcmFja0NvbW1h
bmQsCiAgICAgfTsKICAgICBib29sIGNhblJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZHMoKSBj
b25zdDsKLSAgICB2b2lkIGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChSZW1vdGVDb250
cm9sQ29tbWFuZFR5cGUsIGNvbnN0IFJlbW90ZUNvbW1hbmRBcmd1bWVudCogYXJndW1lbnQgPSBu
dWxscHRyKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5k
KFJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgY29uc3QgUmVtb3RlQ29tbWFuZEFyZ3VtZW50KiA9
IG51bGxwdHIpOwogICAgIGJvb2wgc3VwcG9ydHNTZWVraW5nKCkgY29uc3Q7CiAKICAgICBlbnVt
IERpc3BsYXlUeXBlIDogdWludDhfdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oCmluZGV4IDFmY2Iz
MzQyNGYwYjU1ZmQyMjA5YjYzNGNlZGRlZTgzOWM0ZDdlZDYuLjIzZGQ5OWM2ZGVmMmZmNGRhZWY4
N2EwNTA5OGI3NzVhODA3ZGNhMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTUyLDYg
KzE1Miw5IEBAIHB1YmxpYzoKICAgICBib29sIGlzSW50ZXJydXB0ZWQoKSBjb25zdCB7IHJldHVy
biBtX2ludGVycnVwdGVkOyB9CiAgICAgYm9vbCBoYXNOb1Nlc3Npb24oKSBjb25zdDsKIAorICAg
IHZpcnR1YWwgdm9pZCBhZGRTdXBwb3J0ZWRDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpS
ZW1vdGVDb250cm9sQ29tbWFuZFR5cGUpIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlU3Vw
cG9ydGVkQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRU
eXBlKSB7IH07CisKIHByb3RlY3RlZDoKICAgICBmcmllbmQgY2xhc3MgUGxhdGZvcm1NZWRpYVNl
c3Npb247CiAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29j
b2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1h
bmFnZXJDb2NvYS5oCmluZGV4IDQxYmEyZDUwYzhhYTZhYWJhOTk2Mjc1OTVlZTA0MmRlNDZiNzJh
MmUuLmQ5ZTM3YWE4MzdkNjU4YTk3MmU2YmI0MzI2NmM2Y2RkNjBkZmE5NzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJD
b2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vz
c2lvbk1hbmFnZXJDb2NvYS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTg0LDYgKzg0LDkgQEAgcHJvdGVjdGVkOgogCiAgICAgR2VuZXJp
Y1Rhc2tRdWV1ZTxUaW1lcj4mIHRhc2tRdWV1ZSgpIHsgcmV0dXJuIG1fdGFza1F1ZXVlOyB9CiAK
KyAgICB2b2lkIGFkZFN1cHBvcnRlZENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90
ZUNvbnRyb2xDb21tYW5kVHlwZSkgZmluYWw7CisgICAgdm9pZCByZW1vdmVTdXBwb3J0ZWRDb21t
YW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUpIGZpbmFs
OworCiBwcml2YXRlOgogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGNvbnN0IGNoYXIq
IGxvZ0NsYXNzTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJNZWRpYVNlc3Npb25NYW5h
Z2VyQ29jb2EiOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9j
b2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KaW5kZXggMDZmZmZlNzA0
NDZlODFiYzExYmVlNmUzZTlkM2E4NjZiZjkyNzdjNy4uZDM0ZmM5MGQ3YWE4YjY0MDgwNzlhMzE0
ODhhYjAyZjgwYjdmMjg5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE1
Myw2ICsxNTMsOSBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6cHJlcGFyZVRvU2Vu
ZFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KCkKIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlckNv
Y29hOjpzY2hlZHVsZVNlc3Npb25TdGF0dXNVcGRhdGUoKQogewogICAgIG1fdGFza1F1ZXVlLmVu
cXVldWVUYXNrKFt0aGlzXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKG1fcmVtb3RlQ29tbWFu
ZExpc3RlbmVyKQorICAgICAgICAgICAgbV9yZW1vdGVDb21tYW5kTGlzdGVuZXItPnVwZGF0ZVN1
cHBvcnRlZENvbW1hbmRzKCk7CisKICAgICAgICAgdXBkYXRlTm93UGxheWluZ0luZm8oKTsKIAog
ICAgICAgICBmb3JFYWNoU2Vzc2lvbihbXSAoYXV0byYgc2Vzc2lvbikgewpAQCAtMjMyLDEwICsy
MzUsMjMgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OmNsaWVudENoYXJhY3Rlcmlz
dGljc0NoYW5nZWQoUGxhdGZvcm1NZWRpYVNlc3Npb24KIAogdm9pZCBNZWRpYVNlc3Npb25NYW5h
Z2VyQ29jb2E6OnNlc3Npb25DYW5Qcm9kdWNlQXVkaW9DaGFuZ2VkKCkKIHsKKyAgICBBTFdBWVNf
TE9HKExPR0lERU5USUZJRVIpOwogICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vz
c2lvbkNhblByb2R1Y2VBdWRpb0NoYW5nZWQoKTsKICAgICBzY2hlZHVsZVNlc3Npb25TdGF0dXNV
cGRhdGUoKTsKIH0KIAordm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OmFkZFN1cHBvcnRl
ZENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBj
b21tYW5kKQoreworICAgIGlmIChtX3JlbW90ZUNvbW1hbmRMaXN0ZW5lcikKKyAgICAgICAgbV9y
ZW1vdGVDb21tYW5kTGlzdGVuZXItPmFkZFN1cHBvcnRlZENvbW1hbmQoY29tbWFuZCk7Cit9CisK
K3ZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpyZW1vdmVTdXBwb3J0ZWRDb21tYW5kKFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgY29tbWFuZCkKK3sK
KyAgICBpZiAobV9yZW1vdGVDb21tYW5kTGlzdGVuZXIpCisgICAgICAgIG1fcmVtb3RlQ29tbWFu
ZExpc3RlbmVyLT5yZW1vdmVTdXBwb3J0ZWRDb21tYW5kKGNvbW1hbmQpOworfQorCiB2b2lkIE1l
ZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6Y2xlYXJOb3dQbGF5aW5nSW5mbygpCiB7CiAgICAgaWYg
KGNhbkxvYWRfTWVkaWFSZW1vdGVfTVJNZWRpYVJlbW90ZVNldE5vd1BsYXlpbmdWaXNpYmlsaXR5
KCkpCkBAIC0yNjAsNiArMjc2LDEyIEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpz
ZXROb3dQbGF5aW5nSW5mbyhib29sIHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uCiAKICAgICBh
dXRvIGluZm8gPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgNCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rp
b25hcnlWYWx1ZUNhbGxCYWNrcykpOwogCisgICAgaWYgKCFub3dQbGF5aW5nSW5mby5hcnRpc3Qu
aXNFbXB0eSgpKQorICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJN
ZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0aXN0LCBub3dQbGF5aW5nSW5mby5hcnRpc3QuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisKKyAgICBpZiAoIW5vd1BsYXlpbmdJbmZvLmFsYnVtLmlz
RW1wdHkoKSkKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVk
aWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FsYnVtLCBub3dQbGF5aW5nSW5mby5hbGJ1bS5jcmVhdGVD
RlN0cmluZygpLmdldCgpKTsKKwogICAgIGlmICghbm93UGxheWluZ0luZm8udGl0bGUuaXNFbXB0
eSgpKQogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJl
bW90ZU5vd1BsYXlpbmdJbmZvVGl0bGUsIG5vd1BsYXlpbmdJbmZvLnRpdGxlLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
TWVkaWFSZW1vdGVTb2Z0TGluay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL01lZGlh
UmVtb3RlU29mdExpbmsuaAppbmRleCA4YjVjZDIzZmIwMmFhMjY0NjYwZWRmMzgxNGU3N2ZiODYy
ZmQ1MGM4Li4wYWU4M2RkMDIyOTlhMmY5NmIyMTc3NDgyYjNjNzcyYmI2OTBkMDY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTWVkaWFSZW1vdGVTb2Z0TGluay5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9NZWRpYVJlbW90ZVNvZnRMaW5rLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTgs
NiArNTgsMTQgQEAgU09GVF9MSU5LX0ZVTkNUSU9OX01BWV9GQUlMX0ZPUl9IRUFERVIoV2ViQ29y
ZSwgTWVkaWFSZW1vdGUsIE1STWVkaWFSZW1vdGVTZXRQYXIKICNkZWZpbmUgTVJNZWRpYVJlbW90
ZVNldFBhcmVudEFwcGxpY2F0aW9uIHNvZnRMaW5rX01lZGlhUmVtb3RlX01STWVkaWFSZW1vdGVT
ZXRQYXJlbnRBcHBsaWNhdGlvbgogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoV2ViQ29y
ZSwgTWVkaWFSZW1vdGUsIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9UaXRsZSwgQ0ZTdHJp
bmdSZWYpOwogI2RlZmluZSBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvVGl0bGUgZ2V0X01l
ZGlhUmVtb3RlX2tNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9UaXRsZSgpCitTT0ZUX0xJTktf
Q09OU1RBTlRfRk9SX0hFQURFUihXZWJDb3JlLCBNZWRpYVJlbW90ZSwga01STWVkaWFSZW1vdGVO
b3dQbGF5aW5nSW5mb0FydGlzdCwgQ0ZTdHJpbmdSZWYpOworI2RlZmluZSBrTVJNZWRpYVJlbW90
ZU5vd1BsYXlpbmdJbmZvQXJ0aXN0IGdldF9NZWRpYVJlbW90ZV9rTVJNZWRpYVJlbW90ZU5vd1Bs
YXlpbmdJbmZvQXJ0aXN0KCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFdlYkNvcmUs
IE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQWxidW0sIENGU3RyaW5n
UmVmKTsKKyNkZWZpbmUga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FsYnVtIGdldF9NZWRp
YVJlbW90ZV9rTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQWxidW0oKQorU09GVF9MSU5LX0NP
TlNUQU5UX0ZPUl9IRUFERVIoV2ViQ29yZSwgTWVkaWFSZW1vdGUsIGtNUk1lZGlhUmVtb3RlTm93
UGxheWluZ0luZm9BcnR3b3JrRGF0YSwgQ0ZTdHJpbmdSZWYpOworI2RlZmluZSBrTVJNZWRpYVJl
bW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya0RhdGEgZ2V0X01lZGlhUmVtb3RlX2tNUk1lZGlhUmVt
b3RlTm93UGxheWluZ0luZm9BcnR3b3JrRGF0YSgpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hF
QURFUihXZWJDb3JlLCBNZWRpYVJlbW90ZSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0Fy
dHdvcmtNSU1FVHlwZSwgQ0ZTdHJpbmdSZWYpOworI2RlZmluZSBrTVJNZWRpYVJlbW90ZU5vd1Bs
YXlpbmdJbmZvQXJ0d29ya01JTUVUeXBlIGdldF9NZWRpYVJlbW90ZV9rTVJNZWRpYVJlbW90ZU5v
d1BsYXlpbmdJbmZvQXJ0d29ya01JTUVUeXBlKCkKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVB
REVSKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRHVy
YXRpb24sIENGU3RyaW5nUmVmKTsKICNkZWZpbmUga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5m
b0R1cmF0aW9uIGdldF9NZWRpYVJlbW90ZV9rTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRHVy
YXRpb24oKQogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoV2ViQ29yZSwgTWVkaWFSZW1v
dGUsIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9FbGFwc2VkVGltZSwgQ0ZTdHJpbmdSZWYp
OwpAQCAtNjgsNiArNzYsOCBAQCBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihXZWJDb3Jl
LCBNZWRpYVJlbW90ZSwga01STWVkaWFSZW1vdGVPcHRpb25QbGF5YmFjawogI2RlZmluZSBrTVJN
ZWRpYVJlbW90ZU9wdGlvblBsYXliYWNrUG9zaXRpb24gZ2V0X01lZGlhUmVtb3RlX2tNUk1lZGlh
UmVtb3RlT3B0aW9uUGxheWJhY2tQb3NpdGlvbigpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hF
QURFUihXZWJDb3JlLCBNZWRpYVJlbW90ZSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb1Vu
aXF1ZUlkZW50aWZpZXIsIENGU3RyaW5nUmVmKTsKICNkZWZpbmUga01STWVkaWFSZW1vdGVOb3dQ
bGF5aW5nSW5mb1VuaXF1ZUlkZW50aWZpZXIgZ2V0X01lZGlhUmVtb3RlX2tNUk1lZGlhUmVtb3Rl
Tm93UGxheWluZ0luZm9VbmlxdWVJZGVudGlmaWVyKCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1Jf
SEVBREVSKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU9wdGlvblNraXBJbnRl
cnZhbCwgQ0ZTdHJpbmdSZWYpOworI2RlZmluZSBrTVJNZWRpYVJlbW90ZU9wdGlvblNraXBJbnRl
cnZhbCBnZXRfTWVkaWFSZW1vdGVfa01STWVkaWFSZW1vdGVPcHRpb25Ta2lwSW50ZXJ2YWwoKQog
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVS
KFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBNUk1lZGlhUmVtb3RlQ29weVBpY2thYmxlUm91dGVzLCBD
RkFycmF5UmVmLCAoKSwgKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvTWVkaWFSZW1vdGVTb2Z0TGluay5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9N
ZWRpYVJlbW90ZVNvZnRMaW5rLm1tCmluZGV4IDg0ZGFjYjg1MWY4Y2Y2YzFiZDY2N2E5NmU3YmMw
OWY3MzkyZjlkNTQuLjczZTdiMjBkOWJmNTUyNzA0N2FjMzgxMTUyMDA2ZjNlODUyMTVlMzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9NZWRpYVJlbW90ZVNvZnRMaW5r
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9NZWRpYVJlbW90ZVNvZnRMaW5r
Lm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC00NCwxMSArNDQsMTYgQEAgU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29y
ZSwgTWVkaWFSZW1vdGUsIE1STWVkaWFSZW1vdGVTZXROb3dQbGF5aW5nSW4KIFNPRlRfTElOS19G
VU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBNUk1lZGlhUmVtb3RlU2V0
Tm93UGxheWluZ0FwcGxpY2F0aW9uUGxheWJhY2tTdGF0ZUZvck9yaWdpbiwgdm9pZCwgKE1ST3Jp
Z2luUmVmIG9yaWdpbiwgTVJQbGF5YmFja1N0YXRlIHBsYXliYWNrU3RhdGUsIGRpc3BhdGNoX3F1
ZXVlX3QgcmVwbHlRLCB2b2lkKF5jb21wbGV0aW9uKShNUk1lZGlhUmVtb3RlRXJyb3IpKSwgKG9y
aWdpbiwgcGxheWJhY2tTdGF0ZSwgcmVwbHlRLCBjb21wbGV0aW9uKSkKIFNPRlRfTElOS19GVU5D
VElPTl9NQVlfRkFJTF9GT1JfU09VUkNFKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBNUk1lZGlhUmVt
b3RlU2V0UGFyZW50QXBwbGljYXRpb24sIHZvaWQsIChNUk9yaWdpblJlZiBvcmlnaW4sIENGU3Ry
aW5nUmVmIHBhcmVudEFwcERpc3BsYXlJRCksIChvcmlnaW4sIHBhcmVudEFwcERpc3BsYXlJRCkp
CiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShXZWJDb3JlLCBNZWRpYVJlbW90ZSwga01S
TWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb1RpdGxlLCBDRlN0cmluZ1JlZik7CitTT0ZUX0xJTktf
Q09OU1RBTlRfRk9SX1NPVVJDRShXZWJDb3JlLCBNZWRpYVJlbW90ZSwga01STWVkaWFSZW1vdGVO
b3dQbGF5aW5nSW5mb0FydGlzdCwgQ0ZTdHJpbmdSZWYpOworU09GVF9MSU5LX0NPTlNUQU5UX0ZP
Ul9TT1VSQ0UoV2ViQ29yZSwgTWVkaWFSZW1vdGUsIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0lu
Zm9BbGJ1bSwgQ0ZTdHJpbmdSZWYpOworU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoV2Vi
Q29yZSwgTWVkaWFSZW1vdGUsIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrRGF0
YSwgQ0ZTdHJpbmdSZWYpOworU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoV2ViQ29yZSwg
TWVkaWFSZW1vdGUsIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrTUlNRVR5cGUs
IENGU3RyaW5nUmVmKTsKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFdlYkNvcmUsIE1l
ZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRHVyYXRpb24sIENGU3RyaW5n
UmVmKTsKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFdlYkNvcmUsIE1lZGlhUmVtb3Rl
LCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRWxhcHNlZFRpbWUsIENGU3RyaW5nUmVmKTsK
IFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBrTVJN
ZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvUGxheWJhY2tSYXRlLCBDRlN0cmluZ1JlZik7CiBTT0ZU
X0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShXZWJDb3JlLCBNZWRpYVJlbW90ZSwga01STWVkaWFS
ZW1vdGVPcHRpb25QbGF5YmFja1Bvc2l0aW9uLCBDRlN0cmluZ1JlZik7CiBTT0ZUX0xJTktfQ09O
U1RBTlRfRk9SX1NPVVJDRShXZWJDb3JlLCBNZWRpYVJlbW90ZSwga01STWVkaWFSZW1vdGVOb3dQ
bGF5aW5nSW5mb1VuaXF1ZUlkZW50aWZpZXIsIENGU3RyaW5nUmVmKTsKK1NPRlRfTElOS19DT05T
VEFOVF9GT1JfU09VUkNFKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU9wdGlv
blNraXBJbnRlcnZhbCwgQ0ZTdHJpbmdSZWYpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBNUk1l
ZGlhUmVtb3RlQ29weVBpY2thYmxlUm91dGVzLCBDRkFycmF5UmVmLCAoKSwgKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1h
Yy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1h
Yy5oCmluZGV4IDk0YTQyZTE5MTcxYjJkY2I5ZmU5YjkwZjFkNThjMjNjOWY3OGEyM2IuLmI3MWNh
ZDg2ODE4ODg0ZDk5NGFmYWVlODM4MjY5Yzk1ZjcxZGNjNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9SZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLmgKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksOSAr
MzksMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYygp
OwogCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCB1cGRhdGVTdXBwb3J0ZWRDb21tYW5kcygpIG92ZXJy
aWRlOworICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVkQ29tbWFuZHMoKSBmaW5hbDsKIAogICAgIHZv
aWQqIG1fY29tbWFuZEhhbmRsZXIgeyBudWxscHRyIH07CisKKyAgICBjb25zdCBSZW1vdGVDb21t
YW5kc1NldCYgZGVmYXVsdENvbW1hbmRzKCk7CisgICAgUmVtb3RlQ29tbWFuZHNTZXQgbV9jdXJy
ZW50Q29tbWFuZHM7CisgICAgYm9vbCBtX3N1cHBvcnRzU2Vla2luZyB7IGZhbHNlIH07CiB9Owog
ICAgIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1JlbW90ZUNv
bW1hbmRMaXN0ZW5lck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9SZW1vdGVD
b21tYW5kTGlzdGVuZXJNYWMubW0KaW5kZXggNGVhODM5MjA3MjcxODQ0OGE4NjIyZmZlMmQzMjVj
ZjczNzEyNDYyOC4uZmFmNzUzZjg3YTQ0ZmYyMGZlZDgyOTNkN2MxNWIwNWIzYTg3MDJjMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1JlbW90ZUNvbW1hbmRMaXN0ZW5l
ck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUmVtb3RlQ29tbWFuZExp
c3RlbmVyTWFjLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zNSw0MiArMzUsMTAyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
c3RhdGljIE9wdGlvbmFsPE1STWVkaWFSZW1vdGVDb21tYW5kPiBtZWRpYVJlbW90ZUNvbW1hbmRG
b3JQbGF0Zm9ybUNvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21t
YW5kVHlwZSBjb21tYW5kKQoreworICAgIHN0YXRpYyBjb25zdCBhdXRvIGNvbW1hbmRNYXAgPSBt
YWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgICAgICBzdHJ1Y3QgTWFwRW50cnkgeworICAgICAg
ICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBwbGF0
Zm9ybUNvbW1hbmQ7CisgICAgICAgICAgICBNUk1lZGlhUmVtb3RlQ29tbWFuZCBtZWRpYVJlbW90
ZUNvbW1hbmQ7CisgICAgICAgIH07CisgICAgICAgIHN0YXRpYyBjb25zdCBNYXBFbnRyeSBlbnRy
aWVzW10gPSB7CisgICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5Q29tbWFu
ZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRQbGF5IH0sCisgICAgICAgICAgICB7IFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpQYXVzZUNvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kUGF1c2UgfSwKKyAg
ICAgICAgICAgIHsgUGxhdGZvcm1NZWRpYVNlc3Npb246OlN0b3BDb21tYW5kLCBNUk1lZGlhUmVt
b3RlQ29tbWFuZFN0b3AgfSwKKyAgICAgICAgICAgIHsgUGxhdGZvcm1NZWRpYVNlc3Npb246OlRv
Z2dsZVBsYXlQYXVzZUNvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kVG9nZ2xlUGxheVBhdXNl
IH0sCisgICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpCZWdpblNlZWtpbmdCYWNr
d2FyZENvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kQmVnaW5SZXdpbmQgfSwKKyAgICAgICAg
ICAgIHsgUGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZFNlZWtpbmdCYWNrd2FyZENvbW1hbmQsIE1S
TWVkaWFSZW1vdGVDb21tYW5kRW5kUmV3aW5kIH0sCisgICAgICAgICAgICB7IFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpCZWdpblNlZWtpbmdGb3J3YXJkQ29tbWFuZCwgTVJNZWRpYVJlbW90ZUNvbW1h
bmRCZWdpbkZhc3RGb3J3YXJkIH0sCisgICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpFbmRTZWVraW5nRm9yd2FyZENvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kRW5kRmFzdEZv
cndhcmQgfSwKKyAgICAgICAgICAgIHsgUGxhdGZvcm1NZWRpYVNlc3Npb246OlNlZWtUb1BsYXli
YWNrUG9zaXRpb25Db21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZFNlZWtUb1BsYXliYWNrUG9z
aXRpb24gfSwKKyAgICAgICAgICAgIHsgUGxhdGZvcm1NZWRpYVNlc3Npb246OlNraXBGb3J3YXJk
Q29tbWFuZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRTa2lwRm9yd2FyZCB9LAorICAgICAgICAgICAg
eyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEJhY2t3YXJkQ29tbWFuZCwgTVJNZWRpYVJlbW90
ZUNvbW1hbmRTa2lwQmFja3dhcmQgfSwKKyAgICAgICAgICAgIHsgUGxhdGZvcm1NZWRpYVNlc3Np
b246Ok5leHRUcmFja0NvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kTmV4dFRyYWNrIH0sCisg
ICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQcmV2aW91c1RyYWNrQ29tbWFuZCwg
TVJNZWRpYVJlbW90ZUNvbW1hbmRQcmV2aW91c1RyYWNrIH0sCisgICAgICAgIH07CisKKyAgICAg
ICAgSGFzaE1hcDxQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBl
LCBNUk1lZGlhUmVtb3RlQ29tbWFuZCwgV1RGOjpJbnRIYXNoPFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGU+PiBtYXA7CisgICAg
ICAgIGZvciAoYXV0byYgZW50cnkgOiBlbnRyaWVzKQorICAgICAgICAgICAgbWFwLmFkZChlbnRy
eS5wbGF0Zm9ybUNvbW1hbmQsIGVudHJ5Lm1lZGlhUmVtb3RlQ29tbWFuZCk7CisgICAgICAgIHJl
dHVybiBtYXA7CisgICAgfSgpKTsKKworICAgIGF1dG8gaXQgPSBjb21tYW5kTWFwLmdldCgpLmZp
bmQoY29tbWFuZCk7CisgICAgaWYgKGl0ICE9IGNvbW1hbmRNYXAuZ2V0KCkuZW5kKCkpCisgICAg
ICAgIHJldHVybiB7IGl0LT52YWx1ZSB9OworCisgICAgcmV0dXJuIHsgfTsKK30KKwogc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZUNvbW1hbmRMaXN0ZW5lcj4gUmVtb3RlQ29tbWFuZExpc3RlbmVyOjpj
cmVhdGUoUmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50JiBjbGllbnQpCiB7CiAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8UmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjPihjbGllbnQpOwogfQogCitjb25z
dCBSZW1vdGVDb21tYW5kTGlzdGVuZXI6OlJlbW90ZUNvbW1hbmRzU2V0JiBSZW1vdGVDb21tYW5k
TGlzdGVuZXJNYWM6OmRlZmF1bHRDb21tYW5kcygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFJlbW90ZUNvbW1hbmRzU2V0PiBjb21tYW5kcyhzdGQ6OmluaXRpYWxpemVyX2xpc3Q8UGxh
dGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZT4geworICAgICAgICBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheUNvbW1hbmQsCisgICAgICAgIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpQYXVzZUNvbW1hbmQsCisgICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpUb2dn
bGVQbGF5UGF1c2VDb21tYW5kLAorICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QmVnaW5T
ZWVraW5nRm9yd2FyZENvbW1hbmQsCisgICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRT
ZWVraW5nRm9yd2FyZENvbW1hbmQsCisgICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpCZWdp
blNlZWtpbmdCYWNrd2FyZENvbW1hbmQsCisgICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpF
bmRTZWVraW5nQmFja3dhcmRDb21tYW5kLAorICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
U2Vla1RvUGxheWJhY2tQb3NpdGlvbkNvbW1hbmQsCisgICAgICAgIFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpTa2lwRm9yd2FyZENvbW1hbmQsCisgICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpT
a2lwQmFja3dhcmRDb21tYW5kLAorICAgIH0pOworCisgICAgcmV0dXJuIGNvbW1hbmRzOworfQor
CitzdGF0aWMgYm9vbCBpc1NlZWtDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVD
b250cm9sQ29tbWFuZFR5cGUgY29tbWFuZCkKK3sKKyAgICByZXR1cm4gY29tbWFuZCA9PSBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6U2Vla1RvUGxheWJhY2tQb3NpdGlvbkNvbW1hbmQKKyAgICAgICAg
fHwgY29tbWFuZCA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEZvcndhcmRDb21tYW5kCisg
ICAgICAgIHx8IGNvbW1hbmQgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OlNraXBCYWNrd2FyZENv
bW1hbmQKKyAgICAgICAgfHwgY29tbWFuZCA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QmVnaW5T
ZWVraW5nRm9yd2FyZENvbW1hbmQKKyAgICAgICAgfHwgY29tbWFuZCA9PSBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6QmVnaW5TZWVraW5nQmFja3dhcmRDb21tYW5kOworfQorCiB2b2lkIFJlbW90ZUNv
bW1hbmRMaXN0ZW5lck1hYzo6dXBkYXRlU3VwcG9ydGVkQ29tbWFuZHMoKQogewogICAgIGlmICgh
aXNNZWRpYVJlbW90ZUZyYW1ld29ya0F2YWlsYWJsZSgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBzdGF0aWMgY29uc3QgTVJNZWRpYVJlbW90ZUNvbW1hbmQgc3VwcG9ydGVkQ29tbWFuZHNbXSA9
IHsKLSAgICAgICAgTVJNZWRpYVJlbW90ZUNvbW1hbmRQbGF5LAotICAgICAgICBNUk1lZGlhUmVt
b3RlQ29tbWFuZFBhdXNlLAotICAgICAgICBNUk1lZGlhUmVtb3RlQ29tbWFuZFRvZ2dsZVBsYXlQ
YXVzZSwKLSAgICAgICAgTVJNZWRpYVJlbW90ZUNvbW1hbmRCZWdpbkZhc3RGb3J3YXJkLAotICAg
ICAgICBNUk1lZGlhUmVtb3RlQ29tbWFuZEVuZEZhc3RGb3J3YXJkLAotICAgICAgICBNUk1lZGlh
UmVtb3RlQ29tbWFuZEJlZ2luUmV3aW5kLAotICAgICAgICBNUk1lZGlhUmVtb3RlQ29tbWFuZEVu
ZFJld2luZCwKLSAgICAgICAgTVJNZWRpYVJlbW90ZUNvbW1hbmRTZWVrVG9QbGF5YmFja1Bvc2l0
aW9uLAotICAgIH07CisgICAgYXV0byYgc3VwcG9ydGVkQ29tbWFuZHMgPSAhbV9yZWdpc3RlcmVk
Q29tbWFuZHMuaXNFbXB0eSgpID8gbV9yZWdpc3RlcmVkQ29tbWFuZHMgOiBkZWZhdWx0Q29tbWFu
ZHMoKTsKKyAgICBpZiAobV9zdXBwb3J0c1NlZWtpbmcgPT0gY2xpZW50KCkuc3VwcG9ydHNTZWVr
aW5nKCkgJiYgbV9jdXJyZW50Q29tbWFuZHMgPT0gc3VwcG9ydGVkQ29tbWFuZHMpCisgICAgICAg
IHJldHVybjsKKworICAgIGF1dG8gY29tbWFuZEluZm9BcnJheSA9IGFkb3B0Q0YoQ0ZBcnJheUNy
ZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3VwcG9ydGVkQ29tbWFuZHMuc2l6ZSgp
LCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CisgICAgZm9yIChhdXRvIHBsYXRmb3JtQ29tbWFu
ZCA6IHN1cHBvcnRlZENvbW1hbmRzKSB7CisgICAgICAgIGlmIChpc1NlZWtDb21tYW5kKHBsYXRm
b3JtQ29tbWFuZCkgJiYgIWNsaWVudCgpLnN1cHBvcnRzU2Vla2luZygpKQorICAgICAgICAgICAg
Y29udGludWU7CiAKLSAgICBhdXRvIGNvbW1hbmRJbmZvQXJyYXkgPSBhZG9wdENGKENGQXJyYXlD
cmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHNpemVvZihzdXBwb3J0ZWRDb21tYW5k
cykgLyBzaXplb2YoTVJNZWRpYVJlbW90ZUNvbW1hbmQpLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tz
KSk7CisgICAgICAgIGF1dG8gY29tbWFuZCA9IG1lZGlhUmVtb3RlQ29tbWFuZEZvclBsYXRmb3Jt
Q29tbWFuZChwbGF0Zm9ybUNvbW1hbmQpOworICAgICAgICBBU1NFUlQoY29tbWFuZCk7CisgICAg
ICAgIGlmICghY29tbWFuZCkKKyAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgZm9yIChhdXRv
IGNvbW1hbmQgOiBzdXBwb3J0ZWRDb21tYW5kcykgewogICAgICAgICBhdXRvIGNvbW1hbmRJbmZv
ID0gYWRvcHRDRihNUk1lZGlhUmVtb3RlQ29tbWFuZEluZm9DcmVhdGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCkpOwotICAgICAgICBNUk1lZGlhUmVtb3RlQ29tbWFuZEluZm9TZXRDb21tYW5kKGNvbW1h
bmRJbmZvLmdldCgpLCBjb21tYW5kKTsKKyAgICAgICAgTVJNZWRpYVJlbW90ZUNvbW1hbmRJbmZv
U2V0Q29tbWFuZChjb21tYW5kSW5mby5nZXQoKSwgY29tbWFuZC52YWx1ZSgpKTsKICAgICAgICAg
TVJNZWRpYVJlbW90ZUNvbW1hbmRJbmZvU2V0RW5hYmxlZChjb21tYW5kSW5mby5nZXQoKSwgdHJ1
ZSk7CiAgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShjb21tYW5kSW5mb0FycmF5LmdldCgpLCBj
b21tYW5kSW5mby5nZXQoKSk7CiAgICAgfQogCi0gICAgYXV0byBzZWVrQ29tbWFuZEluZm8gPSBh
ZG9wdENGKE1STWVkaWFSZW1vdGVDb21tYW5kSW5mb0NyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
KSk7Ci0gICAgTVJNZWRpYVJlbW90ZUNvbW1hbmRJbmZvU2V0Q29tbWFuZChzZWVrQ29tbWFuZElu
Zm8uZ2V0KCksIE1STWVkaWFSZW1vdGVDb21tYW5kU2Vla1RvUGxheWJhY2tQb3NpdGlvbik7Ci0g
ICAgTVJNZWRpYVJlbW90ZUNvbW1hbmRJbmZvU2V0RW5hYmxlZChzZWVrQ29tbWFuZEluZm8uZ2V0
KCksIGNsaWVudCgpLnN1cHBvcnRzU2Vla2luZygpKTsKLSAgICBDRkFycmF5QXBwZW5kVmFsdWUo
Y29tbWFuZEluZm9BcnJheS5nZXQoKSwgc2Vla0NvbW1hbmRJbmZvLmdldCgpKTsKLQogICAgIE1S
TWVkaWFSZW1vdGVTZXRTdXBwb3J0ZWRDb21tYW5kcyhjb21tYW5kSW5mb0FycmF5LmdldCgpLCBN
Uk1lZGlhUmVtb3RlR2V0TG9jYWxPcmlnaW4oKSwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAgbV9j
dXJyZW50Q29tbWFuZHMgPSBzdXBwb3J0ZWRDb21tYW5kczsKKyAgICBtX3N1cHBvcnRzU2Vla2lu
ZyA9IGNsaWVudCgpLnN1cHBvcnRzU2Vla2luZygpOwogfQogCiBSZW1vdGVDb21tYW5kTGlzdGVu
ZXJNYWM6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYyhSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGll
bnQmIGNsaWVudCkKQEAgLTc5LDcgKzEzOSw3IEBAIFJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYzo6
UmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjKFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCYKICAg
ICBpZiAoIWlzTWVkaWFSZW1vdGVGcmFtZXdvcmtBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgdXBkYXRlU3VwcG9ydGVkQ29tbWFuZHMoKTsKKyAgICBzY2hlZHVsZVN1cHBvcnRl
ZENvbW1hbmRzVXBkYXRlKCk7CiAKICAgICBhdXRvIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRo
aXMpOwogICAgIG1fY29tbWFuZEhhbmRsZXIgPSBNUk1lZGlhUmVtb3RlQWRkQXN5bmNDb21tYW5k
SGFuZGxlckJsb2NrKF4oTVJNZWRpYVJlbW90ZUNvbW1hbmQgY29tbWFuZCwgQ0ZEaWN0aW9uYXJ5
UmVmIG9wdGlvbnMsIHZvaWQoXmNvbXBsZXRpb24pKENGQXJyYXlSZWYpKSB7CkBAIC04OCw2ICsx
NDgsNyBAQCBSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWM6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lck1h
YyhSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQmCiAKICAgICAgICAgUGxhdGZvcm1NZWRpYVNl
c3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBwbGF0Zm9ybUNvbW1hbmQgeyBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6Tm9Db21tYW5kIH07CiAgICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpSZW1vdGVDb21tYW5kQXJndW1lbnQgYXJndW1lbnQgeyAwIH07CisgICAgICAgIFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpSZW1vdGVDb21tYW5kQXJndW1lbnQqIGFyZ3VtZW50UHRyID0gbnVsbHB0
cjsKICAgICAgICAgTVJNZWRpYVJlbW90ZUNvbW1hbmRIYW5kbGVyU3RhdHVzIHN0YXR1cyA9IE1S
TWVkaWFSZW1vdGVDb21tYW5kSGFuZGxlclN0YXR1c1N1Y2Nlc3M7CiAKICAgICAgICAgc3dpdGNo
IChjb21tYW5kKSB7CkBAIC0xMjgsMTYgKzE4OSwzNyBAQCBSZW1vdGVDb21tYW5kTGlzdGVuZXJN
YWM6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYyhSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQm
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIENGTnVtYmVyR2V0VmFsdWUocG9zaXRpb25S
ZWYsIGtDRk51bWJlckRvdWJsZVR5cGUsICZhcmd1bWVudC5hc0RvdWJsZSk7CisgICAgICAgICAg
ICBhcmd1bWVudFB0ciA9ICZhcmd1bWVudDsKICAgICAgICAgICAgIHBsYXRmb3JtQ29tbWFuZCA9
IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTZWVrVG9QbGF5YmFja1Bvc2l0aW9uQ29tbWFuZDsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2UgTVJNZWRpYVJlbW90ZUNv
bW1hbmRTa2lwRm9yd2FyZDoKKyAgICAgICAgY2FzZSBNUk1lZGlhUmVtb3RlQ29tbWFuZFNraXBC
YWNrd2FyZDoKKyAgICAgICAgICAgIGlmICghY2xpZW50LnN1cHBvcnRzU2Vla2luZygpKSB7Cisg
ICAgICAgICAgICAgICAgc3RhdHVzID0gTVJNZWRpYVJlbW90ZUNvbW1hbmRIYW5kbGVyU3RhdHVz
Q29tbWFuZEZhaWxlZDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgaWYgKGF1dG8gcG9zaXRpb25SZWYgPSBzdGF0aWNfY2FzdDxDRk51bWJlclJl
Zj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUob3B0aW9ucywga01STWVkaWFSZW1vdGVPcHRpb25Ta2lw
SW50ZXJ2YWwpKSkgeworICAgICAgICAgICAgICAgIENGTnVtYmVyR2V0VmFsdWUocG9zaXRpb25S
ZWYsIGtDRk51bWJlckRvdWJsZVR5cGUsICZhcmd1bWVudC5hc0RvdWJsZSk7CisgICAgICAgICAg
ICAgICAgYXJndW1lbnRQdHIgPSAmYXJndW1lbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHBsYXRmb3JtQ29tbWFuZCA9IChjb21tYW5kID09IE1STWVkaWFSZW1vdGVDb21tYW5kU2tp
cEZvcndhcmQpID8gUGxhdGZvcm1NZWRpYVNlc3Npb246OlNraXBGb3J3YXJkQ29tbWFuZCA6IFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpTa2lwQmFja3dhcmRDb21tYW5kOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgTVJNZWRpYVJlbW90ZUNvbW1hbmROZXh0VHJhY2s6CisgICAgICAg
ICAgICBwbGF0Zm9ybUNvbW1hbmQgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TmV4dFRyYWNrQ29t
bWFuZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1STWVkaWFSZW1vdGVDb21t
YW5kUHJldmlvdXNUcmFjazoKKyAgICAgICAgICAgIHBsYXRmb3JtQ29tbWFuZCA9IFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpQcmV2aW91c1RyYWNrQ29tbWFuZDsKKyAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgTE9HKE1lZGlhLCAiUmVtb3RlQ29tbWFuZExp
c3RlbmVyTWFjOjpSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMgLSBjb21tYW5kICV1IG5vdCBzdXBw
b3J0ZWQhIiwgY29tbWFuZCk7CiAgICAgICAgICAgICBzdGF0dXMgPSBNUk1lZGlhUmVtb3RlQ29t
bWFuZEhhbmRsZXJTdGF0dXNDb21tYW5kRmFpbGVkOwogICAgICAgICB9OwogCiAgICAgICAgIGlm
ICh3ZWFrVGhpcyAmJiBzdGF0dXMgIT0gTVJNZWRpYVJlbW90ZUNvbW1hbmRIYW5kbGVyU3RhdHVz
Q29tbWFuZEZhaWxlZCkKLSAgICAgICAgICAgIHdlYWtUaGlzLT5tX2NsaWVudC5kaWRSZWNlaXZl
UmVtb3RlQ29udHJvbENvbW1hbmQocGxhdGZvcm1Db21tYW5kLCAmYXJndW1lbnQpOworICAgICAg
ICAgICAgd2Vha1RoaXMtPm1fY2xpZW50LmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChw
bGF0Zm9ybUNvbW1hbmQsIGFyZ3VtZW50UHRyKTsKIAogICAgICAgICBjb21wbGV0aW9uKChfX2Jy
aWRnZSBDRkFycmF5UmVmKUBbQChzdGF0dXMpXSk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCmluZGV4IDYyZGNiMzA2
YTg5OWNhOGJhNDI4NDkyZjkzNzYxMGY2OGE5ZmU0NTMuLjBjNzliZmZlZDViZWRjNzc5YTJjOTgx
MjNmMjhlNzIzNjYwNTRjM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCkBAIC0xNDc5LDYgKzE0NzksMTYgQEAgc3RhdGljIFdl
YkNvcmU6OkVkaXRhYmxlTGlua0JlaGF2aW9yIHRvRWRpdGFibGVMaW5rQmVoYXZpb3IoX1dLRWRp
dGFibGVMaW5rQmVoYXYKICAgICBfcHJlZmVyZW5jZXMtPnNldFBpdGNoQ29ycmVjdGlvbkFsZ29y
aXRobShwaXRjaENvcnJlY3Rpb25BbGdvcml0aG0pOwogfQogCistIChCT09MKV9tZWRpYVNlc3Np
b25FbmFibGVkCit7CisgICAgcmV0dXJuIF9wcmVmZXJlbmNlcy0+bWVkaWFTZXNzaW9uRW5hYmxl
ZCgpOworfQorCistICh2b2lkKV9zZXRNZWRpYVNlc3Npb25FbmFibGVkOihCT09MKW1lZGlhU2Vz
c2lvbkVuYWJsZWQKK3sKKyAgICBfcHJlZmVyZW5jZXMtPnNldE1lZGlhU2Vzc2lvbkVuYWJsZWQo
bWVkaWFTZXNzaW9uRW5hYmxlZCk7Cit9CisKIEBlbmQKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCmluZGV4
IGYwNjkxZmQ1NzUwNGYzY2E4MTFlNzRiMGQwYTM5ZTNkNzhhOGQ0MTEuLjc2NjY5NjAwOGZlMmJi
NGFkM2ZmNjIxM2QyNWIzN2JmZmVkYzJiZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCkBAIC0xNzAsNiAr
MTcwLDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLUGl0Y2hDb3JyZWN0aW9uQWxn
b3JpdGhtKSB7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRTcGVlY2hSZWNvZ25p
dGlvbkVuYWJsZWQ6KSBCT09MIF9zcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCBzZXR0ZXI9X3NldFByaXZhdGVDbGlja01lYXN1cmVtZW50RW5hYmxlZDopIEJPT0wg
X3ByaXZhdGVDbGlja01lYXN1cmVtZW50RW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdL
X01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRl
cj1fc2V0UGl0Y2hDb3JyZWN0aW9uQWxnb3JpdGhtOikgX1dLUGl0Y2hDb3JyZWN0aW9uQWxnb3Jp
dGhtIF9waXRjaENvcnJlY3Rpb25BbGdvcml0aG0gV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9
X3NldE1lZGlhU2Vzc2lvbkVuYWJsZWQ6KSBCT09MIF9tZWRpYVNlc3Npb25FbmFibGVkIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKICNpZiAh
VEFSR0VUX09TX0lQSE9ORQogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0V2ViR0xF
bmFibGVkOikgQk9PTCBfd2ViR0xFbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMu
NCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IGQ1YWUzMWZiZWNhMWM3YjkzNzllNGZjZWMzNzZlYzRiODE5NTVhZDQuLjJmYjA0MTEyY2RjM2E4
ODhkMGJiYzIwYjE4NWVjNjQxMTBlMmE4MTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAyMS0wMi0wNCAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWFjXSBDb25uZWN0
IE1lZGlhU2Vzc2lvbiB3aXRoIE1lZGlhUmVtb3RlIGFuZCBOb3dQbGF5aW5nCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE0MzEKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzc0MDAwMzYzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9NZWRpYVNlc3Npb24ubW06IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFT
ZXNzaW9uVGVzdDo6d2ViVmlldyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Np
b25UZXN0Ojp3ZWJWaWV3UGlkKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lv
blRlc3Q6OmdldE5vd1BsYXlpbmdDbGllbnQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVk
aWFTZXNzaW9uVGVzdDo6Z2V0Tm93UGxheWluZ0NsaWVudFBpZCk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpNZWRpYVNlc3Npb25UZXN0Ojpsb2FkUGFnZUFuZEJlY29tZU5vd1BsYXlpbmcpOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uVGVzdDo6cnVuU2NyaXB0V2l0aFVz
ZXJHZXN0dXJlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvblRlc3Q6OnBs
YXkpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uVGVzdDo6cGF1c2UpOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uVGVzdDo6c2VuZE1lZGlhUmVtb3Rl
Q29tbWFuZCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25UZXN0OjpzZW5k
TWVkaWFSZW1vdGVTZWVrQ29tbWFuZCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNl
c3Npb25UZXN0OjpsaXN0ZW5Gb3JFdmVudE1lc3NhZ2VzKToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6Ok1lZGlhU2Vzc2lvblRlc3Q6OmV2ZW50TGlzdGVuZXJXYXNDYWxsZWQpOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uVGVzdDo6d2FpdEZvckV2ZW50TGlzdGVuZXJUb0Jl
Q2FsbGVkKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvblRlc3Q6Omxpc3Rl
bkZvclNlc3Npb25IYW5kbGVyTWVzc2FnZXMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVk
aWFTZXNzaW9uVGVzdDo6c2Vzc2lvbkhhbmRsZXJXYXNDYWxsZWQpOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6TWVkaWFTZXNzaW9uVGVzdDo6d2FpdEZvclNlc3Npb25IYW5kbGVyVG9CZUNhbGxl
ZCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25UZXN0OjpnZXRTdXBwb3J0
ZWRDb21tYW5kcyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvbWVkaWEtcmVtb3RlLmh0bWw6IEFkZGVk
LgorCiAyMDIxLTAyLTA0ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbUHl0aG9uLTNdIENoYW5nZSBzaGViYW5nIGluIHRlc3Qtd2Via2l0cHkgKFBhcnQt
MSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNWM1OTdhNzFkMmViMzg3ODYwN2RlMmFmZjNi
ZDJjODE3MzY4MzM2Yi4uMGI0OGU3ZWFlNWEyYmY4NmJkNjFiZDBkOTJiMWFlZGVjNzIzMTk4ZCAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU2LDYgKzU2LDggQEAKIAkJMDc0OTk0NTIxRUE1
MDM0QjAwMERBNDRFIC8qIGdldFVzZXJNZWRpYTIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUJBRjRFMjI1QUM5REI4MDBEODJGMzIg
LyogZ2V0VXNlck1lZGlhMi5odG1sICovOyB9OwogCQkwNzZFNTA3RjFGNDUxM0Q2MDA2RTlGNUEg
LyogTG9nZ2luZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwNzZFNTA3RTFGNDUwMzFFMDA2RTlGNUEgLyogTG9nZ2luZy5jcHAgKi87IH07CiAJCTA3
N0E1QUYzMjMwNjM4QTYwMEE3MTA1QyAvKiBBY2Nlc3NpYmlsaXR5VGVzdFBsdWdpbi5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NDY2NDU4MjJGRjYz
MDUwMEUzNDUxQSAvKiBBY2Nlc3NpYmlsaXR5VGVzdFBsdWdpbi5tbSAqLzsgfTsKKwkJMDc5NDc0
MEQyNUNBMEJERTAwQzU5N0VCIC8qIE1lZGlhU2Vzc2lvbi5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3OTQ3NDBDMjVDQTBCREUwMEM1OTdFQiAvKiBN
ZWRpYVNlc3Npb24ubW0gKi87IH07CisJCTA3OTQ3NDJEMjVDQjMzRkQwMEM1OTdFQiAvKiBtZWRp
YS1yZW1vdGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwNzk0NzQyQzI1Q0IzM0IwMDBDNTk3RUIgLyogbWVkaWEtcmVtb3RlLmh0bWwg
Ki87IH07CiAJCTA3OTlDMzQ5MUVCQTJEN0IwMDNCNzUzMiAvKiBVc2VyTWVkaWFEaXNhYmxlZC5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RURFRkFD
MUVCOTQwMEMwMEQ0MzI5MiAvKiBVc2VyTWVkaWFEaXNhYmxlZC5tbSAqLzsgfTsKIAkJMDc5OUMz
NEIxRUJBMzMwMTAwM0I3NTMyIC8qIGRpc2FibGVHZXRVc2VyTWVkaWEuaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzk5QzM0QTFFQkEz
MkY0MDAzQjc1MzIgLyogZGlzYWJsZUdldFVzZXJNZWRpYS5odG1sICovOyB9OwogCQkwN0MwNDZD
QTFFNDI2MkE4MDA3MjAxRTcgLyogQ0FSaW5nQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzA0NkM5MUU0MjU3M0UwMDcyMDFFNyAvKiBD
QVJpbmdCdWZmZXIuY3BwICovOyB9OwpAQCAtMTU1OSw2ICsxNTYxLDcgQEAKIAkJCQlBRDU3QUMy
MjFEQTc0NjZFMDBGRjFCREUgLyogbWFueS1pZnJhbWVzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8sCiAJCQkJNzc3MkVDRTEyMkZFMDZDNjAwMDlBNzk5IC8qIG1hbnktc2FtZS1vcmlnaW4taWZy
YW1lcy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUNEODM5NERGMjMyQUY3QzAwMDE0
OTQ5NSAvKiBtZWRpYS1sb2FkaW5nLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCisJCQkJMDc5
NDc0MkQyNUNCMzNGRDAwQzU5N0VCIC8qIG1lZGlhLXJlbW90ZS5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovLAogCQkJCUNEQTMxNTlBMUVENTQ4RjEwMDlGNjBEMyAvKiBNZWRpYVBsYXliYWNrU2xl
ZXBBc3NlcnRpb24uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlDREM5NDQyRjFFRjIw
NUQ2MDA1OUMzQzQgLyogbWVkaWFzdHJlYW10cmFjay1kZXRhY2hlZC5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovLAogCQkJCUUxMjIwRENBMTU1QjI4QUEwMDEzRTJGQyAvKiBNZW1vcnlDYWNoZURp
c2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
LApAQCAtMTcyMiw2ICsxNzI1LDggQEAKIAkJMDc0OTJCM0ExREY4QUUyRDAwNjMzREUxIC8qIEVu
dW1lcmF0ZU1lZGlhRGV2aWNlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBFbnVtZXJhdGVNZWRpYURldmljZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwNzY2REQxRjFBNUFENTIwMDAyM0UzQkIgLyogUGVuZGluZ0FQSVJlcXVlc3RVUkwuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGVuZGluZ0FQSVJlcXVlc3RV
UkwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzZFNTA3RTFGNDUwMzFFMDA2
RTlGNUEgLyogTG9nZ2luZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBMb2dnaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc5NDc0MEMyNUNB
MEJERTAwQzU5N0VCIC8qIE1lZGlhU2Vzc2lvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IE1lZGlhU2Vzc2lvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMDc5NDc0MkMyNUNCMzNCMDAwQzU5N0VCIC8qIG1lZGlhLXJlbW90ZS5odG1sICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5odG1sOyBwYXRoID0gIm1lZGlhLXJlbW90ZS5odG1sIjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMDc5OUMzNEExRUJBMzJGNDAwM0I3NTMyIC8qIGRpc2FibGVHZXRV
c2VyTWVkaWEuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IGRpc2FibGVHZXRVc2Vy
TWVkaWEuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdDMDQ2QzkxRTQyNTcz
RTAwNzIwMUU3IC8qIENBUmluZ0J1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDQVJpbmdCdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwN0NDN0RGRDIyNjYzMzA4MDBFMzkxODEgLyogTWVkaWFCdWZmZXJpbmdQb2xpY3kubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZWRpYUJ1ZmZlcmluZ1BvbGlj
eS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMzNTksNiArMzM2NCw3IEBACiAJ
CQkJOTVCNkIzQjYyNTFFQkYyRjAwRkM0MzgyIC8qIE1lZGlhRG9jdW1lbnQubW0gKi8sCiAJCQkJ
Q0QwMzcwRTIyNEE0NEI3QTAwQkEzQ0FFIC8qIE1lZGlhTG9hZGluZy5tbSAqLywKIAkJCQkwN0VG
NzZENDI1NDBGQzA2MDA1M0VENTMgLyogTWVkaWFNdXRlZFN0YXRlLm1tICovLAorCQkJCTA3OTQ3
NDBDMjVDQTBCREUwMEM1OTdFQiAvKiBNZWRpYVNlc3Npb24ubW0gKi8sCiAJCQkJNTFCRTlFNjUy
Mzc2MDg5NTAwQjRFMTE3IC8qIE1lZGlhVHlwZS5tbSAqLywKIAkJCQk1MTY1RkUwMzIwMUVFNjE3
MDA5RjdFQzMgLyogTWVzc2FnZVBvcnRQcm92aWRlcnMubW0gKi8sCiAJCQkJNTFDRDFDNkExQjM4
Q0UzNjAwMTQyQ0E1IC8qIE1vZGFsQWxlcnRzLm1tICovLApAQCAtMzkyMiw2ICszOTI4LDcgQEAK
IAkJCQk0NkM1MTlFMzFEMzU2Mjk2MDBEQUE1MUEgLyogTG9jYWxTdG9yYWdlTnVsbEVudHJpZXMu
bG9jYWxzdG9yYWdlICovLAogCQkJCTQ2QzUxOUU0MUQzNTYyOTYwMERBQTUxQSAvKiBMb2NhbFN0
b3JhZ2VOdWxsRW50cmllcy5sb2NhbHN0b3JhZ2Utc2htICovLAogCQkJCTdBNkEyQzcxMURDQ0ZC
MDIwMEMwRDA4NSAvKiBMb2NhbFN0b3JhZ2VRdWlya0VuYWJsZWQuaHRtbCAqLywKKwkJCQkwNzk0
NzQyQzI1Q0IzM0IwMDBDNTk3RUIgLyogbWVkaWEtcmVtb3RlLmh0bWwgKi8sCiAJCQkJOUI1OUYx
MjkyMDM0MDg1NDAwOUU2M0Q1IC8qIG1zby1saXN0LWNvbXBhdC1tb2RlLmh0bWwgKi8sCiAJCQkJ
OUJDRDQxMTkyMDZENUVENzAwMUQ3MUJFIC8qIG1zby1saXN0LW9uLWg0Lmh0bWwgKi8sCiAJCQkJ
OUJGMzU2Q0MyMDJENDRGMjAwRjcxMTYwIC8qIG1zby1saXN0Lmh0bWwgKi8sCkBAIC01MzgzLDYg
KzUzOTAsNyBAQAogCQkJCUNEMDM3MEUzMjRBNDREOTYwMEJBM0NBRSAvKiBNZWRpYUxvYWRpbmcu
bW0gaW4gU291cmNlcyAqLywKIAkJCQkwN0VGNzZENTI1NDBGQzA2MDA1M0VENTMgLyogTWVkaWFN
dXRlZFN0YXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBMzE1OTgxRUQ1MzY1MTAwOUY2MEQz
IC8qIE1lZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvbi5tbSBpbiBTb3VyY2VzICovLAorCQkJCTA3
OTQ3NDBEMjVDQTBCREUwMEM1OTdFQiAvKiBNZWRpYVNlc3Npb24ubW0gaW4gU291cmNlcyAqLywK
IAkJCQlDREM5NDQyRTFFRjFGQzA4MDA1OUMzQzQgLyogTWVkaWFTdHJlYW1UcmFja0RldGFjaGVk
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFCRTlFNjYyMzc2MDg5RjAwQjRFMTE3IC8qIE1lZGlh
VHlwZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUM1MUE0MTFBN0UwMDQ0N0M0QyAvKiBN
ZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSBpbiBTb3VyY2Vz
ICovLApAQCAtNTQyMSw2ICs1NDI5LDcgQEAKIAkJCQlDMTA0QkMxRjI1NDcyMzcxMDBDMDc4Qzkg
LyogT3ZlcnJpZGVBcHBsZUxhbmd1YWdlc1ByZWZlcmVuY2UubW0gaW4gU291cmNlcyAqLywKIAkJ
CQlDRUJDQTEyRjFFM0E2NjAxMDBDNzMyOTMgLyogT3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xp
Y3kubW0gaW4gU291cmNlcyAqLywKIAkJCQkyREEyNTg2RjIyNUM2N0RDMDBCNDVDMUMgLyogT3Zl
cnJpZGVWaWV3cG9ydEFyZ3VtZW50cy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTk1M0FCQjM1MjVD
MEQ2ODIwMDRDOEI3MyAvKiBQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IubW0gaW4gU291cmNl
cyAqLywKIAkJCQk3Q0NCNERBOTFDODNBRTczMDBDQzY5MTggLyogUGFnZUdyb3VwLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTdDQ0U3RjA3MUE0MTFBRTYwMDQ0N0M0QyAvKiBQYWdlTG9hZEJhc2lj
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjA4MUE0MTFBRTYwMDQ0N0M0QyAvKiBQYWdl
TG9hZERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZUZvckZyYW1lLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtNTQ2NCw3ICs1NDczLDYgQEAKIAkJCQk1MThDMTE1MzIwNUIwNTA0MDAxRkY0QUUgLyog
UHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQlGRUMyQTg1NjI0
Q0VCNjVGMDBBREJDMzUgLyogUHJvcGVydHlTbG90LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdD
ODNFMEMxMUQwQTY1MkYwMEZFQkNGMyAvKiBQcm92aXNpb25hbFVSTE5vdENoYW5nZS5tbSBpbiBT
b3VyY2VzICovLAotCQkJCTk1M0FCQjM1MjVDMEQ2ODIwMDRDOEI3MyAvKiBQYWdlRXh0ZW5kZWRC
YWNrZ3JvdW5kQ29sb3IubW0gaW4gU291cmNlcyAqLywKIAkJCQk1Q0ZBQ0Y2NTIyNkZEMkRDMDA1
NkM3RDAgLyogUHJveHkubW0gaW4gU291cmNlcyAqLywKIAkJCQkwNDFBMUUzNDIxNkZGREJDMDA3
ODlFMEEgLyogUHVibGljU3VmZml4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNFMEMyMUQw
QTY1MzUwMEZFQkNGMyAvKiBRdWlja0xvb2subW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTWVkaWFTZXNzaW9uLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9NZWRpYVNlc3Npb24ubW0KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODJkZGQwZDkxNTZiMTQyOTNhMDkxMmU5YTlhYzJkMTg4ZWI4Mzc2ZgotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTWVkaWFT
ZXNzaW9uLm1tCkBAIC0wLDAgKzEsMzcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmln
LmgiCisKKyNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShNRURJQV9TRVNTSU9OKQorCisjaW1w
b3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdC5oIgorI2ltcG9ydCAiVGVz
dFdLV2ViVmlldy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+Cisj
aW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaD4KKyNpbXBvcnQg
PFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViVmlld1ByaXZh
dGUuaD4KKyNpbXBvcnQgPHBhbC9zcGkvbWFjL01lZGlhUmVtb3RlU1BJLmg+CisjaW1wb3J0IDx3
dGYvRnVuY3Rpb24uaD4KKyNpbXBvcnQgPHd0Zi9IYXNoU2V0Lmg+CisjaW1wb3J0IDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgorI2ltcG9ydCA8d3Rm
L3RleHQvU3RyaW5nSGFzaC5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK1NP
RlRfTElOS19QUklWQVRFX0ZSQU1FV09SSyhNZWRpYVJlbW90ZSkKKworU09GVF9MSU5LKE1lZGlh
UmVtb3RlLCBNUk1lZGlhUmVtb3RlU2VuZENvbW1hbmRUb0FwcCwgQm9vbGVhbiwgKE1STWVkaWFS
ZW1vdGVDb21tYW5kIGNvbW1hbmQsIENGRGljdGlvbmFyeVJlZiBvcHRpb25zLCBNUk9yaWdpblJl
ZiBvcmlnaW4sIENGU3RyaW5nUmVmIGFwcERpc3BsYXlJRCwgTVJTZW5kQ29tbWFuZEFwcE9wdGlv
bnMgYXBwT3B0aW9ucywgZGlzcGF0Y2hfcXVldWVfdCByZXBseVEsIHZvaWQoXmNvbXBsZXRpb24p
KE1SU2VuZENvbW1hbmRFcnJvciBlcnIsIENGQXJyYXlSZWYgaGFuZGxlclJldHVyblN0YXR1c2Vz
KSksIChjb21tYW5kLCBvcHRpb25zLCBvcmlnaW4sIGFwcERpc3BsYXlJRCwgYXBwT3B0aW9ucywg
cmVwbHlRLCBjb21wbGV0aW9uKSk7CisjZGVmaW5lIE1STWVkaWFSZW1vdGVTZW5kQ29tbWFuZFRv
QXBwIHNvZnRMaW5rTVJNZWRpYVJlbW90ZVNlbmRDb21tYW5kVG9BcHAKKworU09GVF9MSU5LKE1l
ZGlhUmVtb3RlLCBNUk1lZGlhUmVtb3RlR2V0TG9jYWxPcmlnaW4sIE1ST3JpZ2luUmVmLCAoKSwg
KCkpOworI2RlZmluZSBNUk1lZGlhUmVtb3RlR2V0TG9jYWxPcmlnaW4gc29mdExpbmtNUk1lZGlh
UmVtb3RlR2V0TG9jYWxPcmlnaW4KKworU09GVF9MSU5LKE1lZGlhUmVtb3RlLCBNUk1lZGlhUmVt
b3RlR2V0U3VwcG9ydGVkQ29tbWFuZHNGb3JPcmlnaW4sIHZvaWQsIChNUk9yaWdpblJlZiBvcmln
aW4sIGRpc3BhdGNoX3F1ZXVlX3QgcXVldWUsIHZvaWQoXmNvbXBsZXRpb24pKENGQXJyYXlSZWYg
Y29tbWFuZHMpKSwgKG9yaWdpbiwgcXVldWUsIGNvbXBsZXRpb24pKTsKKyNkZWZpbmUgTVJNZWRp
YVJlbW90ZUdldFN1cHBvcnRlZENvbW1hbmRzRm9yT3JpZ2luIHNvZnRMaW5rTVJNZWRpYVJlbW90
ZUdldFN1cHBvcnRlZENvbW1hbmRzRm9yT3JpZ2luCisKK1NPRlRfTElOSyhNZWRpYVJlbW90ZSwg
TVJNZWRpYVJlbW90ZUdldE5vd1BsYXlpbmdDbGllbnQsIHZvaWQsIChkaXNwYXRjaF9xdWV1ZV90
IHF1ZXVlLCB2b2lkKF5jb21wbGV0aW9uKShNUk5vd1BsYXlpbmdDbGllbnRSZWYsIENGRXJyb3JS
ZWYpKSwgKHF1ZXVlLCBjb21wbGV0aW9uKSkKKyNkZWZpbmUgTVJNZWRpYVJlbW90ZUdldE5vd1Bs
YXlpbmdDbGllbnQgc29mdExpbmtNUk1lZGlhUmVtb3RlR2V0Tm93UGxheWluZ0NsaWVudAorCitT
T0ZUX0xJTksoTWVkaWFSZW1vdGUsIE1STm93UGxheWluZ0NsaWVudEdldFByb2Nlc3NJZGVudGlm
aWVyLCBwaWRfdCwgKE1STm93UGxheWluZ0NsaWVudFJlZiBjbGllbnQpLCAoY2xpZW50KSkKKyNk
ZWZpbmUgTVJOb3dQbGF5aW5nQ2xpZW50R2V0UHJvY2Vzc0lkZW50aWZpZXIgc29mdExpbmtNUk5v
d1BsYXlpbmdDbGllbnRHZXRQcm9jZXNzSWRlbnRpZmllcgorCitTT0ZUX0xJTktfQ09OU1RBTlQo
TWVkaWFSZW1vdGUsIGtNUk1lZGlhUmVtb3RlT3B0aW9uU2tpcEludGVydmFsLCBDRlN0cmluZ1Jl
ZikKKyNkZWZpbmUga01STWVkaWFSZW1vdGVPcHRpb25Ta2lwSW50ZXJ2YWwgZ2V0a01STWVkaWFS
ZW1vdGVPcHRpb25Ta2lwSW50ZXJ2YWwoKQorCitTT0ZUX0xJTktfQ09OU1RBTlQoTWVkaWFSZW1v
dGUsIGtNUk1lZGlhUmVtb3RlT3B0aW9uUGxheWJhY2tQb3NpdGlvbiwgQ0ZTdHJpbmdSZWYpCisj
ZGVmaW5lIGtNUk1lZGlhUmVtb3RlT3B0aW9uUGxheWJhY2tQb3NpdGlvbiBnZXRrTVJNZWRpYVJl
bW90ZU9wdGlvblBsYXliYWNrUG9zaXRpb24oKQorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7
CisKK2NsYXNzIE1lZGlhU2Vzc2lvblRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CitwdWJs
aWM6CisgICAgdm9pZCBTZXRVcCgpIGZpbmFsCisgICAgeworICAgICAgICBfY29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAg
ICAgIFtfY29uZmlndXJhdGlvbiBzZXRNZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBs
YXliYWNrOldLQXVkaW92aXN1YWxNZWRpYVR5cGVBdWRpb107CisKKyAgICAgICAgX3dlYlZpZXcg
PSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDMwMCwgMzAwKSBjb25maWd1cmF0aW9uOl9jb25maWd1cmF0aW9uLmdldCgpIGFkZFRv
V2luZG93OllFU10pOworCisgICAgICAgIFdLUHJlZmVyZW5jZXMgKnByZWZlcmVuY2VzID0gW193
ZWJWaWV3IGNvbmZpZ3VyYXRpb25dLnByZWZlcmVuY2VzOworICAgICAgICBwcmVmZXJlbmNlcy5f
bWVkaWFTZXNzaW9uRW5hYmxlZCA9IFlFUzsKKworICAgICAgICBfbWVzc2FnZUhhbmRsZXJzID0g
YWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAgfQorCisgICAgdm9p
ZCBUZWFyRG93bigpIG92ZXJyaWRlCisgICAgeworICAgICAgICBbX3dlYlZpZXcgY2xlYXJNZXNz
YWdlSGFuZGxlcnM6X21lc3NhZ2VIYW5kbGVycy5nZXQoKV07CisgICAgfQorCisgICAgVGVzdFdL
V2ViVmlldyogd2ViVmlldygpIHsgcmV0dXJuIF93ZWJWaWV3LmdldCgpOyB9CisKKyAgICBwaWRf
dCB3ZWJWaWV3UGlkKCkgeyByZXR1cm4gW193ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl07
IH0KKworICAgIFJldGFpblB0cjxNUk5vd1BsYXlpbmdDbGllbnRSZWY+IGdldE5vd1BsYXlpbmdD
bGllbnQoKQorICAgIHsKKyAgICAgICAgYm9vbCBnb3ROb3dQbGF5aW5nID0gZmFsc2U7CisgICAg
ICAgIFJldGFpblB0cjxNUk5vd1BsYXlpbmdDbGllbnRSZWY+IG5vd1BsYXlpbmdDbGllbnQ7Cisg
ICAgICAgIE1STWVkaWFSZW1vdGVHZXROb3dQbGF5aW5nQ2xpZW50KGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCksIFsmXSAoTVJOb3dQbGF5aW5nQ2xpZW50UmVmIHBsYXllciwgQ0ZFcnJvclJlZiBl
cnJvcikgeworICAgICAgICAgICAgaWYgKCFlcnJvciAmJiBwbGF5ZXIpCisgICAgICAgICAgICAg
ICAgbm93UGxheWluZ0NsaWVudCA9IHBsYXllcjsKKyAgICAgICAgICAgIGdvdE5vd1BsYXlpbmcg
PSB0cnVlOworICAgICAgICB9KTsKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZn
b3ROb3dQbGF5aW5nKTsKKyAgICAgICAgcmV0dXJuIG5vd1BsYXlpbmdDbGllbnQ7CisgICAgfQor
CisgICAgcGlkX3QgZ2V0Tm93UGxheWluZ0NsaWVudFBpZCgpCisgICAgeworICAgICAgICByZXR1
cm4gTVJOb3dQbGF5aW5nQ2xpZW50R2V0UHJvY2Vzc0lkZW50aWZpZXIoZ2V0Tm93UGxheWluZ0Ns
aWVudCgpLmdldCgpKTsKKyAgICB9CisKKyAgICB2b2lkIGxvYWRQYWdlQW5kQmVjb21lTm93UGxh
eWluZyhjb25zdCBTdHJpbmcmIHBhZ2VOYW1lKQorICAgIHsKKyAgICAgICAgW193ZWJWaWV3IHN5
bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpwYWdlTmFtZV07CisKKyAgICAgICAgYm9vbCBj
YW5wbGF5dGhyb3VnaCA9IGZhbHNlOworICAgICAgICBbd2ViVmlldygpIHBlcmZvcm1BZnRlclJl
Y2VpdmluZ01lc3NhZ2U6QCJjYW5wbGF5dGhyb3VnaCBldmVudCIgYWN0aW9uOlsmXSB7CisgICAg
ICAgICAgICBjYW5wbGF5dGhyb3VnaCA9IHRydWU7CisgICAgICAgIH1dOworICAgICAgICBydW5T
Y3JpcHRXaXRoVXNlckdlc3R1cmUoImxvYWQoKSIpOworICAgICAgICBVdGlsOjpydW4oJmNhbnBs
YXl0aHJvdWdoKTsKKworICAgICAgICBwbGF5KCk7CisgICAgICAgIHBhdXNlKCk7CisgICAgICAg
IEFTU0VSVF9FUSh3ZWJWaWV3UGlkKCksIGdldE5vd1BsYXlpbmdDbGllbnRQaWQoKSk7CisgICAg
fQorCisgICAgdm9pZCBydW5TY3JpcHRXaXRoVXNlckdlc3R1cmUoY29uc3QgU3RyaW5nJiBzY3Jp
cHQpCisgICAgeworICAgICAgICBib29sIGNvbXBsZXRlID0gZmFsc2U7CisgICAgICAgIFtfd2Vi
VmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6c2NyaXB0IGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQs
IE5TRXJyb3IgKikgeyBjb21wbGV0ZSA9IHRydWU7IH1dOworICAgICAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmNvbXBsZXRlKTsKKyAgICB9CisKKyAgICB2b2lkIHBsYXkoKQorICAgIHsK
KyAgICAgICAgYm9vbCBwbGF5aW5nID0gZmFsc2U7CisgICAgICAgIFtfd2ViVmlldyBwZXJmb3Jt
QWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOkAicGxheSBldmVudCIgYWN0aW9uOlsmXSB7IHBsYXlpbmcg
PSB0cnVlOyB9XTsKKyAgICAgICAgcnVuU2NyaXB0V2l0aFVzZXJHZXN0dXJlKCJhdWRpby5wbGF5
KCkiKTsKKyAgICAgICAgVXRpbDo6cnVuKCZwbGF5aW5nKTsKKyAgICB9CisKKyAgICB2b2lkIHBh
dXNlKCkKKyAgICB7CisgICAgICAgIGJvb2wgcGF1c2VkID0gZmFsc2U7CisgICAgICAgIFtfd2Vi
VmlldyBwZXJmb3JtQWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOkAicGF1c2UgZXZlbnQiIGFjdGlvbjpb
Jl0geyBwYXVzZWQgPSB0cnVlOyB9XTsKKyAgICAgICAgcnVuU2NyaXB0V2l0aFVzZXJHZXN0dXJl
KCJhdWRpby5wYXVzZSgpIik7CisgICAgICAgIFV0aWw6OnJ1bigmcGF1c2VkKTsKKyAgICB9CisK
KyAgICBib29sIHNlbmRNZWRpYVJlbW90ZUNvbW1hbmQoTVJNZWRpYVJlbW90ZUNvbW1hbmQgY29t
bWFuZCwgQ0ZEaWN0aW9uYXJ5UmVmIG9wdGlvbnMgPSBudWxscHRyKQorICAgIHsKKyAgICAgICAg
Ym9vbCBjb21wbGV0ZWQgPSBmYWxzZTsKKyAgICAgICAgYm9vbCBzdWNjZXNzOworCisgICAgICAg
IE1STWVkaWFSZW1vdGVTZW5kQ29tbWFuZFRvQXBwKGNvbW1hbmQsIG9wdGlvbnMsIE5VTEwsIE5V
TEwsIHN0YXRpY19jYXN0PE1SU2VuZENvbW1hbmRBcHBPcHRpb25zPigwKSwgTlVMTCwgWyZdIChN
UlNlbmRDb21tYW5kRXJyb3IgZXJyb3IsIENGQXJyYXlSZWYpIHsKKyAgICAgICAgICAgIHN1Y2Nl
c3MgPSAhZXJyb3I7CisgICAgICAgICAgICBjb21wbGV0ZWQgPSB0cnVlOworICAgICAgICB9KTsK
KyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZjb21wbGV0ZWQpOworCisgICAgICAg
IHJldHVybiBzdWNjZXNzOworICAgIH0KKworICAgIGJvb2wgc2VuZE1lZGlhUmVtb3RlU2Vla0Nv
bW1hbmQoTVJNZWRpYVJlbW90ZUNvbW1hbmQgY29tbWFuZCwgZG91YmxlIGludGVydmFsKQorICAg
IHsKKyAgICAgICAgQ0ZTdHJpbmdSZWYgc2Vla0ludGVydmFsID0gKGNvbW1hbmQgPT0gTVJNZWRp
YVJlbW90ZUNvbW1hbmRTZWVrVG9QbGF5YmFja1Bvc2l0aW9uKSA/IGtNUk1lZGlhUmVtb3RlT3B0
aW9uUGxheWJhY2tQb3NpdGlvbiA6IGtNUk1lZGlhUmVtb3RlT3B0aW9uU2tpcEludGVydmFsOwor
ICAgICAgICBOU0RpY3Rpb25hcnkgKm9wdGlvbnMgPSBAeyhfX2JyaWRnZSBOU1N0cmluZyAqKXNl
ZWtJbnRlcnZhbCA6IEAoaW50ZXJ2YWwpfTsKKyAgICAgICAgcmV0dXJuIHNlbmRNZWRpYVJlbW90
ZUNvbW1hbmQoY29tbWFuZCwgKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilvcHRpb25zKTsKKyAg
ICB9CisKKyAgICB2b2lkIGxpc3RlbkZvckV2ZW50TWVzc2FnZXMoc3RkOjppbml0aWFsaXplcl9s
aXN0PGNvbnN0IGNoYXIqPiBldmVudHMpCisgICAgeworICAgICAgICBmb3IgKGF1dG8qIGV2ZW50
IDogZXZlbnRzKSB7CisgICAgICAgICAgICBhdXRvIGV2ZW50TWVzc2FnZSA9IG1ha2VTdHJpbmco
ZXZlbnQsICIgZXZlbnQiKTsKKyAgICAgICAgICAgIFtfbWVzc2FnZUhhbmRsZXJzIGFkZE9iamVj
dDpldmVudE1lc3NhZ2VdOworICAgICAgICAgICAgW3dlYlZpZXcoKSBwZXJmb3JtQWZ0ZXJSZWNl
aXZpbmdNZXNzYWdlOmV2ZW50TWVzc2FnZSBhY3Rpb246W3RoaXMsIGV2ZW50TWVzc2FnZSA9IFdU
Rk1vdmUoZXZlbnRNZXNzYWdlKV0geworICAgICAgICAgICAgICAgIF9ldmVudExpc3RlbmVyc0Nh
bGxlZC5hZGQoZXZlbnRNZXNzYWdlKTsKKyAgICAgICAgICAgIH1dOworICAgICAgICB9CisgICAg
fQorCisgICAgYm9vbCBldmVudExpc3RlbmVyV2FzQ2FsbGVkKGNvbnN0IFN0cmluZyYgZXZlbnQp
CisgICAgeworICAgICAgICByZXR1cm4gX2V2ZW50TGlzdGVuZXJzQ2FsbGVkLmNvbnRhaW5zKG1h
a2VTdHJpbmcoZXZlbnQsICIgZXZlbnQiKSk7CisgICAgfQorCisgICAgdm9pZCB3YWl0Rm9yRXZl
bnRMaXN0ZW5lclRvQmVDYWxsZWQoY29uc3QgU3RyaW5nJiBldmVudCkKKyAgICB7CisgICAgICAg
IGludCB0cmllcyA9IDA7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGlmIChldmVudExpc3Rl
bmVyV2FzQ2FsbGVkKGV2ZW50KSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICBVdGlsOjpzbGVlcCgwLjEpOworICAgICAgICB9IHdoaWxlICgrK3RyaWVzIDw9IDUwKTsKKwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdm9pZCBsaXN0ZW5Gb3JTZXNzaW9uSGFuZGxl
ck1lc3NhZ2VzKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxjb25zdCBjaGFyKj4gaGFuZGxlcnMpCisg
ICAgeworICAgICAgICBmb3IgKGF1dG8qIGhhbmRsZXIgOiBoYW5kbGVycykgeworICAgICAgICAg
ICAgYXV0byBoYW5kbGVyTWVzc2FnZSA9IG1ha2VTdHJpbmcoaGFuZGxlciwgIiBoYW5kbGVyIik7
CisgICAgICAgICAgICBbX21lc3NhZ2VIYW5kbGVycyBhZGRPYmplY3Q6aGFuZGxlck1lc3NhZ2Vd
OworICAgICAgICAgICAgW3dlYlZpZXcoKSBwZXJmb3JtQWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOmhh
bmRsZXJNZXNzYWdlIGFjdGlvbjpbdGhpcywgaGFuZGxlck1lc3NhZ2UgPSBXVEZNb3ZlKGhhbmRs
ZXJNZXNzYWdlKV0geworICAgICAgICAgICAgICAgIF9tZWRpYVNlc3Npb25IYW5kbGVyc0NhbGxl
ZC5hZGQoaGFuZGxlck1lc3NhZ2UpOworICAgICAgICAgICAgfV07CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBib29sIHNlc3Npb25IYW5kbGVyV2FzQ2FsbGVkKGNvbnN0IFN0cmluZyYgaGFuZGxl
cikKKyAgICB7CisgICAgICAgIHJldHVybiBfbWVkaWFTZXNzaW9uSGFuZGxlcnNDYWxsZWQuY29u
dGFpbnMobWFrZVN0cmluZyhoYW5kbGVyLCAiIGhhbmRsZXIiKSk7CisgICAgfQorCisgICAgdm9p
ZCB3YWl0Rm9yU2Vzc2lvbkhhbmRsZXJUb0JlQ2FsbGVkKGNvbnN0IFN0cmluZyYgaGFuZGxlcikK
KyAgICB7CisgICAgICAgIGludCB0cmllcyA9IDA7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAg
IGlmIChzZXNzaW9uSGFuZGxlcldhc0NhbGxlZChoYW5kbGVyKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICBVdGlsOjpzbGVlcCgwLjEpOworICAgICAgICB9IHdoaWxlICgr
K3RyaWVzIDw9IDUwKTsKKworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUmV0YWluUHRy
PE5TQXJyYXk+IGdldFN1cHBvcnRlZENvbW1hbmRzKCkKKyAgICB7CisgICAgICAgIGJvb2wgY29t
cGxldGVkID0gZmFsc2U7CisgICAgICAgIFJldGFpblB0cjxOU0FycmF5PiByZXN1bHQ7CisKKyAg
ICAgICAgTVJNZWRpYVJlbW90ZUdldFN1cHBvcnRlZENvbW1hbmRzRm9yT3JpZ2luKE1STWVkaWFS
ZW1vdGVHZXRMb2NhbE9yaWdpbigpLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbJl0gKENG
QXJyYXlSZWYgY29tbWFuZHMpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IChfX2JyaWRnZSBOU0Fy
cmF5ICopY29tbWFuZHM7CisgICAgICAgICAgICBjb21wbGV0ZWQgPSB0cnVlOworICAgICAgICB9
KTsKKworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmNvbXBsZXRlZCk7CisKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgUmV0YWluUHRyPFdL
V2ViVmlld0NvbmZpZ3VyYXRpb24+IF9jb25maWd1cmF0aW9uOworICAgIFJldGFpblB0cjxUZXN0
V0tXZWJWaWV3PiBfd2ViVmlldzsKKworICAgIEhhc2hTZXQ8U3RyaW5nPiBfbWVkaWFTZXNzaW9u
SGFuZGxlcnNDYWxsZWQ7CisgICAgSGFzaFNldDxTdHJpbmc+IF9ldmVudExpc3RlbmVyc0NhbGxl
ZDsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IF9tZXNzYWdlSGFuZGxlcnM7Cit9Owor
CitURVNUX0YoTWVkaWFTZXNzaW9uVGVzdCwgT25seU9uZUhhbmRsZXIpCit7CisgICAgbG9hZFBh
Z2VBbmRCZWNvbWVOb3dQbGF5aW5nKCJtZWRpYS1yZW1vdGUiKTsKKworICAgIFt3ZWJWaWV3KCkg
b2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInNldEVtcHR5QWN0aW9uSGFuZGxlcnMoWyAn
cGxheScgXSkiXTsKKworICAgIGxpc3RlbkZvclNlc3Npb25IYW5kbGVyTWVzc2FnZXMoeyAicGxh
eSIsICJwYXVzZSIsICJzZWVrdG8iLCAic2Vla2ZvcndhcmQiLCAic2Vla2JhY2t3YXJkIiwgInBy
ZXZpb3VzdHJhY2siLCAibmV4dHRyYWNrIiB9KTsKKyAgICBsaXN0ZW5Gb3JFdmVudE1lc3NhZ2Vz
KHsgInBsYXkiLCAicGF1c2UiLCAic2Vla2VkIiB9KTsKKworICAgIHN0YXRpYyBWZWN0b3I8TVJN
ZWRpYVJlbW90ZUNvbW1hbmQ+IHJlZ2lzdGVyZWRDb21tYW5kcyA9IHsgTVJNZWRpYVJlbW90ZUNv
bW1hbmRQbGF5IH07CisgICAgYXV0byBjdXJyZW50Q29tbWFuZHMgPSBnZXRTdXBwb3J0ZWRDb21t
YW5kcygpOworICAgIGZvciAoTVJDb21tYW5kSW5mbyAqY29tbWFuZCBpbiBjdXJyZW50Q29tbWFu
ZHMuZ2V0KCkpIHsKKyAgICAgICAgaWYgKCFjb21tYW5kLmVuYWJsZWQpCisgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgCisgICAgICAgIEFTU0VSVF9UUlVFKHJlZ2lzdGVyZWRDb21tYW5k
cy5jb250YWlucyhjb21tYW5kLmNvbW1hbmQpKTsKKyAgICB9CisKKyAgICBBU1NFUlRfVFJVRShz
ZW5kTWVkaWFSZW1vdGVDb21tYW5kKE1STWVkaWFSZW1vdGVDb21tYW5kUGxheSkpOworICAgIHdh
aXRGb3JTZXNzaW9uSGFuZGxlclRvQmVDYWxsZWQoInBsYXkiKTsKKyAgICBBU1NFUlRfVFJVRShz
ZXNzaW9uSGFuZGxlcldhc0NhbGxlZCgicGxheSIpKTsKKyAgICBBU1NFUlRfRkFMU0UoZXZlbnRM
aXN0ZW5lcldhc0NhbGxlZCgicGxheSIpKTsKKworICAgIC8vIFRoZSBtZWRpYSBzZXNzaW9uIG9u
bHkgcmVnaXN0ZXJlZCBmb3IgUGxheSwgYnV0IG5vIG90aGVyIGNvbW1hbmRzIHNob3VsZCByZWFj
aCBIVE1MTWVkaWFFbGVtZW50LgorICAgIEFTU0VSVF9UUlVFKHNlbmRNZWRpYVJlbW90ZVNlZWtD
b21tYW5kKE1STWVkaWFSZW1vdGVDb21tYW5kU2tpcEZvcndhcmQsIDEpKTsKKyAgICBBU1NFUlRf
RkFMU0Uoc2Vzc2lvbkhhbmRsZXJXYXNDYWxsZWQoInNlZWtmb3J3YXJkIikpOworICAgIEFTU0VS
VF9GQUxTRShldmVudExpc3RlbmVyV2FzQ2FsbGVkKCJzZWVrZWQiKSk7CisKKyAgICBBU1NFUlRf
VFJVRShzZW5kTWVkaWFSZW1vdGVTZWVrQ29tbWFuZChNUk1lZGlhUmVtb3RlQ29tbWFuZFNraXBC
YWNrd2FyZCwgMTApKTsKKyAgICBBU1NFUlRfRkFMU0Uoc2Vzc2lvbkhhbmRsZXJXYXNDYWxsZWQo
InNlZWtiYWNrd2FyZCIpKTsKKyAgICBBU1NFUlRfRkFMU0UoZXZlbnRMaXN0ZW5lcldhc0NhbGxl
ZCgic2Vla2VkIikpOworCisgICAgQVNTRVJUX1RSVUUoc2VuZE1lZGlhUmVtb3RlU2Vla0NvbW1h
bmQoTVJNZWRpYVJlbW90ZUNvbW1hbmRTZWVrVG9QbGF5YmFja1Bvc2l0aW9uLCA2KSk7CisgICAg
QVNTRVJUX0ZBTFNFKHNlc3Npb25IYW5kbGVyV2FzQ2FsbGVkKCJzZWVrdG8iKSk7CisgICAgQVNT
RVJUX0ZBTFNFKGV2ZW50TGlzdGVuZXJXYXNDYWxsZWQoInNlZWtlZCIpKTsKKworICAgIEFTU0VS
VF9UUlVFKHNlbmRNZWRpYVJlbW90ZUNvbW1hbmQoTVJNZWRpYVJlbW90ZUNvbW1hbmROZXh0VHJh
Y2spKTsKKyAgICBBU1NFUlRfRkFMU0Uoc2Vzc2lvbkhhbmRsZXJXYXNDYWxsZWQoIm5leHR0cmFj
ayIpKTsKKworICAgIEFTU0VSVF9UUlVFKHNlbmRNZWRpYVJlbW90ZUNvbW1hbmQoTVJNZWRpYVJl
bW90ZUNvbW1hbmRQcmV2aW91c1RyYWNrKSk7CisgICAgQVNTRVJUX0ZBTFNFKHNlc3Npb25IYW5k
bGVyV2FzQ2FsbGVkKCJwcmV2aW91c3RyYWNrIikpOworfQorCitURVNUX0YoTWVkaWFTZXNzaW9u
VGVzdCwgUmVtb3RlQ29tbWFuZHMpCit7CisgICAgbG9hZFBhZ2VBbmRCZWNvbWVOb3dQbGF5aW5n
KCJtZWRpYS1yZW1vdGUiKTsKKworICAgIFt3ZWJWaWV3KCkgb2JqZWN0QnlFdmFsdWF0aW5nSmF2
YVNjcmlwdDpAInNldEVtcHR5QWN0aW9uSGFuZGxlcnMoWyAncGxheScsICdwYXVzZScsICdzZWVr
dG8nLCAnc2Vla2ZvcndhcmQnLCAnc2Vla2JhY2t3YXJkJywgJ3ByZXZpb3VzdHJhY2snLCAnbmV4
dHRyYWNrJyBdKSJdOworCisgICAgbGlzdGVuRm9yU2Vzc2lvbkhhbmRsZXJNZXNzYWdlcyh7ICJw
bGF5IiwgInBhdXNlIiwgInNlZWt0byIsICJzZWVrZm9yd2FyZCIsICJzZWVrYmFja3dhcmQiLCAi
cHJldmlvdXN0cmFjayIsICJuZXh0dHJhY2siIH0pOworICAgIGxpc3RlbkZvckV2ZW50TWVzc2Fn
ZXMoeyAicGxheSIsICJwYXVzZSIsICJzZWVrZWQiIH0pOworCisgICAgc3RhdGljIFZlY3RvcjxN
Uk1lZGlhUmVtb3RlQ29tbWFuZD4gcmVnaXN0ZXJlZENvbW1hbmRzID0geyBNUk1lZGlhUmVtb3Rl
Q29tbWFuZFBsYXksIE1STWVkaWFSZW1vdGVDb21tYW5kUGF1c2UsIE1STWVkaWFSZW1vdGVDb21t
YW5kU2Vla1RvUGxheWJhY2tQb3NpdGlvbiwgTVJNZWRpYVJlbW90ZUNvbW1hbmRTa2lwRm9yd2Fy
ZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRTa2lwQmFja3dhcmQsIE1STWVkaWFSZW1vdGVDb21tYW5k
UHJldmlvdXNUcmFjaywgTVJNZWRpYVJlbW90ZUNvbW1hbmROZXh0VHJhY2sgfTsKKyAgICBhdXRv
IGN1cnJlbnRDb21tYW5kcyA9IGdldFN1cHBvcnRlZENvbW1hbmRzKCk7CisgICAgZm9yIChNUkNv
bW1hbmRJbmZvICpjb21tYW5kIGluIGN1cnJlbnRDb21tYW5kcy5nZXQoKSkgeworICAgICAgICBp
ZiAoIWNvbW1hbmQuZW5hYmxlZCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAKKyAg
ICAgICAgQVNTRVJUX1RSVUUocmVnaXN0ZXJlZENvbW1hbmRzLmNvbnRhaW5zKGNvbW1hbmQuY29t
bWFuZCkpOworICAgIH0KKworICAgIEFTU0VSVF9UUlVFKHNlbmRNZWRpYVJlbW90ZUNvbW1hbmQo
TVJNZWRpYVJlbW90ZUNvbW1hbmRQbGF5KSk7CisgICAgd2FpdEZvclNlc3Npb25IYW5kbGVyVG9C
ZUNhbGxlZCgicGxheSIpOworICAgIEFTU0VSVF9UUlVFKHNlc3Npb25IYW5kbGVyV2FzQ2FsbGVk
KCJwbGF5IikpOworICAgIEFTU0VSVF9GQUxTRShldmVudExpc3RlbmVyV2FzQ2FsbGVkKCJwbGF5
IikpOworCisgICAgQVNTRVJUX1RSVUUoc2VuZE1lZGlhUmVtb3RlQ29tbWFuZChNUk1lZGlhUmVt
b3RlQ29tbWFuZFBhdXNlKSk7CisgICAgd2FpdEZvclNlc3Npb25IYW5kbGVyVG9CZUNhbGxlZCgi
cGF1c2UiKTsKKyAgICBBU1NFUlRfVFJVRShzZXNzaW9uSGFuZGxlcldhc0NhbGxlZCgicGF1c2Ui
KSk7CisgICAgQVNTRVJUX0ZBTFNFKGV2ZW50TGlzdGVuZXJXYXNDYWxsZWQoInBhdXNlIikpOwor
CisgICAgQVNTRVJUX1RSVUUoc2VuZE1lZGlhUmVtb3RlU2Vla0NvbW1hbmQoTVJNZWRpYVJlbW90
ZUNvbW1hbmRTa2lwRm9yd2FyZCwgMSkpOworICAgIHdhaXRGb3JTZXNzaW9uSGFuZGxlclRvQmVD
YWxsZWQoInNlZWtmb3J3YXJkIik7CisgICAgQVNTRVJUX1RSVUUoc2Vzc2lvbkhhbmRsZXJXYXND
YWxsZWQoInNlZWtmb3J3YXJkIikpOworICAgIEFTU0VSVF9GQUxTRShldmVudExpc3RlbmVyV2Fz
Q2FsbGVkKCJzZWVrZWQiKSk7CisKKyAgICBBU1NFUlRfVFJVRShzZW5kTWVkaWFSZW1vdGVTZWVr
Q29tbWFuZChNUk1lZGlhUmVtb3RlQ29tbWFuZFNraXBCYWNrd2FyZCwgMTApKTsKKyAgICB3YWl0
Rm9yU2Vzc2lvbkhhbmRsZXJUb0JlQ2FsbGVkKCJzZWVrYmFja3dhcmQiKTsKKyAgICBBU1NFUlRf
VFJVRShzZXNzaW9uSGFuZGxlcldhc0NhbGxlZCgic2Vla2JhY2t3YXJkIikpOworICAgIEFTU0VS
VF9GQUxTRShldmVudExpc3RlbmVyV2FzQ2FsbGVkKCJzZWVrZWQiKSk7CisKKyAgICBBU1NFUlRf
VFJVRShzZW5kTWVkaWFSZW1vdGVTZWVrQ29tbWFuZChNUk1lZGlhUmVtb3RlQ29tbWFuZFNlZWtU
b1BsYXliYWNrUG9zaXRpb24sIDYpKTsKKyAgICB3YWl0Rm9yU2Vzc2lvbkhhbmRsZXJUb0JlQ2Fs
bGVkKCJzZWVrdG8iKTsKKyAgICBBU1NFUlRfVFJVRShzZXNzaW9uSGFuZGxlcldhc0NhbGxlZCgi
c2Vla3RvIikpOworICAgIEFTU0VSVF9GQUxTRShldmVudExpc3RlbmVyV2FzQ2FsbGVkKCJzZWVr
ZWQiKSk7CisKKyAgICBBU1NFUlRfVFJVRShzZW5kTWVkaWFSZW1vdGVDb21tYW5kKE1STWVkaWFS
ZW1vdGVDb21tYW5kTmV4dFRyYWNrKSk7CisgICAgd2FpdEZvclNlc3Npb25IYW5kbGVyVG9CZUNh
bGxlZCgibmV4dHRyYWNrIik7CisgICAgQVNTRVJUX1RSVUUoc2Vzc2lvbkhhbmRsZXJXYXNDYWxs
ZWQoIm5leHR0cmFjayIpKTsKKworICAgIEFTU0VSVF9UUlVFKHNlbmRNZWRpYVJlbW90ZUNvbW1h
bmQoTVJNZWRpYVJlbW90ZUNvbW1hbmRQcmV2aW91c1RyYWNrKSk7CisgICAgd2FpdEZvclNlc3Np
b25IYW5kbGVyVG9CZUNhbGxlZCgicHJldmlvdXN0cmFjayIpOworICAgIEFTU0VSVF9UUlVFKHNl
c3Npb25IYW5kbGVyV2FzQ2FsbGVkKCJwcmV2aW91c3RyYWNrIikpOworCisgICAgLy8gVW5yZWdp
c3RlciBhY3Rpb24gaGFuZGxlcnMsIHN1cHBvcnRlZCBjb21tYW5kcyBzaG91bGQgZ28gdG8gSFRN
TE1lZGlhRWxlbWVudC4KKyAgICBbd2ViVmlldygpIG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6QCJjbGVhckFjdGlvbkhhbmRsZXJzKCkiXTsKKworICAgIEFTU0VSVF9UUlVFKHNlbmRNZWRp
YVJlbW90ZUNvbW1hbmQoTVJNZWRpYVJlbW90ZUNvbW1hbmRQbGF5KSk7CisgICAgd2FpdEZvckV2
ZW50TGlzdGVuZXJUb0JlQ2FsbGVkKCJwbGF5Iik7CisgICAgQVNTRVJUX1RSVUUoZXZlbnRMaXN0
ZW5lcldhc0NhbGxlZCgicGxheSIpKTsKKworICAgIEFTU0VSVF9UUlVFKHNlbmRNZWRpYVJlbW90
ZUNvbW1hbmQoTVJNZWRpYVJlbW90ZUNvbW1hbmRQYXVzZSkpOworICAgIHdhaXRGb3JFdmVudExp
c3RlbmVyVG9CZUNhbGxlZCgicGxheSIpOworICAgIEFTU0VSVF9UUlVFKGV2ZW50TGlzdGVuZXJX
YXNDYWxsZWQoInBhdXNlIikpOworCisgICAgQVNTRVJUX1RSVUUoc2VuZE1lZGlhUmVtb3RlU2Vl
a0NvbW1hbmQoTVJNZWRpYVJlbW90ZUNvbW1hbmRTa2lwRm9yd2FyZCwgMSkpOworICAgIHdhaXRG
b3JFdmVudExpc3RlbmVyVG9CZUNhbGxlZCgic2Vla2VkIik7CisgICAgQVNTRVJUX1RSVUUoZXZl
bnRMaXN0ZW5lcldhc0NhbGxlZCgic2Vla2VkIikpOworCisgICAgQVNTRVJUX1RSVUUoc2VuZE1l
ZGlhUmVtb3RlU2Vla0NvbW1hbmQoTVJNZWRpYVJlbW90ZUNvbW1hbmRTa2lwQmFja3dhcmQsIDEw
KSk7CisgICAgd2FpdEZvckV2ZW50TGlzdGVuZXJUb0JlQ2FsbGVkKCJzZWVrZWQiKTsKKyAgICBB
U1NFUlRfVFJVRShldmVudExpc3RlbmVyV2FzQ2FsbGVkKCJzZWVrZWQiKSk7CisKKyAgICBBU1NF
UlRfVFJVRShzZW5kTWVkaWFSZW1vdGVTZWVrQ29tbWFuZChNUk1lZGlhUmVtb3RlQ29tbWFuZFNl
ZWtUb1BsYXliYWNrUG9zaXRpb24sIDYpKTsKKyAgICB3YWl0Rm9yRXZlbnRMaXN0ZW5lclRvQmVD
YWxsZWQoInNlZWtlZCIpOworICAgIEFTU0VSVF9UUlVFKGV2ZW50TGlzdGVuZXJXYXNDYWxsZWQo
InNlZWtlZCIpKTsKK30KKworfQorCisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUo
TUVESUFfU0VTU0lPTikKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvbWVkaWEtcmVtb3RlLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL21lZGlhLXJlbW90ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjOTkzYzdjZDQwMWFmZjMy
Y2YyMzJlZGJjODgzZWNkYzc5YmIzNWYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL21lZGlhLXJlbW90ZS5odG1sCkBAIC0wLDAgKzEsMTM5
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CisgICAgI2V2ZW50
c2xvZyB7CisgICAgICAgIGZvbnQtc2l6ZTogMTBweDsgCisgICAgICAgIGhlaWdodDogY2FsYygx
MDAlIC0gKDMyMHB4KSk7CisgICAgICAgIG92ZXJmbG93LXk6IHNjcm9sbDsKKyAgICAgICAgYm9y
ZGVyOiAxcHggc29saWQgcmdiYSgxNDcsIDEyOCwgMTA4LCAwLjI1KTsKKyAgICB9Cis8L3N0eWxl
PgorICAgIDxzY3JpcHQ+CisKKyAgICAgICAgbGV0IHBsYXlsaXN0ID0geworICAgICAgICAgICAg
Y3VycmVudDogMCwKKyAgICAgICAgICAgIG1ldGFkYXRhOiBbCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICB1cmw6ICd2aWRlby13aXRoLWF1ZGlvLm1wNCcsCisgICAgICAg
ICAgICAgICAgICAgIHRpdGxlOiAnQmlwIEJvcCBXaXRoIEF1ZGlvJywKKyAgICAgICAgICAgICAg
ICAgICAgYXJ0aXN0OiAnVGhlIEJpcCBCb3AgQXV0aG9ycycsCisgICAgICAgICAgICAgICAgICAg
IGFsYnVtOiAnV2ViS2l0IEdyZWF0ZXN0IEhpdHMnLAorICAgICAgICAgICAgICAgICAgICBhcnR3
b3JrOiBbCisKKyAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdXJsOiAndmlkZW8td2l0aG91dC1h
dWRpby5tcDQnLAorICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ0JpcCBCb3AgV2l0aG91dCBB
dWRpbycsCisgICAgICAgICAgICAgICAgICAgIGFydGlzdDogJ1RoZSBCaXAgQm9wIEF1dGhvcnMn
LAorICAgICAgICAgICAgICAgICAgICBhbGJ1bTogJ1dlYktpdCBPcmlnaW5hbCBUZXN0IENvbnRl
bnQnLAorICAgICAgICAgICAgICAgICAgICBhcnR3b3JrOiBbCisKKyAgICAgICAgICAgICAgICAg
ICAgXSwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgXSwKKyAgICAgICAgfTsKKwor
ICAgICAgICBmdW5jdGlvbiBzZXRNZXRhZGF0YShkYXRhKQorICAgICAgICB7CisgICAgICAgICAg
ICBuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLm1ldGFkYXRhID0gbmV3IE1lZGlhTWV0YWRhdGEoZGF0
YSk7CisgICAgICAgICAgICBwb3N0TWVzc2FnZSgnc2V0IG1ldGFkYXRhJykKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIHNldFBsYXlsaXN0TWV0YWRhdGEoaW5kZXgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHNldE1ldGFkYXRhKHBsYXlsaXN0Lm1ldGFkYXRhW2luZGV4XSk7CisgICAg
ICAgIAorICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2xlYXJBY3Rpb25IYW5kbGVycygp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHNldEVtcHR5QWN0aW9uSGFuZGxlcnMoW10pOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2V0RW1wdHlBY3Rpb25IYW5kbGVycyhoYW5kbGVy
cykKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgYWN0aW9ucyA9IHsKKyAgICAgICAgICAg
ICAgICAncGxheScgOiAoKSA9PiB7IHBvc3RNZXNzYWdlKCdwbGF5IGhhbmRsZXInKTsgfSwKKwor
ICAgICAgICAgICAgICAgICdwYXVzZScgOiAoKSA9PiB7IHBvc3RNZXNzYWdlKCdwYXVzZSBoYW5k
bGVyJykgfSwKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAnc2Vla3RvJyA6IChk
ZXRhaWxzKSA9PiB7IHBvc3RNZXNzYWdlKCdzZWVrdG8gaGFuZGxlcicpIH0sCisKKyAgICAgICAg
ICAgICAgICAnc2Vla2ZvcndhcmQnIDogKGRldGFpbHMpID0+IHsgcG9zdE1lc3NhZ2UoJ3NlZWtm
b3J3YXJkIGhhbmRsZXInKSB9LAorCisgICAgICAgICAgICAgICAgJ3NlZWtiYWNrd2FyZCcgOiAo
ZGV0YWlscykgPT4geyBwb3N0TWVzc2FnZSgnc2Vla2JhY2t3YXJkIGhhbmRsZXInKSB9LCAKKwor
ICAgICAgICAgICAgICAgICdwcmV2aW91c3RyYWNrJyA6ICgpID0+IHsgcG9zdE1lc3NhZ2UoJ3By
ZXZpb3VzdHJhY2sgaGFuZGxlcicpIH0sIAorCisgICAgICAgICAgICAgICAgJ25leHR0cmFjaycg
OiAoKSA9PiB7IHBvc3RNZXNzYWdlKCduZXh0dHJhY2sgaGFuZGxlcicpIH0sIAorICAgICAgICAg
ICAgfTsKKworICAgICAgICAgICAgT2JqZWN0LmtleXMoYWN0aW9ucykuZm9yRWFjaChhY3Rpb24g
PT4geyAgbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5zZXRBY3Rpb25IYW5kbGVyKGFjdGlvbiwgbnVs
bCk7IH0pOworCisgICAgICAgICAgICBoYW5kbGVycy5mb3JFYWNoKGhhbmRsZXIgPT4geworICAg
ICAgICAgICAgICAgIGlmICghYWN0aW9uc1toYW5kbGVyXSkgeworICAgICAgICAgICAgICAgICAg
ICBsb2coYGFza2VkIHRvIHJlZ2lzdGVyIGhhbmRsZXIgZm9yIHVua25vd24gYWN0aW9uICcke2hh
bmRsZXJ9J2ApOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgbG9nKGByZWdpc3RlcmluZyAnJHtoYW5kbGVyfScgaGFuZGxl
cmApOworICAgICAgICAgICAgICAgIG5hdmlnYXRvci5tZWRpYVNlc3Npb24uc2V0QWN0aW9uSGFu
ZGxlcihoYW5kbGVyLCBhY3Rpb25zW2hhbmRsZXJdKTsgCisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHBvc3RNZXNzYWdlKG1lc3NhZ2UpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGxvZyhgJHttZXNzYWdlfWApCisgICAgICAgICAgICBpZiAod2luZG93Lndl
YmtpdCkKKyAgICAgICAgICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0
SGFuZGxlci5wb3N0TWVzc2FnZShtZXNzYWdlKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHBvc3RFdmVudChldnQpIAorICAgICAgICB7CisgICAgICAgICAgICBwb3N0TWVzc2FnZShg
JHtldnQudHlwZX0gZXZlbnRgKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZnVuY3Rp
b24gbG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxldCBzcmMgPSBwbGF5bGlzdC5tZXRh
ZGF0YVswXS51cmw7CisgICAgICAgICAgICBpZiAoIXdpbmRvdy53ZWJraXQpCisgICAgICAgICAg
ICAgICAgc3JjID0gYC4uL1dlYktpdExlZ2FjeS9pb3MvJHtzcmN9YDsKKyAgICAgICAgICAgIGF1
ZGlvLnNyYyA9IHNyYzsKKyAgICAgICAgICAgIGF1ZGlvLmxvYWQoKTsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgZnVuY3Rpb24gbG9nKG1zZykKKyAgICAgICAgeworICAgICAgICAgICAg
bGV0IGV2ZW50TG9nID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V2ZW50c2xvZycpCisgICAg
ICAgICAgICBsZXQgbm90ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAg
ICAgICAgbm90ZS5pbm5lckhUTUwgPSBtc2c7CisgICAgICAgICAgICBldmVudExvZy5pbnNlcnRC
ZWZvcmUobm90ZSwgZXZlbnRMb2cuZmlyc3RDaGlsZCk7CisgICAgICAgIH0KKworICAgICAgICAK
KyAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBldnQgPT4geworICAgICAg
ICAgICAgYXVkaW8gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYXVkaW8nKVswXTsK
KyAgICAgICAgICAgIGF1ZGlvLmFkZEV2ZW50TGlzdGVuZXIoJ2NhbnBsYXl0aHJvdWdoJywgcG9z
dEV2ZW50KTsKKyAgICAgICAgICAgIGF1ZGlvLmFkZEV2ZW50TGlzdGVuZXIoJ3BsYXknLCBwb3N0
RXZlbnQpOworICAgICAgICAgICAgYXVkaW8uYWRkRXZlbnRMaXN0ZW5lcigncGF1c2UnLCBwb3N0
RXZlbnQpOworICAgICAgICAgICAgYXVkaW8uYWRkRXZlbnRMaXN0ZW5lcignc2Vla2VkJywgcG9z
dEV2ZW50KTsKKyAgICAgICAgfSwgZmFsc2UpOworCisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKyAgICA8YXVkaW8gY29udHJvbHM+IDwvYXVkaW8+CisgICAgPGJyPgorICAgIDxidXR0
b24gb25jbGljaz0ic2V0RW1wdHlBY3Rpb25IYW5kbGVycyhbJ3BsYXknLCdwYXVzZScsJ3NlZWt0
byddKSI+RW1wdHkgUGxheSwgUGF1c2UsIFNlZWtUbzwvYnV0dG9uPgorICAgIDxicj4KKyAgICA8
YnV0dG9uIG9uY2xpY2s9InNldEVtcHR5QWN0aW9uSGFuZGxlcnMoWydwbGF5JywncGF1c2UnLCdz
ZWVrZm9yd2FyZCcsJ3NlZWtiYWNrd2FyZCddKSI+RW1wdHkgUGxheSwgUGF1c2UsIFNlZWsgRm9y
d2FyZCwgU2VlayBCYWNrd2FyZDwvYnV0dG9uPgorICAgIDxicj4KKyAgICA8YnV0dG9uIG9uY2xp
Y2s9ImxvYWQoKSI+TG9hZDwvYnV0dG9uPgorICAgIDxicj4KKyAgICA8YnV0dG9uIG9uY2xpY2s9
InNldFBsYXlsaXN0TWV0YWRhdGEoMCkiPlNldCBNZXRhZGF0YSAxPC9idXR0b24+PGJ1dHRvbiBv
bmNsaWNrPSJzZXRQbGF5bGlzdE1ldGFkYXRhKDEpIj5TZXQgTWV0YWRhdGEgMjwvYnV0dG9uPgor
ICAgIDxicj4KKyAgICA8ZGl2IGlkPSdldmVudHNsb2cnPjwvZGl2PgorPC9ib2R5PgorPC9odG1s
Pgo=
</data>
<flag name="commit-queue"
          id="437557"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419347</attachid>
            <date>2021-02-04 17:54:38 -0800</date>
            <delta_ts>2021-02-05 04:48:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221431-20210204175437.patch</filename>
            <type>text/plain</type>
            <size>94312</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDY1NTU5N2Y2NWVlNjhi
MzU4NTk2MzFmZjU2MjljMzNiZmE0YTliOC4uY2M4OTA1ZGZkZWQwZTg0N2Q2MzEwZmFiNjUyMzg4
YThhMTc1ZmQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisyMDIxLTAyLTA0ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIENvbm5l
Y3QgTWVkaWFTZXNzaW9uIHdpdGggTWVkaWFSZW1vdGUgYW5kIE5vd1BsYXlpbmcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTQzMQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNzQwMDAzNjM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUm91dGUgYWxsIHJlbW90ZSBjb250cm9sIGNvbW1hbmRzIHRvIG5h
dmlnYXRvci5tZWRpYVNlc3Npb24gd2hlbiBpdCBoYXMgYW55IAorICAgICAgICByZWdpc3RlcmVk
IGFjdGlvbiBoYW5kbGVycywgYW5kIHBhc3MgbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5tZXRhZGF0
YSB0byBOb3dQbGF5aW5nLgorCisgICAgICAgIFRlc3RlZCBieSBuZXcgQVBJIHRlc3RzIGluIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTWVkaWFTZXNzaW9uLm1tLgorCisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFJbWFnZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFJbWFnZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
SW1hZ2U6OmRlY29kZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRh
ZGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYU1ldGFkYXRhOjpzZXRUaXRsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYU1ldGFkYXRhOjpzZXRBcnRpc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFNZXRhZGF0YTo6c2V0QWxidW0pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFN
ZXRhZGF0YTo6c2V0QXJ0d29yayk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVk
aWFNZXRhZGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFNZXRhZGF0YTo6dGl0bGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFNZXRhZGF0YTo6YXJ0aXN0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhTWV0YWRhdGE6OmFsYnVtIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhTWV0YWRhdGE6OmFydHdvcmsgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFNZXRhZGF0YTo6bWV0YWRhdGEgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
ZXNzaW9uL01lZGlhTWV0YWRhdGFJbml0Lmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYU1ldGFk
YXRhSW5pdDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhTWV0YWRhdGFJ
bml0OjpkZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpuZXh0TG9nSWRlbnRpZmllcik6CisgICAgICAgIChX
ZWJDb3JlOjpsb2dDaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6OmxvZ0NsYXNzTmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUNvbW1hbmRGb3JNZWRpYVNlc3Npb25BY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uOjpNZWRpYVNlc3Npb24pOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTZXNzaW9uOjpzZXRNZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVNlc3Npb246OnNldFBsYXliYWNrU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
ZXNzaW9uOjpzZXRBY3Rpb25IYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lv
bjo6c2V0UG9zaXRpb25TdGF0ZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVk
aWFTZXNzaW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb246Omhhc0FjdGl2ZUFj
dGlvbkhhbmRsZXJzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6bG9n
Z2VyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6bG9nSWRlbnRpZmll
ciBjb25zdCk6CisgICAgICAgIChXVEY6OkxvZ0FyZ3VtZW50PFdlYkNvcmU6Ok1lZGlhU2Vzc2lv
blBsYXliYWNrU3RhdGU+Ojp0b1N0cmluZyk6CisgICAgICAgIChXVEY6OkxvZ0FyZ3VtZW50PFdl
YkNvcmU6Ok1lZGlhU2Vzc2lvbkFjdGlvbj46OnRvU3RyaW5nKToKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmRpZFJlY2VpdmVS
ZW1vdGVDb250cm9sQ29tbWFuZCk6CisgICAgICAgICogaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OmRpZFJlY2VpdmVS
ZW1vdGVDb250cm9sQ29tbWFuZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNz
aW9uOjpub3dQbGF5aW5nSW5mbyBjb25zdCk6CisgICAgICAgICogaHRtbC9NZWRpYUVsZW1lbnRT
ZXNzaW9uLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3Rl
Q29tbWFuZExpc3RlbmVyOjpzY2hlZHVsZVN1cHBvcnRlZENvbW1hbmRzVXBkYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6YWRkU3VwcG9ydGVkQ29tbWFuZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVDb21tYW5kTGlzdGVuZXI6OnJlbW92ZVN1cHBvcnRl
ZENvbW1hbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmg6CisgICAgICAgIChXZWJD
b3JlOjpOb3dQbGF5aW5nSW5mbzo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9Q
bGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RW51bWVy
YXRpb25Ub1N0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNl
c3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6
YWRkU3VwcG9ydGVkQ29tbWFuZCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXI6OnJlbW92ZVN1cHBvcnRlZENvbW1hbmQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2NoZWR1bGVTZXNzaW9uU3RhdHVzVXBk
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2Vzc2lv
bkNhblByb2R1Y2VBdWRpb0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9u
TWFuYWdlckNvY29hOjphZGRTdXBwb3J0ZWRDb21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6cmVtb3ZlU3VwcG9ydGVkQ29tbWFuZCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJbmZvKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvTWVkaWFSZW1vdGVTb2Z0TGluay5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL01lZGlhUmVtb3RlU29mdExpbmsuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om1lZGlhUmVt
b3RlQ29tbWFuZEZvclBsYXRmb3JtQ29tbWFuZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVD
b21tYW5kTGlzdGVuZXJNYWM6OmRlZmF1bHRDb21tYW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpp
c1NlZWtDb21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lck1h
Yzo6dXBkYXRlU3VwcG9ydGVkQ29tbWFuZHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlQ29t
bWFuZExpc3RlbmVyTWFjOjpSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMpOgorCiAyMDIxLTAyLTA0
ICBKdWxpYW4gR29uemFsZXogIDxqdWxpYW5fYV9nb256YWxlekBhcHBsZS5jb20+CiAKICAgICAg
ICAgTnVsbCBkZXJlZmVyZW5jZSBpbiBEb2N1bWVudExvYWRlcjo6Y29tbWl0RGF0YSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFM
L0NoYW5nZUxvZwppbmRleCAwOWIxMGNhMTI3OWQ5YjgxNTY2ZGE4ZmZhMmUwMWU0NWQ1MGI3YmZh
Li5hNmY2YzJjZmQwYjVjMTFjZTcwZTEyOTc3OGZjMjEwZGUxMWU1MjQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0wMi0wNCAgRXJpYyBDYXJsc29uICA8ZXJpYy5j
YXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWFjXSBDb25uZWN0IE1lZGlhU2Vzc2lvbiB3
aXRoIE1lZGlhUmVtb3RlIGFuZCBOb3dQbGF5aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE0MzEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc0
MDAwMzYzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcGFsL3NwaS9tYWMvTWVkaWFSZW1vdGVTUEkuaDoKKwogMjAyMS0wMi0wMSAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIERpc2FibGUgaW50ZXJz
dGl0aWFsIGV2ZW50cyBvbiBBVlBsYXllckl0ZW0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDc5M2YzNGE3MzdlMzhl
YjZjMWMxOTI4NGIyYTQ3Y2EwNjQ5MzAyMjkuLmRhYWNmODY3OGRiMGIxYzI0NTEzMjZkMjQ2ODg1
MGY5MTViZDVhZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDItMDQgIEVyaWMg
Q2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW01hY10gQ29ubmVj
dCBNZWRpYVNlc3Npb24gd2l0aCBNZWRpYVJlbW90ZSBhbmQgTm93UGxheWluZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNDMxCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS83NDAwMDM2Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgYSBwcml2YXRlIHByZWZlcmVuY2Ugc28gdGhlIG5ldyBNZWRp
YVNlc3Npb24gQVBJIHRlc3QgY2FuIGVuYWJsZSB0aGUgZmVhdHVyZS4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbToKKyAgICAgICAgKC1bV0tQcmVmZXJl
bmNlcyBfbWVkaWFTZXNzaW9uRW5hYmxlZF0pOgorICAgICAgICAoLVtXS1ByZWZlcmVuY2VzIF9z
ZXRNZWRpYVNlc3Npb25FbmFibGVkOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tQcmVmZXJlbmNlc1ByaXZhdGUuaDoKKwogMjAyMS0wMi0wNCAgSnVsaWFuIEdvbnphbGV6ICA8
anVsaWFuX2FfZ29uemFsZXpAYXBwbGUuY29tPgogCiAgICAgICAgIE51bGwgZGVyZWZlcmVuY2Ug
aW4gRG9jdW1lbnRMb2FkZXI6OmNvbW1pdERhdGEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNlc3Npb24vTWVkaWFJbWFnZS5oCmluZGV4IGFmMTE5NWVhZDBmYjIwMGYyYjVh
YWFhZjA2Yjc4MGMyNjFlMmRhZGQuLjQ5MzI0MDBhMDJmODc2OWQxOTQ4OWNkMzhhMmRhODAzYTQ4
MWMyNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01l
ZGlhSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRp
YUltYWdlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzMsOCArMzMsMzMgQEAgc3RydWN0IE1lZGlhSW1hZ2UgewogICAgIFN0cmluZyBz
cmM7CiAgICAgU3RyaW5nIHNpemVzOwogICAgIFN0cmluZyB0eXBlOworCisgICAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxNZWRpYUltYWdlPiBkZWNvZGUoRGVjb2Rl
ciYpOwogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gaW5saW5lIHZvaWQgTWVkaWFJbWFn
ZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBzcmMg
PDwgc2l6ZXMgPDwgdHlwZTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIE9w
dGlvbmFsPE1lZGlhSW1hZ2U+IE1lZGlhSW1hZ2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
eworICAgIFN0cmluZyBzcmM7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzcmMpKQorICAgICAg
ICByZXR1cm4geyB9OworCisgICAgU3RyaW5nIHNpemVzOworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoc2l6ZXMpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgU3RyaW5nIHR5cGU7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZSh0eXBlKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJl
dHVybiBNZWRpYUltYWdlIHsgV1RGTW92ZShzcmMpLCBXVEZNb3ZlKHNpemVzKSwgV1RGTW92ZSh0
eXBlKSB9OworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU0VTU0lPTikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5j
cHAKaW5kZXggYTZmNDQ5YzQyNjBmY2ZiN2NhNDZjMDZkMTk4ZWM3ZTY1NjI4MWQ5ZC4uZjZmZjMx
ZmIwOGRkNDk4MWEzYmNlOTAzOTJiZGJkMmNkYTVmY2RiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjQsMjUgKzY0
LDI4IEBAIHZvaWQgTWVkaWFNZXRhZGF0YTo6cmVzZXRNZWRpYVNlc3Npb24oKQogCiB2b2lkIE1l
ZGlhTWV0YWRhdGE6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7Ci0gICAgaWYgKG1f
dGl0bGUgPT0gdGl0bGUpCisgICAgaWYgKG1fbWV0YWRhdGEudGl0bGUgPT0gdGl0bGUpCiAgICAg
ICAgIHJldHVybjsKLSAgICBtX3RpdGxlID0gdGl0bGU7CisKKyAgICBtX21ldGFkYXRhLnRpdGxl
ID0gdGl0bGU7CiAgICAgbWV0YWRhdGFVcGRhdGVkKCk7CiB9CiAKIHZvaWQgTWVkaWFNZXRhZGF0
YTo6c2V0QXJ0aXN0KGNvbnN0IFN0cmluZyYgYXJ0aXN0KQogewotICAgIGlmIChtX2FydGlzdCA9
PSBhcnRpc3QpCisgICAgaWYgKG1fbWV0YWRhdGEuYXJ0aXN0ID09IGFydGlzdCkKICAgICAgICAg
cmV0dXJuOwotICAgIG1fYXJ0aXN0ID0gYXJ0aXN0OworCisgICAgbV9tZXRhZGF0YS5hcnRpc3Qg
PSBhcnRpc3Q7CiAgICAgbWV0YWRhdGFVcGRhdGVkKCk7CiB9CiAKIHZvaWQgTWVkaWFNZXRhZGF0
YTo6c2V0QWxidW0oY29uc3QgU3RyaW5nJiBhbGJ1bSkKIHsKLSAgICBpZiAobV9hbGJ1bSA9PSBh
bGJ1bSkKKyAgICBpZiAobV9tZXRhZGF0YS5hbGJ1bSA9PSBhbGJ1bSkKICAgICAgICAgcmV0dXJu
OwotICAgIG1fYWxidW0gPSBhbGJ1bTsKKworICAgIG1fbWV0YWRhdGEuYWxidW0gPSBhbGJ1bTsK
ICAgICBtZXRhZGF0YVVwZGF0ZWQoKTsKIH0KIApAQCAtOTcsNyArMTAwLDcgQEAgRXhjZXB0aW9u
T3I8dm9pZD4gTWVkaWFNZXRhZGF0YTo6c2V0QXJ0d29yayhTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBWZWMKICAgICAgICAgcmVzb2x2ZWRBcnR3b3JrLnVuY2hlY2tlZEFwcGVuZChN
ZWRpYUltYWdlIHsgcmVzb2x2ZWRTcmMuc3RyaW5nKCksIGltYWdlLnNpemVzLCBpbWFnZS50eXBl
IH0pOwogICAgIH0KIAotICAgIG1fYXJ0d29yayA9IFdURk1vdmUocmVzb2x2ZWRBcnR3b3JrKTsK
KyAgICBtX21ldGFkYXRhLmFydHdvcmsgPSBXVEZNb3ZlKHJlc29sdmVkQXJ0d29yayk7CiAgICAg
bWV0YWRhdGFVcGRhdGVkKCk7CiAgICAgcmV0dXJuIHsgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuaAppbmRleCAyNjRlZWNj
YTk1MGIyMmVhNDUzYjcxZTQyZGZhODA0NjBhOTc2YmNhLi4zMGUwOTNkNmQyN2RkYjc0MTUyODFl
ZThiNWQxMDA0ZWZjZmFhNWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShN
RURJQV9TRVNTSU9OKQogCisjaW5jbHVkZSAiTWVkaWFNZXRhZGF0YUluaXQuaCIKICNpbmNsdWRl
ICJNZWRpYVNlc3Npb24uaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CkBAIC0zNCwxMCArMzUsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIERvY3VtZW50OwotY2xhc3MgTWVkaWFTZXNzaW9uOwogc3RydWN0IE1lZGlhSW1hZ2U7
Ci1zdHJ1Y3QgTWVkaWFNZXRhZGF0YUluaXQ7CisKK3VzaW5nIE1lZGlhU2Vzc2lvbk1ldGFkYXRh
ID0gTWVkaWFNZXRhZGF0YUluaXQ7CiAKIGNsYXNzIE1lZGlhTWV0YWRhdGEgOiBwdWJsaWMgUmVm
Q291bnRlZDxNZWRpYU1ldGFkYXRhPiB7CiBwdWJsaWM6CkBAIC00NywyNyArNDcsMjYgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0TWVkaWFTZXNzaW9uKE1lZGlhU2Vzc2lvbiYpOwogICAgIHZvaWQg
cmVzZXRNZWRpYVNlc3Npb24oKTsKIAotICAgIGNvbnN0IFN0cmluZyYgdGl0bGUoKSBjb25zdCB7
IHJldHVybiBtX3RpdGxlOyB9CisgICAgY29uc3QgU3RyaW5nJiB0aXRsZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbWV0YWRhdGEudGl0bGU7IH0KICAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZyYp
OwogCi0gICAgY29uc3QgU3RyaW5nJiBhcnRpc3QoKSBjb25zdCB7IHJldHVybiBtX2FydGlzdDsg
fQorICAgIGNvbnN0IFN0cmluZyYgYXJ0aXN0KCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5h
cnRpc3Q7IH0KICAgICB2b2lkIHNldEFydGlzdChjb25zdCBTdHJpbmcmKTsKIAotICAgIGNvbnN0
IFN0cmluZyYgYWxidW0oKSBjb25zdCB7IHJldHVybiBtX2FsYnVtOyB9CisgICAgY29uc3QgU3Ry
aW5nJiBhbGJ1bSgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRhdGEuYWxidW07IH0KICAgICB2b2lk
IHNldEFsYnVtKGNvbnN0IFN0cmluZyYpOwogCi0gICAgY29uc3QgVmVjdG9yPE1lZGlhSW1hZ2U+
JiBhcnR3b3JrKCkgY29uc3QgeyByZXR1cm4gbV9hcnR3b3JrOyB9CisgICAgY29uc3QgVmVjdG9y
PE1lZGlhSW1hZ2U+JiBhcnR3b3JrKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5hcnR3b3Jr
OyB9CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0QXJ0d29yayhTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiwgVmVjdG9yPE1lZGlhSW1hZ2U+JiYpOwogCisgICAgY29uc3QgTWVkaWFTZXNzaW9uTWV0
YWRhdGEmIG1ldGFkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YTsgfQorCiBwcml2YXRl
OgogICAgIE1lZGlhTWV0YWRhdGEoKTsKICAgICB2b2lkIG1ldGFkYXRhVXBkYXRlZCgpOwogCiAg
ICAgV2Vha1B0cjxNZWRpYVNlc3Npb24+IG1fc2Vzc2lvbjsKLSAgICBTdHJpbmcgbV90aXRsZTsK
LSAgICBTdHJpbmcgbV9hcnRpc3Q7Ci0gICAgU3RyaW5nIG1fYWxidW07Ci0gICAgVmVjdG9yPE1l
ZGlhSW1hZ2U+IG1fYXJ0d29yazsKKyAgICBNZWRpYVNlc3Npb25NZXRhZGF0YSBtX21ldGFkYXRh
OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Np
b24vTWVkaWFNZXRhZGF0YUluaXQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNz
aW9uL01lZGlhTWV0YWRhdGFJbml0LmgKaW5kZXggMDEyZWMyZDA5NWY5M2JiZmUyOGEzOGQ2M2Fh
ZWE0MjEyNmFiNTZlNS4uNjY5ZGVmZmEyZDY5NDA4NWYwOGYxMGRmMWI5MTZlZjQ0ZTg4NWUwZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRh
ZGF0YUluaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRp
YU1ldGFkYXRhSW5pdC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTM2LDggKzM2LDM3IEBAIHN0cnVjdCBNZWRpYU1ldGFkYXRhSW5pdCB7
CiAgICAgU3RyaW5nIGFydGlzdDsKICAgICBTdHJpbmcgYWxidW07CiAgICAgVmVjdG9yPE1lZGlh
SW1hZ2U+IGFydHdvcms7CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29k
ZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9w
dGlvbmFsPE1lZGlhTWV0YWRhdGFJbml0PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAordGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gaW5saW5lIHZvaWQgTWVkaWFNZXRhZGF0YUluaXQ6OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgdGl0bGUgPDwgYXJ0aXN0
IDw8IGFsYnVtIDw8IGFydHdvcms7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGlu
ZSBPcHRpb25hbDxNZWRpYU1ldGFkYXRhSW5pdD4gTWVkaWFNZXRhZGF0YUluaXQ6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFN0cmluZyB0aXRsZTsKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHRpdGxlKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIFN0cmluZyBhcnRpc3Q7
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhcnRpc3QpKQorICAgICAgICByZXR1cm4geyB9Owor
CisgICAgU3RyaW5nIGFsYnVtOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWxidW0pKQorICAg
ICAgICByZXR1cm4geyB9OworCisgICAgVmVjdG9yPE1lZGlhSW1hZ2U+IGFydHdvcms7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShhcnR3b3JrKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAg
IHJldHVybiBNZWRpYU1ldGFkYXRhSW5pdCB7IFdURk1vdmUodGl0bGUpLCBXVEZNb3ZlKGFydGlz
dCksIFdURk1vdmUoYWxidW0pLCBXVEZNb3ZlKGFydHdvcmspIH07Cit9CisKIH0KIAogI2VuZGlm
IC8vIEVOQUJMRShNRURJQV9TRVNTSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAKaW5kZXggMWFiNjIyNDgzMmVlZmExMjky
ZjEzODYxM2I0MWYwNzcwOTk2MjNjZS4uYTNiNWE5MGYwNDdkZjdlODlhMzc1NTU3MDRiYzNmZWU3
NWVlMTIwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24v
TWVkaWFTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lv
bi9NZWRpYVNlc3Npb24uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDExICsyOCw1MyBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NF
U1NJT04pCiAKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFNZXRhZGF0YS5o
IgogI2luY2x1ZGUgIk5hdmlnYXRvci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBjb25zdCB2b2lkKiBu
ZXh0TG9nSWRlbnRpZmllcigpCit7CisgICAgc3RhdGljIHVpbnQ2NF90IGxvZ0lkZW50aWZpZXIg
PSBjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpOworICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PGNvbnN0IHZvaWQqPigrK2xvZ0lkZW50aWZpZXIpOworfQorCitzdGF0aWMgV1RGTG9n
Q2hhbm5lbCYgbG9nQ2hhbm5lbCgpIHsgcmV0dXJuIExvZ01lZGlhOyB9CitzdGF0aWMgY29uc3Qg
Y2hhciogbG9nQ2xhc3NOYW1lKCkgeyByZXR1cm4gIk1lZGlhU2Vzc2lvbiI7IH0KKworc3RhdGlj
IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgcGxhdGZvcm1D
b21tYW5kRm9yTWVkaWFTZXNzaW9uQWN0aW9uKE1lZGlhU2Vzc2lvbkFjdGlvbiBhY3Rpb24pCit7
CisgICAgc3RhdGljIGNvbnN0IGF1dG8gY29tbWFuZE1hcCA9IG1ha2VOZXZlckRlc3Ryb3llZChb
XSB7CisgICAgICAgIHN0cnVjdCBNYXBFbnRyeSB7CisgICAgICAgICAgICBNZWRpYVNlc3Npb25B
Y3Rpb24gYWN0aW9uOworICAgICAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNv
bnRyb2xDb21tYW5kVHlwZSBjb21tYW5kOworICAgICAgICB9OworICAgICAgICBzdGF0aWMgY29u
c3QgTWFwRW50cnkgZW50cmllc1tdID0geworICAgICAgICAgICAgeyBNZWRpYVNlc3Npb25BY3Rp
b246OlBsYXksIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5Q29tbWFuZCB9LAorICAgICAgICAg
ICAgeyBNZWRpYVNlc3Npb25BY3Rpb246OlBhdXNlLCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGF1
c2VDb21tYW5kIH0sCisgICAgICAgICAgICB7IE1lZGlhU2Vzc2lvbkFjdGlvbjo6U2Vla2Zvcndh
cmQsIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTa2lwRm9yd2FyZENvbW1hbmQgfSwKKyAgICAgICAg
ICAgIHsgTWVkaWFTZXNzaW9uQWN0aW9uOjpTZWVrYmFja3dhcmQsIFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpTa2lwQmFja3dhcmRDb21tYW5kIH0sCisgICAgICAgICAgICB7IE1lZGlhU2Vzc2lvbkFj
dGlvbjo6UHJldmlvdXN0cmFjaywgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5leHRUcmFja0NvbW1h
bmQgfSwKKyAgICAgICAgICAgIHsgTWVkaWFTZXNzaW9uQWN0aW9uOjpOZXh0dHJhY2ssIFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpQcmV2aW91c1RyYWNrQ29tbWFuZCB9LAorICAgICAgICAgICAgeyBN
ZWRpYVNlc3Npb25BY3Rpb246OlN0b3AsIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTdG9wQ29tbWFu
ZCB9LAorICAgICAgICAgICAgeyBNZWRpYVNlc3Npb25BY3Rpb246OlNlZWt0bywgUGxhdGZvcm1N
ZWRpYVNlc3Npb246OlNlZWtUb1BsYXliYWNrUG9zaXRpb25Db21tYW5kIH0sCisgICAgICAgIH07
CisKKyAgICAgICAgSGFzaE1hcDxNZWRpYVNlc3Npb25BY3Rpb24sIFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIFdURjo6SW50SGFzaDxNZWRpYVNlc3Npb25B
Y3Rpb24+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPE1lZGlhU2Vzc2lvbkFjdGlvbj4+IG1h
cDsKKyAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IGVudHJpZXMpCisgICAgICAgICAgICBtYXAu
YWRkKGVudHJ5LmFjdGlvbiwgZW50cnkuY29tbWFuZCk7CisgICAgICAgIHJldHVybiBtYXA7Cisg
ICAgfSgpKTsKKworICAgIGF1dG8gaXQgPSBjb21tYW5kTWFwLmdldCgpLmZpbmQoYWN0aW9uKTsK
KyAgICBpZiAoaXQgIT0gY29tbWFuZE1hcC5nZXQoKS5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGl0
LT52YWx1ZTsKKworICAgIHJldHVybiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9Db21tYW5kOwor
fQorCiBSZWY8TWVkaWFTZXNzaW9uPiBNZWRpYVNlc3Npb246OmNyZWF0ZShOYXZpZ2F0b3ImIG5h
dmlnYXRvcikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVNlc3Npb24obmF2aWdh
dG9yKSk7CkBAIC00MSwxMiArODMsMTggQEAgUmVmPE1lZGlhU2Vzc2lvbj4gTWVkaWFTZXNzaW9u
OjpjcmVhdGUoTmF2aWdhdG9yJiBuYXZpZ2F0b3IpCiBNZWRpYVNlc3Npb246Ok1lZGlhU2Vzc2lv
bihOYXZpZ2F0b3ImIG5hdmlnYXRvcikKICAgICA6IG1fbmF2aWdhdG9yKG1ha2VXZWFrUHRyKG5h
dmlnYXRvcikpCiB7CisgICAgbV9sb2dnZXIgPSBtYWtlUmVmUHRyKERvY3VtZW50OjpzaGFyZWRM
b2dnZXIoKSk7CisgICAgbV9sb2dJZGVudGlmaWVyID0gbmV4dExvZ0lkZW50aWZpZXIoKTsKKwor
ICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CiB9CiAKIE1lZGlhU2Vzc2lvbjo6fk1lZGlh
U2Vzc2lvbigpID0gZGVmYXVsdDsKIAogdm9pZCBNZWRpYVNlc3Npb246OnNldE1ldGFkYXRhKFJl
ZlB0cjxNZWRpYU1ldGFkYXRhPiYmIG1ldGFkYXRhKQogeworICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUik7CisKICAgICBpZiAobV9tZXRhZGF0YSkKICAgICAgICAgbV9tZXRhZGF0YS0+cmVz
ZXRNZWRpYVNlc3Npb24oKTsKICAgICBtX21ldGFkYXRhID0gV1RGTW92ZShtZXRhZGF0YSk7CkBA
IC02MCw2ICsxMDgsOCBAQCB2b2lkIE1lZGlhU2Vzc2lvbjo6c2V0UGxheWJhY2tTdGF0ZShNZWRp
YVNlc3Npb25QbGF5YmFja1N0YXRlIHN0YXRlKQogICAgIGlmIChtX3BsYXliYWNrU3RhdGUgPT0g
c3RhdGUpCiAgICAgICAgIHJldHVybjsKIAorICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwg
c3RhdGUpOworCiAgICAgYXV0byBjdXJyZW50UG9zaXRpb24gPSB0aGlzLT5jdXJyZW50UG9zaXRp
b24oKTsKICAgICBpZiAobV9wb3NpdGlvblN0YXRlICYmIGN1cnJlbnRQb3NpdGlvbikgewogICAg
ICAgICBtX3Bvc2l0aW9uU3RhdGUtPnBvc2l0aW9uID0gKmN1cnJlbnRQb3NpdGlvbjsKQEAgLTcw
LDEwICsxMjAsMTggQEAgdm9pZCBNZWRpYVNlc3Npb246OnNldFBsYXliYWNrU3RhdGUoTWVkaWFT
ZXNzaW9uUGxheWJhY2tTdGF0ZSBzdGF0ZSkKIAogdm9pZCBNZWRpYVNlc3Npb246OnNldEFjdGlv
bkhhbmRsZXIoTWVkaWFTZXNzaW9uQWN0aW9uIGFjdGlvbiwgUmVmUHRyPE1lZGlhU2Vzc2lvbkFj
dGlvbkhhbmRsZXI+JiYgaGFuZGxlcikKIHsKLSAgICBpZiAoaGFuZGxlcikKKyAgICBpZiAoaGFu
ZGxlcikgeworICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJhZGRpbmcgIiwgYWN0
aW9uKTsKICAgICAgICAgbV9hY3Rpb25IYW5kbGVycy5zZXQoYWN0aW9uLCBoYW5kbGVyKTsKLSAg
ICBlbHNlCi0gICAgICAgIG1fYWN0aW9uSGFuZGxlcnMucmVtb3ZlKGFjdGlvbik7CisgICAgICAg
IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmFkZFN1cHBvcnRl
ZENvbW1hbmQocGxhdGZvcm1Db21tYW5kRm9yTWVkaWFTZXNzaW9uQWN0aW9uKGFjdGlvbikpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChtX2FjdGlvbkhhbmRsZXJzLmNvbnRhaW5zKGFjdGlv
bikpIHsKKyAgICAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInJlbW92aW5nICIs
IGFjdGlvbik7CisgICAgICAgICAgICBtX2FjdGlvbkhhbmRsZXJzLnJlbW92ZShhY3Rpb24pOwor
ICAgICAgICB9CisgICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFu
YWdlcigpLnJlbW92ZVN1cHBvcnRlZENvbW1hbmQocGxhdGZvcm1Db21tYW5kRm9yTWVkaWFTZXNz
aW9uQWN0aW9uKGFjdGlvbikpOworICAgIH0KKyAgICAKICAgICBhY3Rpb25IYW5kbGVyc1VwZGF0
ZWQoKTsKIH0KIApAQCAtODksNiArMTQ3LDggQEAgUmVmUHRyPE1lZGlhU2Vzc2lvbkFjdGlvbkhh
bmRsZXI+IE1lZGlhU2Vzc2lvbjo6aGFuZGxlckZvckFjdGlvbihNZWRpYVNlc3Npb25BY3QKIAog
RXhjZXB0aW9uT3I8dm9pZD4gTWVkaWFTZXNzaW9uOjpzZXRQb3NpdGlvblN0YXRlKE9wdGlvbmFs
PE1lZGlhUG9zaXRpb25TdGF0ZT4mJiBzdGF0ZSkKIHsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5U
SUZJRVIpOworCiAgICAgaWYgKCFzdGF0ZSkgewogICAgICAgICBtX3Bvc2l0aW9uU3RhdGUgPSBX
VEY6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5oCmluZGV4IDNmNjRmM2IwMjQ2ODRl
NGY3ZWM2NDQ4N2I0MTdmNWVkMTczYTc5MDkuLjRmNGJlNDc3MjY0NDA4NmI3N2Q2MWQ5ZjViMDgy
M2ExNWQwNTA1NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNz
aW9uL01lZGlhU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNz
aW9uL01lZGlhU2Vzc2lvbi5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDEwICsyNywxNCBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NF
U1NJT04pCiAKKyNpbmNsdWRlICJKU01lZGlhUG9zaXRpb25TdGF0ZS5oIgorI2luY2x1ZGUgIkpT
TWVkaWFTZXNzaW9uQWN0aW9uLmgiCisjaW5jbHVkZSAiSlNNZWRpYVNlc3Npb25QbGF5YmFja1N0
YXRlLmgiCiAjaW5jbHVkZSAiTWVkaWFQb3NpdGlvblN0YXRlLmgiCiAjaW5jbHVkZSAiTWVkaWFT
ZXNzaW9uQWN0aW9uLmgiCiAjaW5jbHVkZSAiTWVkaWFTZXNzaW9uQWN0aW9uSGFuZGxlci5oIgog
I2luY2x1ZGUgIk1lZGlhU2Vzc2lvblBsYXliYWNrU3RhdGUuaCIKKyNpbmNsdWRlIDx3dGYvTG9n
Z2VyLmg+CiAjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KICNpbmNsdWRlIDx3dGYvT3B0
aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CkBAIC01NywxMyArNjEsMTggQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPGRvdWJsZT4gY3VycmVudFBvc2l0
aW9uKCkgY29uc3Q7CiAKICAgICB2b2lkIG1ldGFkYXRhVXBkYXRlZCgpOworCiAgICAgdm9pZCBh
Y3Rpb25IYW5kbGVyc1VwZGF0ZWQoKTsKICAgICBib29sIGhhc0FjdGlvbkhhbmRsZXIoTWVkaWFT
ZXNzaW9uQWN0aW9uKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8TWVkaWFTZXNz
aW9uQWN0aW9uSGFuZGxlcj4gaGFuZGxlckZvckFjdGlvbihNZWRpYVNlc3Npb25BY3Rpb24pIGNv
bnN0OworICAgIGJvb2wgaGFzQWN0aXZlQWN0aW9uSGFuZGxlcnMoKSBjb25zdCB7IHJldHVybiAh
bV9hY3Rpb25IYW5kbGVycy5pc0VtcHR5KCk7IH0KIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBN
ZWRpYVNlc3Npb24oTmF2aWdhdG9yJik7CiAKKyAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNv
bnN0IHsgcmV0dXJuICptX2xvZ2dlci5nZXQoKTsgfQorICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7IH0KKwogICAgIFdlYWtQdHI8
TmF2aWdhdG9yPiBtX25hdmlnYXRvcjsKICAgICBSZWZQdHI8TWVkaWFNZXRhZGF0YT4gbV9tZXRh
ZGF0YTsKICAgICBNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRlIG1fcGxheWJhY2tTdGF0ZSB7IE1l
ZGlhU2Vzc2lvblBsYXliYWNrU3RhdGU6Ok5vbmUgfTsKQEAgLTcxLDYgKzgwLDIwIEBAIHByaXZh
dGU6CiAgICAgT3B0aW9uYWw8ZG91YmxlPiBtX2xhc3RSZXBvcnRlZFBvc2l0aW9uOwogICAgIE1v
bm90b25pY1RpbWUgbV90aW1lQXRMYXN0UG9zaXRpb25VcGRhdGU7CiAgICAgSGFzaE1hcDxNZWRp
YVNlc3Npb25BY3Rpb24sIFJlZlB0cjxNZWRpYVNlc3Npb25BY3Rpb25IYW5kbGVyPiwgV1RGOjpJ
bnRIYXNoPE1lZGlhU2Vzc2lvbkFjdGlvbj4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8TWVk
aWFTZXNzaW9uQWN0aW9uPj4gbV9hY3Rpb25IYW5kbGVyczsKKyAgICBSZWZQdHI8Y29uc3QgTG9n
Z2VyPiBtX2xvZ2dlcjsKKyAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7Cit9OworCit9
CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBMb2dBcmd1bWVudDxXZWJD
b3JlOjpNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRlPiB7CisgICAgc3RhdGljIFN0cmluZyB0b1N0
cmluZyhXZWJDb3JlOjpNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRlIHN0YXRlKSB7IHJldHVybiBj
b252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhzdGF0ZSk7IH0KK307CisKK3RlbXBsYXRlPD4gc3Ry
dWN0IExvZ0FyZ3VtZW50PFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkFjdGlvbj4geworICAgIHN0YXRp
YyBTdHJpbmcgdG9TdHJpbmcoV2ViQ29yZTo6TWVkaWFTZXNzaW9uQWN0aW9uIGFjdGlvbikgeyBy
ZXR1cm4gY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoYWN0aW9uKTsgfQogfTsKIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL01lZGlhUmVtb3RlU1BJLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvTWVkaWFSZW1vdGVTUEkuaAppbmRleCA2
NTE1YzBkNzZmMDVkYTAwNjE4MGEyYTU3NTEzZWYyZTY0NWM4MWU0Li4zNmIxNWE2YTA2M2E2NTE4
NDE3N2U2MWYzZDNiOTdhODI0YTYwOGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3NwaS9tYWMvTWVkaWFSZW1vdGVTUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L3NwaS9tYWMvTWVkaWFSZW1vdGVTUEkuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05MiwxMCArOTIsMTIgQEAgZW51bSB7CiB0eXBlZGVm
IHVpbnQzMl90IE1STm93UGxheWluZ0NsaWVudFZpc2liaWxpdHk7CiAKIHR5cGVkZWYgdWludDMy
X3QgTVJNZWRpYVJlbW90ZUVycm9yOwordHlwZWRlZiB1aW50MzJfdCBNUlNlbmRDb21tYW5kQXBw
T3B0aW9uczsKK3R5cGVkZWYgdWludDMyX3QgTVJTZW5kQ29tbWFuZEVycm9yOwogdHlwZWRlZiBz
dHJ1Y3QgX01ST3JpZ2luICpNUk9yaWdpblJlZjsKIHR5cGVkZWYgc3RydWN0IF9NUk1lZGlhUmVt
b3RlQ29tbWFuZEluZm8gKk1STWVkaWFSZW1vdGVDb21tYW5kSW5mb1JlZjsKIHR5cGVkZWYgdm9p
ZCAqTVJOb3dQbGF5aW5nQ2xpZW50UmVmOwotdHlwZWRlZiB2b2lkKF5NUk1lZGlhUmVtb3RlQXN5
bmNDb21tYW5kSGFuZGxlckJsb2NrKShNUk1lZGlhUmVtb3RlQ29tbWFuZCBjb21tYW5kLCBDRkRp
Y3Rpb25hcnlSZWYgb3B0aW9ucywgdm9pZCheY29tcGxldGlvbikoQ0ZBcnJheVJlZikpOwordHlw
ZWRlZiB2b2lkKF5NUk1lZGlhUmVtb3RlQXN5bmNDb21tYW5kSGFuZGxlckJsb2NrKShNUk1lZGlh
UmVtb3RlQ29tbWFuZCBjb21tYW5kLCBDRkRpY3Rpb25hcnlSZWYgX05vbm51bGwgb3B0aW9ucywg
dm9pZCheY29tcGxldGlvbikoQ0ZBcnJheVJlZikpOwogCiBXVEZfRVhURVJOX0NfQkVHSU4KIApA
QCAtMTAzLDggKzEwNSwxMCBAQCBXVEZfRVhURVJOX0NfQkVHSU4KIAogdm9pZCogTVJNZWRpYVJl
bW90ZUFkZEFzeW5jQ29tbWFuZEhhbmRsZXJCbG9jayhNUk1lZGlhUmVtb3RlQXN5bmNDb21tYW5k
SGFuZGxlckJsb2NrKTsKIHZvaWQgTVJNZWRpYVJlbW90ZVJlbW92ZUNvbW1hbmRIYW5kbGVyQmxv
Y2sodm9pZCAqb2JzZXJ2ZXIpOwotdm9pZCBNUk1lZGlhUmVtb3RlU2V0U3VwcG9ydGVkQ29tbWFu
ZHMoQ0ZBcnJheVJlZiBjb21tYW5kcywgTVJPcmlnaW5SZWYsIGRpc3BhdGNoX3F1ZXVlX3QgcmVw
bHlRLCB2b2lkKF5jb21wbGV0aW9uKShNUk1lZGlhUmVtb3RlRXJyb3IgZXJyKSk7Cit2b2lkIE1S
TWVkaWFSZW1vdGVTZXRTdXBwb3J0ZWRDb21tYW5kcyhDRkFycmF5UmVmLCBNUk9yaWdpblJlZiwg
ZGlzcGF0Y2hfcXVldWVfdCwgdm9pZCheY29tcGxldGlvbikoTVJNZWRpYVJlbW90ZUVycm9yKSk7
Cit2b2lkIE1STWVkaWFSZW1vdGVHZXRTdXBwb3J0ZWRDb21tYW5kc0Zvck9yaWdpbihNUk9yaWdp
blJlZiwgZGlzcGF0Y2hfcXVldWVfdCwgdm9pZCheY29tcGxldGlvbikoQ0ZBcnJheVJlZikpOwog
dm9pZCBNUk1lZGlhUmVtb3RlU2V0Tm93UGxheWluZ1Zpc2liaWxpdHkoTVJPcmlnaW5SZWYsIE1S
Tm93UGxheWluZ0NsaWVudFZpc2liaWxpdHkpOworQm9vbGVhbiBNUk1lZGlhUmVtb3RlU2VuZENv
bW1hbmRUb0FwcChNUk1lZGlhUmVtb3RlQ29tbWFuZCwgQ0ZEaWN0aW9uYXJ5UmVmLCBNUk9yaWdp
blJlZiwgQ0ZTdHJpbmdSZWYsIE1SU2VuZENvbW1hbmRBcHBPcHRpb25zLCBkaXNwYXRjaF9xdWV1
ZV90LCB2b2lkKF5jb21wbGV0aW9uKShNUlNlbmRDb21tYW5kRXJyb3IsIENGQXJyYXlSZWYpKTsK
IAogI3ByYWdtYSBtYXJrIC0gTVJPcmlnaW4KIApAQCAtMTI5LDQgKzEzMywxMCBAQCBDRkFycmF5
UmVmIE1STWVkaWFSZW1vdGVDb3B5UGlja2FibGVSb3V0ZXMoKTsKIAogV1RGX0VYVEVSTl9DX0VO
RAogCitAaW50ZXJmYWNlIE1SQ29tbWFuZEluZm8gOiBOU09iamVjdAorQHByb3BlcnR5IChub25h
dG9taWMsIHJlYWRvbmx5KSBNUk1lZGlhUmVtb3RlQ29tbWFuZCBjb21tYW5kOworQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWRvbmx5LCBnZXR0ZXI9aXNFbmFibGVkKSBCT09MIGVuYWJsZWQ7CitA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIG51bGxhYmxlLCBjb3B5KSBOU0RpY3Rpb25h
cnkgKm9wdGlvbnM7CitAZW5kCisKICNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGZhNmMyOWY0YjRiYWZmNDFiNzA4ZjIyMGI3NjBmYzkyZWU0MmQwYTEuLmJkM2JjMTYwZDhi
YWY0N2I0MTYyMjg4MDc3NjU2MDJiNWQyYjQ0OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzOSw2ICsxMzksMTAgQEAKIAkJ
MDc3QUYxNDMxOEY0QjFCQjAwMDFFRDYxIC8qIFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVNYWMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3N0FGMTQx
MThGNEIxQkIwMDAxRUQ2MSAvKiBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDc3QjY0MTMxQjk0
RjEyRTAwM0U5QUQ1IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzdCNjQxMTFCOTRGMTJFMDAz
RTlBRDUgLyogTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwNzdCNjQxNzFCOTVGNzAzMDAzRTlB
RDUgLyogTWVkaWFQbGF5YmFja1RhcmdldE1vY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3N0I2NDE1MUI5NUY3MDMwMDNFOUFENSAvKiBNZWRpYVBs
YXliYWNrVGFyZ2V0TW9jay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTA3ODI4OTQ4MjVDMjNGRTUwMEE3QkEwMyAvKiBNZWRpYU1ldGFkYXRhLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRERERUEyRDI1
MzhDRTA0MDBBMTMwMEMgLyogTWVkaWFNZXRhZGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTA3ODI4OTRBMjVDMzZGQ0YwMEE3QkEwMyAvKiBN
ZWRpYVNlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENERERFQTIzMjUzOENEODAwMEExMzAwQyAvKiBNZWRpYVNlc3Npb24uaCAqLzsgfTsKKwkJ
MDc4Mjg5NEIyNUMzNkZFRDAwQTdCQTAzIC8qIE1lZGlhSW1hZ2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERERFQTMyMjUzOENFMzUwMEExMzAwQyAv
KiBNZWRpYUltYWdlLmggKi87IH07CisJCTA3ODI4OTRDMjVDMzcwMEIwMEE3QkEwMyAvKiBNZWRp
YU1ldGFkYXRhSW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0REREVBMzAyNTM4Q0UxRTAwQTEzMDBDIC8qIE1lZGlhTWV0YWRhdGFJbml0LmggKi87
IH07CiAJCTA3ODMyMjg1MTgwMTNFRDgwMDk5OUUwQyAvKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzgzMjI4
MzE4MDEzRUQ4MDA5OTlFMEMgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oICovOyB9OwogCQkw
Nzg0NjM0MzE0NUIxNTFBMDBBNThERjEgLyogSlNUcmFja0V2ZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzg0NjM0MTE0NUIxNTFBMDBBNThERjEg
LyogSlNUcmFja0V2ZW50LmggKi87IH07CiAJCTA3ODQ2Mzg1MTQ1QjFCOEUwMEE1OERGMSAvKiBK
U1RyYWNrQ3VzdG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwNzg0NjM4NDE0NUIxQjhFMDBBNThERjEgLyogSlNUcmFja0N1c3RvbS5oICovOyB9OwpA
QCAtMzM3MDIsMTAgKzMzNzA2LDEzIEBACiAJCQkJRTQ0NjEzQUQwQ0Q2MzMxMDAwRkFEQTc1IC8q
IE1lZGlhRXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTRFMTk1OTIyMEEzOURBQkEwMDIyMEZF
NSAvKiBNZWRpYUZlYXR1cmVOYW1lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdBNkQxRUMxNDkx
MTM3NzAwMDUxRDBDIC8qIE1lZGlhRnJhZ21lbnRVUklQYXJzZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCTA3ODI4OTRCMjVDMzZGRUQwMEE3QkEwMyAvKiBNZWRpYUltYWdlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlDREY0QjcxQTFFMDFEM0QwMDBFMjM1QTIgLyogTWVkaWFLZXlTZXNzaW9uVHlwZS5p
ZGwgaW4gSGVhZGVycyAqLywKIAkJCQlDREY0QjcyODFFMDNDNTczMDBFMjM1QTIgLyogTWVkaWFL
ZXlzUmVxdWlyZW1lbnQuaWRsIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RGNEI3MTgxRTAxQ0I5MTAw
RTIzNUEyIC8qIE1lZGlhS2V5c1Jlc3RyaWN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThF
QTgwMEUwQTE5NTE2RTAwQThFRjVGIC8qIE1lZGlhTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MDc4Mjg5NDgyNUMyM0ZFNTAwQTdCQTAzIC8qIE1lZGlhTWV0YWRhdGEuaCBpbiBIZWFkZXJzICov
LAorCQkJCTA3ODI4OTRDMjVDMzcwMEIwMEE3QkEwMyAvKiBNZWRpYU1ldGFkYXRhSW5pdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNUVCQjg5MzExQzc3NzdGRjAwQzY1RDQxIC8qIE1lZGlhUGF5bG9h
ZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdFM0RGRDExQTlFNzg2NTAwNzY0Q0E4IC8qIE1lZGlh
UGxheWJhY2tUYXJnZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OTIxNjU1MUFBNTYwQUEwMEEz
QzA0OSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTMz
NzQ2LDYgKzMzNzUzLDcgQEAKIAkJCQkxQjEyNEQ4RDFEMzgwQjcwMDBFQ0RGQjAgLyogTWVkaWFT
YW1wbGVBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREJFQUVBRDE5RDkyQjZDMDBCRUJB
ODggLyogTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJCUEx
N0QyNzVFMUVBQzU3OTgwMEJGMDFFNyAvKiBNZWRpYVNlbGVjdGlvbk9wdGlvbi5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMDc4Mjg5NEEyNUMzNkZDRjAwQTdCQTAzIC8qIE1lZGlhU2Vzc2lvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDE2RUNBRTUyNUI1OENDNDAwQjM0REE1IC8qIE1lZGlhU2Vzc2lv
bkdyb3VwSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RBOTU5M0YyNDEyQkFFMDAw
OTEwRUVGIC8qIE1lZGlhU2Vzc2lvbkhlbHBlcklPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE0
NDYwQTIyNDEyOTk0NTAwODE0QkU3IC8qIE1lZGlhU2Vzc2lvbklkZW50aWZpZXIuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggYTZh
NTRhNjExNDU1ZTRiZmE5OWU4NmY2MDNjNTI5MGRmNzAwZDEwOS4uMTUyNjY5MjM3ZDNlYzA0ZWU3
NTg0ZWRiMTk1MzA0NWVkOTZhZmQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNzUwNSw2ICs3NTA1LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpk
aWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW8K
ICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsIGNvbW1hbmQpOwogCiAgICAgVXNlckdlc3R1
cmVJbmRpY2F0b3IgcmVtb3RlQ29udHJvbFVzZXJHZXN0dXJlKFByb2Nlc3NpbmdVc2VyR2VzdHVy
ZSwgJmRvY3VtZW50KCkpOworICAgIGRvdWJsZSBvZmZzZXQgPSAxMDsKICAgICBzd2l0Y2ggKGNv
bW1hbmQpIHsKICAgICBjYXNlIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5Q29tbWFuZDoKICAg
ICAgICAgcGxheSgpOwpAQCAtNzUyNiw2ICs3NTI3LDE2IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6ZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpS
ZW1vCiAgICAgY2FzZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW5kU2Vla2luZ0ZvcndhcmRDb21t
YW5kOgogICAgICAgICBlbmRTY2FubmluZygpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpTa2lwRm9yd2FyZENvbW1hbmQ6CisgICAgICAgIGlmIChhcmd1
bWVudCkKKyAgICAgICAgICAgIG9mZnNldCA9IGFyZ3VtZW50LT5hc0RvdWJsZTsKKyAgICAgICAg
aGFuZGxlU2Vla1RvUGxheWJhY2tQb3NpdGlvbihvZmZzZXQpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTa2lwQmFja3dhcmRDb21tYW5kOgorICAgICAg
ICBpZiAoYXJndW1lbnQpCisgICAgICAgICAgICBvZmZzZXQgPSBhcmd1bWVudC0+YXNEb3VibGU7
CisgICAgICAgIGhhbmRsZVNlZWtUb1BsYXliYWNrUG9zaXRpb24oMCAtIG9mZnNldCk7CisgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgUGxhdGZvcm1NZWRpYVNlc3Npb246OlNlZWtUb1BsYXliYWNr
UG9zaXRpb25Db21tYW5kOgogICAgICAgICBBU1NFUlQoYXJndW1lbnQpOwogICAgICAgICBpZiAo
YXJndW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNl
c3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcApp
bmRleCA1OGQ0MmVjZTQxMjZkOWM2YjM0MTg4MGMwZGE3MDMzYTQ5MGNlMDVjLi40YWViYmQ2YWQ3
OGY1OGYzMjkwNTNlMDcyZmQ1MGIxZmU3YzQyMGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTQsNiArNTQsMTIgQEAKICNpbmNsdWRlICJTb3VyY2VC
dWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKKyNpZiBFTkFC
TEUoTUVESUFfU0VTU0lPTikKKyNpbmNsdWRlICJNZWRpYU1ldGFkYXRhLmgiCisjaW5jbHVkZSAi
TWVkaWFTZXNzaW9uLmgiCisjaW5jbHVkZSAiTmF2aWdhdG9yTWVkaWFTZXNzaW9uLmgiCisjZW5k
aWYKKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgi
CiAjaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCkBAIC0xMDIxLDYgKzEwMjcs
NzAgQEAgYm9vbCBNZWRpYUVsZW1lbnRTZXNzaW9uOjphbGxvd3NQbGF5YmFja0NvbnRyb2xzRm9y
QXV0b3BsYXlpbmdBdWRpbygpIGNvbnN0CiAgICAgcmV0dXJuIHBhZ2UgJiYgcGFnZS0+YWxsb3dz
UGxheWJhY2tDb250cm9sc0ZvckF1dG9wbGF5aW5nQXVkaW8oKTsKIH0KIAorI2lmIEVOQUJMRShN
RURJQV9TRVNTSU9OKQordm9pZCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpkaWRSZWNlaXZlUmVtb3Rl
Q29udHJvbENvbW1hbmQoUmVtb3RlQ29udHJvbENvbW1hbmRUeXBlIGNvbW1hbmRUeXBlLCBjb25z
dCBSZW1vdGVDb21tYW5kQXJndW1lbnQqIGFyZ3VtZW50KQoreworICAgIGF1dG8qIHdpbmRvdyA9
IG1fZWxlbWVudC5kb2N1bWVudCgpLmRvbVdpbmRvdygpOworICAgIGF1dG8qIHNlc3Npb24gPSB3
aW5kb3cgPyAmTmF2aWdhdG9yTWVkaWFTZXNzaW9uOjptZWRpYVNlc3Npb24od2luZG93LT5uYXZp
Z2F0b3IoKSkgOiBudWxscHRyOworICAgIGlmICghc2Vzc2lvbiB8fCAhc2Vzc2lvbi0+aGFzQWN0
aXZlQWN0aW9uSGFuZGxlcnMoKSkgeworICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6ZGlk
UmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKGNvbW1hbmRUeXBlLCBhcmd1bWVudCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBNZWRpYVNlc3Npb25BY3Rpb25EZXRhaWxzIGFjdGlv
bkRldGFpbHM7CisgICAgc3dpdGNoIChjb21tYW5kVHlwZSkgeworICAgIGNhc2UgTm9Db21tYW5k
OgorICAgICAgICByZXR1cm47CisgICAgY2FzZSBQbGF5Q29tbWFuZDoKKyAgICAgICAgYWN0aW9u
RGV0YWlscy5hY3Rpb24gPSBNZWRpYVNlc3Npb25BY3Rpb246OlBsYXk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgUGF1c2VDb21tYW5kOgorICAgICAgICBhY3Rpb25EZXRhaWxzLmFjdGlvbiA9
IE1lZGlhU2Vzc2lvbkFjdGlvbjo6UGF1c2U7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3Rv
cENvbW1hbmQ6CisgICAgICAgIGFjdGlvbkRldGFpbHMuYWN0aW9uID0gTWVkaWFTZXNzaW9uQWN0
aW9uOjpTdG9wOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFRvZ2dsZVBsYXlQYXVzZUNvbW1h
bmQ6CisgICAgICAgIGFjdGlvbkRldGFpbHMuYWN0aW9uID0gbV9lbGVtZW50LnBhdXNlZCgpID8g
TWVkaWFTZXNzaW9uQWN0aW9uOjpQbGF5IDogTWVkaWFTZXNzaW9uQWN0aW9uOjpQYXVzZTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBTZWVrVG9QbGF5YmFja1Bvc2l0aW9uQ29tbWFuZDoKKyAg
ICAgICAgQVNTRVJUKGFyZ3VtZW50KTsKKyAgICAgICAgaWYgKCFhcmd1bWVudCkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgYWN0aW9uRGV0YWlscy5hY3Rpb24gPSBNZWRpYVNlc3Npb25B
Y3Rpb246OlNlZWt0bzsKKyAgICAgICAgYWN0aW9uRGV0YWlscy5zZWVrVGltZSA9IGFyZ3VtZW50
LT5hc0RvdWJsZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTa2lwRm9yd2FyZENvbW1hbmQ6
CisgICAgICAgIGlmIChhcmd1bWVudCkKKyAgICAgICAgICAgIGFjdGlvbkRldGFpbHMuc2Vla09m
ZnNldCA9IGFyZ3VtZW50LT5hc0RvdWJsZTsKKyAgICAgICAgYWN0aW9uRGV0YWlscy5hY3Rpb24g
PSBNZWRpYVNlc3Npb25BY3Rpb246OlNlZWtmb3J3YXJkOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFNraXBCYWNrd2FyZENvbW1hbmQ6CisgICAgICAgIGlmIChhcmd1bWVudCkKKyAgICAgICAg
ICAgIGFjdGlvbkRldGFpbHMuc2Vla09mZnNldCA9IGFyZ3VtZW50LT5hc0RvdWJsZTsKKyAgICAg
ICAgYWN0aW9uRGV0YWlscy5hY3Rpb24gPSBNZWRpYVNlc3Npb25BY3Rpb246OlNlZWtiYWNrd2Fy
ZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOZXh0VHJhY2tDb21tYW5kOgorICAgICAgICBh
Y3Rpb25EZXRhaWxzLmFjdGlvbiA9IE1lZGlhU2Vzc2lvbkFjdGlvbjo6TmV4dHRyYWNrOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFByZXZpb3VzVHJhY2tDb21tYW5kOgorICAgICAgICBhY3Rp
b25EZXRhaWxzLmFjdGlvbiA9IE1lZGlhU2Vzc2lvbkFjdGlvbjo6UHJldmlvdXN0cmFjazsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBCZWdpblNlZWtpbmdCYWNrd2FyZENvbW1hbmQ6CisgICAg
Y2FzZSBFbmRTZWVraW5nQmFja3dhcmRDb21tYW5kOgorICAgIGNhc2UgQmVnaW5TZWVraW5nRm9y
d2FyZENvbW1hbmQ6CisgICAgY2FzZSBFbmRTZWVraW5nRm9yd2FyZENvbW1hbmQ6CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgCisgICAg
aWYgKGF1dG8gaGFuZGxlciA9IHNlc3Npb24tPmhhbmRsZXJGb3JBY3Rpb24oYWN0aW9uRGV0YWls
cy5hY3Rpb24pKQorICAgICAgICBoYW5kbGVyLT5oYW5kbGVFdmVudChhY3Rpb25EZXRhaWxzKTsK
KyAgICBlbHNlCisgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgIklnbm9yaW5nIGNv
bW1hbmQsIG5vIGFjdGlvbiBoYW5kbGVyIHJlZ2lzdGVyZWQgZm9yICIsIGFjdGlvbkRldGFpbHMu
YWN0aW9uKTsKK30KKyNlbmRpZgorCiBPcHRpb25hbDxOb3dQbGF5aW5nSW5mbz4gTWVkaWFFbGVt
ZW50U2Vzc2lvbjo6bm93UGxheWluZ0luZm8oKSBjb25zdAogewogICAgIGF1dG8qIHBhZ2UgPSBt
X2VsZW1lbnQuZG9jdW1lbnQoKS5wYWdlKCk7CkBAIC0xMDMyLDcgKzExMDIsMTkgQEAgT3B0aW9u
YWw8Tm93UGxheWluZ0luZm8+IE1lZGlhRWxlbWVudFNlc3Npb246Om5vd1BsYXlpbmdJbmZvKCkg
Y29uc3QKICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUoY3VycmVudFRpbWUpIHx8ICFzdXBwb3J0c1Nl
ZWtpbmcpCiAgICAgICAgIGN1cnJlbnRUaW1lID0gTWVkaWFQbGF5ZXI6OmludmFsaWRUaW1lKCk7
CiAKLSAgICByZXR1cm4gTm93UGxheWluZ0luZm8geyBtX2VsZW1lbnQubWVkaWFTZXNzaW9uVGl0
bGUoKSwgbV9lbGVtZW50LnNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcigpLCBkdXJhdGlvbiwg
Y3VycmVudFRpbWUsIHN1cHBvcnRzU2Vla2luZywgbV9lbGVtZW50Lm1lZGlhU2Vzc2lvblVuaXF1
ZUlkZW50aWZpZXIoKSwgaXNQbGF5aW5nLCBhbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmls
aXR5IH07CisgICAgU3RyaW5nIHRpdGxlOworICAgIFN0cmluZyBhcnRpc3Q7CisgICAgU3RyaW5n
IGFsYnVtOworICAgIGF1dG8qIHdpbmRvdyA9IG1fZWxlbWVudC5kb2N1bWVudCgpLmRvbVdpbmRv
dygpOworICAgIGF1dG8qIHNlc3Npb25NZXRhZGF0YSA9IHdpbmRvdyA/IE5hdmlnYXRvck1lZGlh
U2Vzc2lvbjo6bWVkaWFTZXNzaW9uKHdpbmRvdy0+bmF2aWdhdG9yKCkpLm1ldGFkYXRhKCkgOiBu
dWxscHRyOworICAgIGlmIChzZXNzaW9uTWV0YWRhdGEpIHsKKyAgICAgICAgdGl0bGUgPSBzZXNz
aW9uTWV0YWRhdGEtPnRpdGxlKCk7CisgICAgICAgIGFydGlzdCA9IHNlc3Npb25NZXRhZGF0YS0+
YXJ0aXN0KCk7CisgICAgICAgIGFsYnVtID0gc2Vzc2lvbk1ldGFkYXRhLT5hbGJ1bSgpOworICAg
IH0gZWxzZQorICAgICAgICB0aXRsZSA9IG1fZWxlbWVudC5tZWRpYVNlc3Npb25UaXRsZSgpOwor
CisgICAgcmV0dXJuIE5vd1BsYXlpbmdJbmZvIHsgV1RGTW92ZSh0aXRsZSksIFdURk1vdmUoYXJ0
aXN0KSwgV1RGTW92ZShhbGJ1bSksIG1fZWxlbWVudC5zb3VyY2VBcHBsaWNhdGlvbklkZW50aWZp
ZXIoKSwgZHVyYXRpb24sIGN1cnJlbnRUaW1lLCBzdXBwb3J0c1NlZWtpbmcsIG1fZWxlbWVudC5t
ZWRpYVNlc3Npb25VbmlxdWVJZGVudGlmaWVyKCksIGlzUGxheWluZywgYWxsb3dzTm93UGxheWlu
Z0NvbnRyb2xzVmlzaWJpbGl0eSB9OwogfQogCiB2b2lkIE1lZGlhRWxlbWVudFNlc3Npb246OnVw
ZGF0ZU1lZGlhVXNhZ2VJZkNoYW5nZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9NZWRpYUVsZW1lbnRTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVu
dFNlc3Npb24uaAppbmRleCAxYWI0NjJmNDQ2MWE0NGZjY2VjZWQ5ZmJkMTIzYjZlNzUyYjc3NDIz
Li5kNzFlNGRiYjRmMDNjNDM2ZWYzNGVjOTRjZWU0NzAyYWVhMmEwMWJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTQtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE3NCw2ICsxNzQsMTAgQEAgcHVi
bGljOgogICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
ICJNZWRpYUVsZW1lbnRTZXNzaW9uIjsgfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU0VT
U0lPTikKKyAgICB2b2lkIGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChSZW1vdGVDb250
cm9sQ29tbWFuZFR5cGUsIGNvbnN0IFJlbW90ZUNvbW1hbmRBcmd1bWVudCogPSBudWxscHRyKSBm
aW5hbDsKKyNlbmRpZgorCiBwcml2YXRlOgogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNL
X1RBUkdFVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IDY3MDFhMmRlMDc0MDI4
NDM1YTRiZjczNmJmYjZmZjI5YTA0OGZkYjUuLjFhZDQzZmU1MzZhZDNjYWNiZDJjNGU3ZTA0YjE1
MDI2N2U5ZThiMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAtMTAxLDcgKzEw
MSw2IEBAIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiBjbGFzcyBIVE1MVmlkZW9FbGVtZW50Owog
Y2xhc3MgSGl0VGVzdFJlc3VsdDsKIGNsYXNzIEludFJlY3Q7Ci1jbGFzcyBNZWRpYVNlc3Npb25N
ZXRhZGF0YTsKIGNsYXNzIE5hdmlnYXRpb25BY3Rpb247CiBjbGFzcyBOb2RlOwogY2xhc3MgUGFn
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0
ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIu
Y3BwCmluZGV4IGFmMzRkNTBkM2E1YThhNjVlNWJjOTVlODc3NTMxYTdhYmY0NDc5NjcuLjViMmE5
MWYyYzViNDgwZmZmNWNkODQyMjk2MzEyMjU4NDg1MTVjZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNyw0ICszNywyNSBAQCBz
dGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ29tbWFuZExpc3RlbmVyPiBSZW1vdGVDb21tYW5kTGlzdGVu
ZXI6OmNyZWF0ZShSZW1vdGVDb21tYQogCiAjZW5kaWYKIAordm9pZCBSZW1vdGVDb21tYW5kTGlz
dGVuZXI6OnNjaGVkdWxlU3VwcG9ydGVkQ29tbWFuZHNVcGRhdGUoKQoreworICAgIGlmICghbV91
cGRhdGVDb21tYW5kc1Rhc2suaGFzUGVuZGluZ1Rhc2soKSkgeworICAgICAgICBtX3VwZGF0ZUNv
bW1hbmRzVGFzay5zY2hlZHVsZVRhc2soW3RoaXNdICgpICB7CisgICAgICAgICAgICB1cGRhdGVT
dXBwb3J0ZWRDb21tYW5kcygpOworICAgICAgICB9KTsKKyAgICB9Cit9CisKK3ZvaWQgUmVtb3Rl
Q29tbWFuZExpc3RlbmVyOjphZGRTdXBwb3J0ZWRDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgY29tbWFuZCkKK3sKKyAgICBtX3JlZ2lzdGVyZWRD
b21tYW5kcy5hZGQoY29tbWFuZCk7CisgICAgc2NoZWR1bGVTdXBwb3J0ZWRDb21tYW5kc1VwZGF0
ZSgpOworfQorCit2b2lkIFJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6cmVtb3ZlU3VwcG9ydGVkQ29t
bWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlIGNvbW1h
bmQpCit7CisgICAgbV9yZWdpc3RlcmVkQ29tbWFuZHMucmVtb3ZlKGNvbW1hbmQpOworICAgIHNj
aGVkdWxlU3VwcG9ydGVkQ29tbWFuZHNVcGRhdGUoKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuaAppbmRleCAyYjQzNGFlZjZlNzVl
YTM1MGM4ODg1ZjBlZWY3MGM1OTZlMDExZTk3Li42N2FjYmFhODY0ZDExNmJmMDIzMTFiMTQzNDg4
MDM0YmEwNmM5NmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZW1vdGVD
b21tYW5kTGlzdGVuZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZW1vdGVDb21t
YW5kTGlzdGVuZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIFJlbW90ZUNvbW1hbmRMaXN0ZW5l
cl9oCiAjZGVmaW5lIFJlbW90ZUNvbW1hbmRMaXN0ZW5lcl9oCiAKKyNpbmNsdWRlICJEZWZlcnJh
YmxlVGFzay5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTQ1LDEyICs0NiwyMCBAQCBwdWJsaWM6CiAgICAgUmVtb3RlQ29tbWFu
ZExpc3RlbmVyKFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCYgY2xpZW50KSA6IG1fY2xpZW50
KGNsaWVudCkgeyB9CiAgICAgdmlydHVhbCB+UmVtb3RlQ29tbWFuZExpc3RlbmVyKCkgPSBkZWZh
dWx0OwogCisgICAgdm9pZCBhZGRTdXBwb3J0ZWRDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUpOworICAgIHZvaWQgcmVtb3ZlU3VwcG9ydGVkQ29t
bWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlKTsKICAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3VwcG9ydGVkQ29tbWFuZHMoKSB7IH0KKyAgICB2b2lkIHNj
aGVkdWxlU3VwcG9ydGVkQ29tbWFuZHNVcGRhdGUoKTsKIAogICAgIFJlbW90ZUNvbW1hbmRMaXN0
ZW5lckNsaWVudCYgY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQ7IH0KIAogcHJvdGVj
dGVkOgogICAgIFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCYgbV9jbGllbnQ7CisKKyAgICB1
c2luZyBSZW1vdGVDb21tYW5kc1NldCA9IEhhc2hTZXQ8UGxhdGZvcm1NZWRpYVNlc3Npb246OlJl
bW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgV1RGOjpJbnRIYXNoPFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGU+PjsKKyAgICBSZW1v
dGVDb21tYW5kc1NldCBtX3JlZ2lzdGVyZWRDb21tYW5kczsKKworICAgIERlZmVycmFibGVUYXNr
PFRpbWVyPiBtX3VwZGF0ZUNvbW1hbmRzVGFzazsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oCmluZGV4IDY3ZTkxZTIyZGY4ZjAwZGI0
NDU4MmU5ODBmYjYyMmE4YTA3ODkwZTUuLjc1NDgyN2FhNjBmMjk1MDdkZTMxN2FiZGM3NzI3ZjFh
MThmNGRiZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL05vd1Bs
YXlpbmdJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWlu
Z0luZm8uaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0zMiw2ICszMiw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IE5vd1Bs
YXlpbmdJbmZvIHsKICAgICBTdHJpbmcgdGl0bGU7CisgICAgU3RyaW5nIGFydGlzdDsKKyAgICBT
dHJpbmcgYWxidW07CiAgICAgU3RyaW5nIHNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcjsKICAg
ICBkb3VibGUgZHVyYXRpb24geyAwIH07CiAgICAgZG91YmxlIGN1cnJlbnRUaW1lIHsgMCB9OwpA
QCAtNTUsNiArNTcsMTQgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIE9wdGlvbmFs
PE5vd1BsYXlpbmdJbmZvPiBOb3dQbGF5aW5nSW5mbzo6ZGVjb2RlKEQKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHRpdGxlKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAorICAgIFN0cmluZyBhcnRp
c3Q7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhcnRpc3QpKQorICAgICAgICByZXR1cm4geyB9
OworCisgICAgU3RyaW5nIGFsYnVtOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWxidW0pKQor
ICAgICAgICByZXR1cm4geyB9OworCiAgICAgU3RyaW5nIHNvdXJjZUFwcGxpY2F0aW9uSWRlbnRp
ZmllcjsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmll
cikpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC04Myw3ICs5Myw3IEBAIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IGlubGluZSBPcHRpb25hbDxOb3dQbGF5aW5nSW5mbz4gTm93UGxheWluZ0luZm86
OmRlY29kZShECiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhbGxvd3NOb3dQbGF5aW5nQ29udHJv
bHNWaXNpYmlsaXR5KSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIHJldHVybiBOb3dQbGF5
aW5nSW5mbyB7IFdURk1vdmUodGl0bGUpLCBXVEZNb3ZlKHNvdXJjZUFwcGxpY2F0aW9uSWRlbnRp
ZmllciksIGR1cmF0aW9uLCBjdXJyZW50VGltZSwgc3VwcG9ydHNTZWVraW5nLCB1bmlxdWVJZGVu
dGlmaWVyLCBpc1BsYXlpbmcsIGFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHkgfTsK
KyAgICByZXR1cm4gTm93UGxheWluZ0luZm8geyBXVEZNb3ZlKHRpdGxlKSwgV1RGTW92ZShhcnRp
c3QpLCBXVEZNb3ZlKGFsYnVtKSwgV1RGTW92ZShzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIp
LCBkdXJhdGlvbiwgY3VycmVudFRpbWUsIHN1cHBvcnRzU2Vla2luZywgdW5pcXVlSWRlbnRpZmll
ciwgaXNQbGF5aW5nLCBhbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5IH07CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcAppbmRleCA5MjY5YWQzOTNlNjIwNTkx
YzgwYjQyMThmNTk4NDQ1OWZlZjlmYmEzLi40MzdjNmQwYTUxNjY0NTkwYTQ2OWJhZDFiYjU4MjJj
MTk4MmUxOTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0
Zm9ybU1lZGlhU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTMsNiArOTMsMTAgQEAgU3RyaW5nIGNvbnZl
cnRFbnVtZXJhdGlvblRvU3RyaW5nKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9s
Q29tbWFuZFR5cGUKICAgICAgICAgTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoIkJlZ2luU2Vla2lu
Z0ZvcndhcmRDb21tYW5kIiksCiAgICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJFbmRT
ZWVraW5nRm9yd2FyZENvbW1hbmQiKSwKICAgICAgICAgTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwo
IlNlZWtUb1BsYXliYWNrUG9zaXRpb25Db21tYW5kIiksCisgICAgICAgIE1BS0VfU1RBVElDX1NU
UklOR19JTVBMKCJTa2lwRm9yd2FyZENvbW1hbmQiKSwKKyAgICAgICAgTUFLRV9TVEFUSUNfU1RS
SU5HX0lNUEwoIlNraXBCYWNrd2FyZENvbW1hbmQiKSwKKyAgICAgICAgTUFLRV9TVEFUSUNfU1RS
SU5HX0lNUEwoIk5leHRUcmFja0NvbW1hbmQiKSwKKyAgICAgICAgTUFLRV9TVEFUSUNfU1RSSU5H
X0lNUEwoIlByZXZpb3VzVHJhY2tDb21tYW5kIiksCiAgICAgfTsKICAgICBzdGF0aWNfYXNzZXJ0
KCFzdGF0aWNfY2FzdDxzaXplX3Q+KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb0NvbW1hbmQpLCAi
UGxhdGZvcm1NZWRpYVNlc3Npb246Ok5vQ29tbWFuZCBpcyBub3QgMCBhcyBleHBlY3RlZCIpOwog
ICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6UGxheUNvbW1hbmQpID09IDEsICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheUNvbW1hbmQg
aXMgbm90IDEgYXMgZXhwZWN0ZWQiKTsKQEAgLTEwNCw2ICsxMDgsMTAgQEAgU3RyaW5nIGNvbnZl
cnRFbnVtZXJhdGlvblRvU3RyaW5nKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9s
Q29tbWFuZFR5cGUKICAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oUGxhdGZv
cm1NZWRpYVNlc3Npb246OkJlZ2luU2Vla2luZ0ZvcndhcmRDb21tYW5kKSA9PSA3LCAiUGxhdGZv
cm1NZWRpYVNlc3Npb246OkJlZ2luU2Vla2luZ0ZvcndhcmRDb21tYW5kIGlzIG5vdCA3IGFzIGV4
cGVjdGVkIik7CiAgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpFbmRTZWVraW5nRm9yd2FyZENvbW1hbmQpID09IDgsICJQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6RW5kU2Vla2luZ0ZvcndhcmRDb21tYW5kIGlzIG5vdCA4IGFzIGV4cGVjdGVk
Iik7CiAgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpTZWVrVG9QbGF5YmFja1Bvc2l0aW9uQ29tbWFuZCkgPT0gOSwgIlBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpTZWVrVG9QbGF5YmFja1Bvc2l0aW9uQ29tbWFuZCBpcyBub3QgOSBhcyBleHBl
Y3RlZCIpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6U2tpcEZvcndhcmRDb21tYW5kKSA9PSAxMCwgIlBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpTa2lwRm9yd2FyZENvbW1hbmQgaXMgbm90IDEwIGFzIGV4cGVjdGVkIik7CisgICAgc3Rh
dGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTa2lw
QmFja3dhcmRDb21tYW5kKSA9PSAxMSwgIlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTa2lwQmFja3dh
cmRDb21tYW5kIGlzIG5vdCAxMSBhcyBleHBlY3RlZCIpOworICAgIHN0YXRpY19hc3NlcnQoc3Rh
dGljX2Nhc3Q8c2l6ZV90PihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TmV4dFRyYWNrQ29tbWFuZCkg
PT0gMTIsICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TmV4dFRyYWNrQ29tbWFuZCBpcyBub3QgMTIg
YXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oUGxh
dGZvcm1NZWRpYVNlc3Npb246OlByZXZpb3VzVHJhY2tDb21tYW5kKSA9PSAxMywgIlBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpQcmV2aW91c1RyYWNrQ29tbWFuZCBpcyBub3QgMTMgYXMgZXhwZWN0ZWQi
KTsKICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb21tYW5kKSA8IFdURl9BUlJBWV9M
RU5HVEgodmFsdWVzKSk7CiAgICAgcmV0dXJuIHZhbHVlc1tzdGF0aWNfY2FzdDxzaXplX3Q+KGNv
bW1hbmQpXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bs
YXRmb3JtTWVkaWFTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0
Zm9ybU1lZGlhU2Vzc2lvbi5oCmluZGV4IGM5ODEyMTNkNWU5MDc2ZTQyZWI5MGRiNGYzYTExNTZi
NTJmNGI2MjYuLmQ5NTJmYTk1YjNmMjczNzBlNjBiNGM2OTEyZTk1MWE1ZDY4ZDBkYjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Np
b24uaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTEzMCw5ICsxMzAsMTMgQEAgcHVibGljOgogICAgICAgICBCZWdpblNlZWtpbmdG
b3J3YXJkQ29tbWFuZCwKICAgICAgICAgRW5kU2Vla2luZ0ZvcndhcmRDb21tYW5kLAogICAgICAg
ICBTZWVrVG9QbGF5YmFja1Bvc2l0aW9uQ29tbWFuZCwKKyAgICAgICAgU2tpcEZvcndhcmRDb21t
YW5kLAorICAgICAgICBTa2lwQmFja3dhcmRDb21tYW5kLAorICAgICAgICBOZXh0VHJhY2tDb21t
YW5kLAorICAgICAgICBQcmV2aW91c1RyYWNrQ29tbWFuZCwKICAgICB9OwogICAgIGJvb2wgY2Fu
UmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kcygpIGNvbnN0OwotICAgIHZvaWQgZGlkUmVjZWl2
ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgY29uc3QgUmVt
b3RlQ29tbWFuZEFyZ3VtZW50KiBhcmd1bWVudCA9IG51bGxwdHIpOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUmVtb3RlQ29udHJvbENvbW1hbmRUeXBl
LCBjb25zdCBSZW1vdGVDb21tYW5kQXJndW1lbnQqID0gbnVsbHB0cik7CiAgICAgYm9vbCBzdXBw
b3J0c1NlZWtpbmcoKSBjb25zdDsKIAogICAgIGVudW0gRGlzcGxheVR5cGUgOiB1aW50OF90IHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyLmgKaW5kZXggMWZjYjMzNDI0ZjBiNTVmZDIyMDliNjM0Y2VkZGVl
ODM5YzRkN2VkNi4uMjNkZDk5YzZkZWYyZmY0ZGFlZjg3YTA1MDk4Yjc3NWE4MDdkY2ExMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNTIsNiArMTUyLDkgQEAgcHVibGljOgogICAgIGJv
b2wgaXNJbnRlcnJ1cHRlZCgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJydXB0ZWQ7IH0KICAgICBi
b29sIGhhc05vU2Vzc2lvbigpIGNvbnN0OwogCisgICAgdmlydHVhbCB2b2lkIGFkZFN1cHBvcnRl
ZENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSkg
eyB9OworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVTdXBwb3J0ZWRDb21tYW5kKFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUpIHsgfTsKKwogcHJvdGVjdGVkOgog
ICAgIGZyaWVuZCBjbGFzcyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjsKICAgICBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbk1hbmFnZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLmgKaW5kZXggNDFiYTJk
NTBjOGFhNmFhYmE5OTYyNzU5NWVlMDQyZGU0NmI3MmEyZS4uZDllMzdhYTgzN2Q2NThhOTcyZTZi
YjQzMjY2YzZjZGQ2MGRmYTk3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLmgKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODQsNiAr
ODQsOSBAQCBwcm90ZWN0ZWQ6CiAKICAgICBHZW5lcmljVGFza1F1ZXVlPFRpbWVyPiYgdGFza1F1
ZXVlKCkgeyByZXR1cm4gbV90YXNrUXVldWU7IH0KIAorICAgIHZvaWQgYWRkU3VwcG9ydGVkQ29t
bWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlKSBmaW5h
bDsKKyAgICB2b2lkIHJlbW92ZVN1cHBvcnRlZENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246
OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSkgZmluYWw7CisKIHByaXZhdGU6CiAjaWYgIVJFTEVB
U0VfTE9HX0RJU0FCTEVECiAgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gIk1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYSI7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJD
b2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lv
bk1hbmFnZXJDb2NvYS5tbQppbmRleCAwNmZmZmU3MDQ0NmU4MWJjMTFiZWU2ZTNlOWQzYTg2NmJm
OTI3N2M3Li5kMzRmYzkwZDdhYThiNjQwODA3OWEzMTQ4OGFiMDJmODBiN2YyODk2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5h
Z2VyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVk
aWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTUzLDYgKzE1Myw5IEBAIHZvaWQgTWVkaWFT
ZXNzaW9uTWFuYWdlckNvY29hOjpwcmVwYXJlVG9TZW5kVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3QoKQogdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNjaGVkdWxlU2Vzc2lvblN0YXR1
c1VwZGF0ZSgpCiB7CiAgICAgbV90YXNrUXVldWUuZW5xdWV1ZVRhc2soW3RoaXNdICgpIG11dGFi
bGUgeworICAgICAgICBpZiAobV9yZW1vdGVDb21tYW5kTGlzdGVuZXIpCisgICAgICAgICAgICBt
X3JlbW90ZUNvbW1hbmRMaXN0ZW5lci0+dXBkYXRlU3VwcG9ydGVkQ29tbWFuZHMoKTsKKwogICAg
ICAgICB1cGRhdGVOb3dQbGF5aW5nSW5mbygpOwogCiAgICAgICAgIGZvckVhY2hTZXNzaW9uKFtd
IChhdXRvJiBzZXNzaW9uKSB7CkBAIC0yMzIsMTAgKzIzNSwyMyBAQCB2b2lkIE1lZGlhU2Vzc2lv
bk1hbmFnZXJDb2NvYTo6Y2xpZW50Q2hhcmFjdGVyaXN0aWNzQ2hhbmdlZChQbGF0Zm9ybU1lZGlh
U2Vzc2lvbgogCiB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2Vzc2lvbkNhblByb2R1
Y2VBdWRpb0NoYW5nZWQoKQogeworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CiAgICAg
UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uQ2FuUHJvZHVjZUF1ZGlvQ2hhbmdl
ZCgpOwogICAgIHNjaGVkdWxlU2Vzc2lvblN0YXR1c1VwZGF0ZSgpOwogfQogCit2b2lkIE1lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYTo6YWRkU3VwcG9ydGVkQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlIGNvbW1hbmQpCit7CisgICAgaWYgKG1fcmVt
b3RlQ29tbWFuZExpc3RlbmVyKQorICAgICAgICBtX3JlbW90ZUNvbW1hbmRMaXN0ZW5lci0+YWRk
U3VwcG9ydGVkQ29tbWFuZChjb21tYW5kKTsKK30KKwordm9pZCBNZWRpYVNlc3Npb25NYW5hZ2Vy
Q29jb2E6OnJlbW92ZVN1cHBvcnRlZENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90
ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21tYW5kKQoreworICAgIGlmIChtX3JlbW90ZUNvbW1hbmRM
aXN0ZW5lcikKKyAgICAgICAgbV9yZW1vdGVDb21tYW5kTGlzdGVuZXItPnJlbW92ZVN1cHBvcnRl
ZENvbW1hbmQoY29tbWFuZCk7Cit9CisKIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpj
bGVhck5vd1BsYXlpbmdJbmZvKCkKIHsKICAgICBpZiAoY2FuTG9hZF9NZWRpYVJlbW90ZV9NUk1l
ZGlhUmVtb3RlU2V0Tm93UGxheWluZ1Zpc2liaWxpdHkoKSkKQEAgLTI2MCw2ICsyNzYsMTIgQEAg
dm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0
QXNOb3dQbGF5aW5nQXBwbGljYXRpb24KIAogICAgIGF1dG8gaW5mbyA9IGFkb3B0Q0YoQ0ZEaWN0
aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCA0LCAma0NGVHlwZURpY3Rp
b25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAK
KyAgICBpZiAoIW5vd1BsYXlpbmdJbmZvLmFydGlzdC5pc0VtcHR5KCkpCisgICAgICAgIENGRGlj
dGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9B
cnRpc3QsIG5vd1BsYXlpbmdJbmZvLmFydGlzdC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKwor
ICAgIGlmICghbm93UGxheWluZ0luZm8uYWxidW0uaXNFbXB0eSgpKQorICAgICAgICBDRkRpY3Rp
b25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQWxi
dW0sIG5vd1BsYXlpbmdJbmZvLmFsYnVtLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworCiAgICAg
aWYgKCFub3dQbGF5aW5nSW5mby50aXRsZS5pc0VtcHR5KCkpCiAgICAgICAgIENGRGljdGlvbmFy
eVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9UaXRsZSwg
bm93UGxheWluZ0luZm8udGl0bGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9NZWRpYVJlbW90ZVNvZnRMaW5rLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTWVkaWFSZW1vdGVTb2Z0TGluay5oCmluZGV4IDhi
NWNkMjNmYjAyYWEyNjQ2NjBlZGYzODE0ZTc3ZmI4NjJmZDUwYzguLjBhZTgzZGQwMjI5OWEyZjk2
YjIxNzc0ODJiM2M3NzJiYjY5MGQwNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9NZWRpYVJlbW90ZVNvZnRMaW5rLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL01lZGlhUmVtb3RlU29mdExpbmsuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01OCw2ICs1OCwxNCBAQCBTT0ZUX0xJTktfRlVO
Q1RJT05fTUFZX0ZBSUxfRk9SX0hFQURFUihXZWJDb3JlLCBNZWRpYVJlbW90ZSwgTVJNZWRpYVJl
bW90ZVNldFBhcgogI2RlZmluZSBNUk1lZGlhUmVtb3RlU2V0UGFyZW50QXBwbGljYXRpb24gc29m
dExpbmtfTWVkaWFSZW1vdGVfTVJNZWRpYVJlbW90ZVNldFBhcmVudEFwcGxpY2F0aW9uCiBTT0ZU
X0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihXZWJDb3JlLCBNZWRpYVJlbW90ZSwga01STWVkaWFS
ZW1vdGVOb3dQbGF5aW5nSW5mb1RpdGxlLCBDRlN0cmluZ1JlZik7CiAjZGVmaW5lIGtNUk1lZGlh
UmVtb3RlTm93UGxheWluZ0luZm9UaXRsZSBnZXRfTWVkaWFSZW1vdGVfa01STWVkaWFSZW1vdGVO
b3dQbGF5aW5nSW5mb1RpdGxlKCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFdlYkNv
cmUsIE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0aXN0LCBDRlN0
cmluZ1JlZik7CisjZGVmaW5lIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnRpc3QgZ2V0
X01lZGlhUmVtb3RlX2tNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnRpc3QoKQorU09GVF9M
SU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoV2ViQ29yZSwgTWVkaWFSZW1vdGUsIGtNUk1lZGlhUmVt
b3RlTm93UGxheWluZ0luZm9BbGJ1bSwgQ0ZTdHJpbmdSZWYpOworI2RlZmluZSBrTVJNZWRpYVJl
bW90ZU5vd1BsYXlpbmdJbmZvQWxidW0gZ2V0X01lZGlhUmVtb3RlX2tNUk1lZGlhUmVtb3RlTm93
UGxheWluZ0luZm9BbGJ1bSgpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihXZWJDb3Jl
LCBNZWRpYVJlbW90ZSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtEYXRhLCBD
RlN0cmluZ1JlZik7CisjZGVmaW5lIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3Jr
RGF0YSBnZXRfTWVkaWFSZW1vdGVfa01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtE
YXRhKCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFdlYkNvcmUsIE1lZGlhUmVtb3Rl
LCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya01JTUVUeXBlLCBDRlN0cmluZ1Jl
Zik7CisjZGVmaW5lIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrTUlNRVR5cGUg
Z2V0X01lZGlhUmVtb3RlX2tNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrTUlNRVR5
cGUoKQogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoV2ViQ29yZSwgTWVkaWFSZW1vdGUs
IGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9EdXJhdGlvbiwgQ0ZTdHJpbmdSZWYpOwogI2Rl
ZmluZSBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRHVyYXRpb24gZ2V0X01lZGlhUmVtb3Rl
X2tNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9EdXJhdGlvbigpCiBTT0ZUX0xJTktfQ09OU1RB
TlRfRk9SX0hFQURFUihXZWJDb3JlLCBNZWRpYVJlbW90ZSwga01STWVkaWFSZW1vdGVOb3dQbGF5
aW5nSW5mb0VsYXBzZWRUaW1lLCBDRlN0cmluZ1JlZik7CkBAIC02OCw2ICs3Niw4IEBAIFNPRlRf
TElOS19DT05TVEFOVF9GT1JfSEVBREVSKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJl
bW90ZU9wdGlvblBsYXliYWNrCiAjZGVmaW5lIGtNUk1lZGlhUmVtb3RlT3B0aW9uUGxheWJhY2tQ
b3NpdGlvbiBnZXRfTWVkaWFSZW1vdGVfa01STWVkaWFSZW1vdGVPcHRpb25QbGF5YmFja1Bvc2l0
aW9uKCkKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFdlYkNvcmUsIE1lZGlhUmVtb3Rl
LCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvVW5pcXVlSWRlbnRpZmllciwgQ0ZTdHJpbmdS
ZWYpOwogI2RlZmluZSBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvVW5pcXVlSWRlbnRpZmll
ciBnZXRfTWVkaWFSZW1vdGVfa01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb1VuaXF1ZUlkZW50
aWZpZXIoKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoV2ViQ29yZSwgTWVkaWFSZW1v
dGUsIGtNUk1lZGlhUmVtb3RlT3B0aW9uU2tpcEludGVydmFsLCBDRlN0cmluZ1JlZik7CisjZGVm
aW5lIGtNUk1lZGlhUmVtb3RlT3B0aW9uU2tpcEludGVydmFsIGdldF9NZWRpYVJlbW90ZV9rTVJN
ZWRpYVJlbW90ZU9wdGlvblNraXBJbnRlcnZhbCgpCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoV2ViQ29yZSwgTWVkaWFSZW1vdGUsIE1S
TWVkaWFSZW1vdGVDb3B5UGlja2FibGVSb3V0ZXMsIENGQXJyYXlSZWYsICgpLCAoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9NZWRpYVJlbW90ZVNvZnRMaW5rLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL01lZGlhUmVtb3RlU29mdExpbmsubW0KaW5k
ZXggODRkYWNiODUxZjhjZjZjMWJkNjY3YTk2ZTdiYzA5ZjczOTJmOWQ1NC4uNzNlN2IyMGQ5YmY1
NTI3MDQ3YWMzODExNTIwMDZmM2U4NTIxNWUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL01lZGlhUmVtb3RlU29mdExpbmsubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL01lZGlhUmVtb3RlU29mdExpbmsubW0KQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIAogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ0LDExICs0NCwxNiBAQCBTT0ZU
X0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShXZWJDb3JlLCBNZWRpYVJlbW90ZSwgTVJNZWRpYVJl
bW90ZVNldE5vd1BsYXlpbmdJbgogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29y
ZSwgTWVkaWFSZW1vdGUsIE1STWVkaWFSZW1vdGVTZXROb3dQbGF5aW5nQXBwbGljYXRpb25QbGF5
YmFja1N0YXRlRm9yT3JpZ2luLCB2b2lkLCAoTVJPcmlnaW5SZWYgb3JpZ2luLCBNUlBsYXliYWNr
U3RhdGUgcGxheWJhY2tTdGF0ZSwgZGlzcGF0Y2hfcXVldWVfdCByZXBseVEsIHZvaWQoXmNvbXBs
ZXRpb24pKE1STWVkaWFSZW1vdGVFcnJvcikpLCAob3JpZ2luLCBwbGF5YmFja1N0YXRlLCByZXBs
eVEsIGNvbXBsZXRpb24pKQogU09GVF9MSU5LX0ZVTkNUSU9OX01BWV9GQUlMX0ZPUl9TT1VSQ0Uo
V2ViQ29yZSwgTWVkaWFSZW1vdGUsIE1STWVkaWFSZW1vdGVTZXRQYXJlbnRBcHBsaWNhdGlvbiwg
dm9pZCwgKE1ST3JpZ2luUmVmIG9yaWdpbiwgQ0ZTdHJpbmdSZWYgcGFyZW50QXBwRGlzcGxheUlE
KSwgKG9yaWdpbiwgcGFyZW50QXBwRGlzcGxheUlEKSkKIFNPRlRfTElOS19DT05TVEFOVF9GT1Jf
U09VUkNFKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZv
VGl0bGUsIENGU3RyaW5nUmVmKTsKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFdlYkNv
cmUsIE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0aXN0LCBDRlN0
cmluZ1JlZik7CitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShXZWJDb3JlLCBNZWRpYVJl
bW90ZSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FsYnVtLCBDRlN0cmluZ1JlZik7CitT
T0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShXZWJDb3JlLCBNZWRpYVJlbW90ZSwga01STWVk
aWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtEYXRhLCBDRlN0cmluZ1JlZik7CitTT0ZUX0xJ
TktfQ09OU1RBTlRfRk9SX1NPVVJDRShXZWJDb3JlLCBNZWRpYVJlbW90ZSwga01STWVkaWFSZW1v
dGVOb3dQbGF5aW5nSW5mb0FydHdvcmtNSU1FVHlwZSwgQ0ZTdHJpbmdSZWYpOwogU09GVF9MSU5L
X0NPTlNUQU5UX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgTWVkaWFSZW1vdGUsIGtNUk1lZGlhUmVtb3Rl
Tm93UGxheWluZ0luZm9EdXJhdGlvbiwgQ0ZTdHJpbmdSZWYpOwogU09GVF9MSU5LX0NPTlNUQU5U
X0ZPUl9TT1VSQ0UoV2ViQ29yZSwgTWVkaWFSZW1vdGUsIGtNUk1lZGlhUmVtb3RlTm93UGxheWlu
Z0luZm9FbGFwc2VkVGltZSwgQ0ZTdHJpbmdSZWYpOwogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9T
T1VSQ0UoV2ViQ29yZSwgTWVkaWFSZW1vdGUsIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9Q
bGF5YmFja1JhdGUsIENGU3RyaW5nUmVmKTsKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNF
KFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU9wdGlvblBsYXliYWNrUG9zaXRp
b24sIENGU3RyaW5nUmVmKTsKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFdlYkNvcmUs
IE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvVW5pcXVlSWRlbnRpZmll
ciwgQ0ZTdHJpbmdSZWYpOworU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoV2ViQ29yZSwg
TWVkaWFSZW1vdGUsIGtNUk1lZGlhUmVtb3RlT3B0aW9uU2tpcEludGVydmFsLCBDRlN0cmluZ1Jl
Zik7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9T
T1VSQ0UoV2ViQ29yZSwgTWVkaWFSZW1vdGUsIE1STWVkaWFSZW1vdGVDb3B5UGlja2FibGVSb3V0
ZXMsIENGQXJyYXlSZWYsICgpLCAoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLmgKaW5kZXggOTRhNDJlMTkxNzFiMmRj
YjlmZTliOTBmMWQ1OGMyM2M5Zjc4YTIzYi4uYjcxY2FkODY4MTg4ODRkOTk0YWZhZWU4MzgyNjlj
OTVmNzFkY2M2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1JlbW90
ZUNvbW1hbmRMaXN0ZW5lck1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9S
ZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOSw5ICszOSwxMyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB+UmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjKCk7CiAKIHByb3RlY3RlZDoKLSAgICB2b2lk
IHVwZGF0ZVN1cHBvcnRlZENvbW1hbmRzKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVTdXBw
b3J0ZWRDb21tYW5kcygpIGZpbmFsOwogCiAgICAgdm9pZCogbV9jb21tYW5kSGFuZGxlciB7IG51
bGxwdHIgfTsKKworICAgIGNvbnN0IFJlbW90ZUNvbW1hbmRzU2V0JiBkZWZhdWx0Q29tbWFuZHMo
KTsKKyAgICBSZW1vdGVDb21tYW5kc1NldCBtX2N1cnJlbnRDb21tYW5kczsKKyAgICBib29sIG1f
c3VwcG9ydHNTZWVraW5nIHsgZmFsc2UgfTsKIH07CiAgICAgCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5tbQppbmRl
eCA0ZWE4MzkyMDcyNzE4NDQ4YTg2MjJmZmUyZDMyNWNmNzM3MTI0NjI4Li5mYWY3NTNmODdhNDRm
ZjIwZmVkODI5M2Q3YzE1YjA1YjNhODcwMmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9SZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMubW0KQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIAogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM1LDQyICszNSwx
MDIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgT3B0aW9uYWw8TVJNZWRpYVJl
bW90ZUNvbW1hbmQ+IG1lZGlhUmVtb3RlQ29tbWFuZEZvclBsYXRmb3JtQ29tbWFuZChQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlIGNvbW1hbmQpCit7CisgICAg
c3RhdGljIGNvbnN0IGF1dG8gY29tbWFuZE1hcCA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7Cisg
ICAgICAgIHN0cnVjdCBNYXBFbnRyeSB7CisgICAgICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlIHBsYXRmb3JtQ29tbWFuZDsKKyAgICAgICAgICAg
IE1STWVkaWFSZW1vdGVDb21tYW5kIG1lZGlhUmVtb3RlQ29tbWFuZDsKKyAgICAgICAgfTsKKyAg
ICAgICAgc3RhdGljIGNvbnN0IE1hcEVudHJ5IGVudHJpZXNbXSA9IHsKKyAgICAgICAgICAgIHsg
UGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXlDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZFBs
YXkgfSwKKyAgICAgICAgICAgIHsgUGxhdGZvcm1NZWRpYVNlc3Npb246OlBhdXNlQ29tbWFuZCwg
TVJNZWRpYVJlbW90ZUNvbW1hbmRQYXVzZSB9LAorICAgICAgICAgICAgeyBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6U3RvcENvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kU3RvcCB9LAorICAgICAg
ICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6VG9nZ2xlUGxheVBhdXNlQ29tbWFuZCwgTVJN
ZWRpYVJlbW90ZUNvbW1hbmRUb2dnbGVQbGF5UGF1c2UgfSwKKyAgICAgICAgICAgIHsgUGxhdGZv
cm1NZWRpYVNlc3Npb246OkJlZ2luU2Vla2luZ0JhY2t3YXJkQ29tbWFuZCwgTVJNZWRpYVJlbW90
ZUNvbW1hbmRCZWdpblJld2luZCB9LAorICAgICAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6RW5kU2Vla2luZ0JhY2t3YXJkQ29tbWFuZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRFbmRSZXdp
bmQgfSwKKyAgICAgICAgICAgIHsgUGxhdGZvcm1NZWRpYVNlc3Npb246OkJlZ2luU2Vla2luZ0Zv
cndhcmRDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZEJlZ2luRmFzdEZvcndhcmQgfSwKKyAg
ICAgICAgICAgIHsgUGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZFNlZWtpbmdGb3J3YXJkQ29tbWFu
ZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRFbmRGYXN0Rm9yd2FyZCB9LAorICAgICAgICAgICAgeyBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2Vla1RvUGxheWJhY2tQb3NpdGlvbkNvbW1hbmQsIE1STWVk
aWFSZW1vdGVDb21tYW5kU2Vla1RvUGxheWJhY2tQb3NpdGlvbiB9LAorICAgICAgICAgICAgeyBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEZvcndhcmRDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29t
bWFuZFNraXBGb3J3YXJkIH0sCisgICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpT
a2lwQmFja3dhcmRDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZFNraXBCYWNrd2FyZCB9LAor
ICAgICAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TmV4dFRyYWNrQ29tbWFuZCwgTVJN
ZWRpYVJlbW90ZUNvbW1hbmROZXh0VHJhY2sgfSwKKyAgICAgICAgICAgIHsgUGxhdGZvcm1NZWRp
YVNlc3Npb246OlByZXZpb3VzVHJhY2tDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZFByZXZp
b3VzVHJhY2sgfSwKKyAgICAgICAgfTsKKworICAgICAgICBIYXNoTWFwPFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIE1STWVkaWFSZW1vdGVDb21tYW5kLCBX
VEY6OkludEhhc2g8UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlw
ZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90
ZUNvbnRyb2xDb21tYW5kVHlwZT4+IG1hcDsKKyAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IGVu
dHJpZXMpCisgICAgICAgICAgICBtYXAuYWRkKGVudHJ5LnBsYXRmb3JtQ29tbWFuZCwgZW50cnku
bWVkaWFSZW1vdGVDb21tYW5kKTsKKyAgICAgICAgcmV0dXJuIG1hcDsKKyAgICB9KCkpOworCisg
ICAgYXV0byBpdCA9IGNvbW1hbmRNYXAuZ2V0KCkuZmluZChjb21tYW5kKTsKKyAgICBpZiAoaXQg
IT0gY29tbWFuZE1hcC5nZXQoKS5lbmQoKSkKKyAgICAgICAgcmV0dXJuIHsgaXQtPnZhbHVlIH07
CisKKyAgICByZXR1cm4geyB9OworfQorCiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ29tbWFuZExp
c3RlbmVyPiBSZW1vdGVDb21tYW5kTGlzdGVuZXI6OmNyZWF0ZShSZW1vdGVDb21tYW5kTGlzdGVu
ZXJDbGllbnQmIGNsaWVudCkKIHsKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVDb21tYW5k
TGlzdGVuZXJNYWM+KGNsaWVudCk7CiB9CiAKK2NvbnN0IFJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6
UmVtb3RlQ29tbWFuZHNTZXQmIFJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYzo6ZGVmYXVsdENvbW1h
bmRzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVtb3RlQ29tbWFuZHNTZXQ+IGNv
bW1hbmRzKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3Rl
Q29udHJvbENvbW1hbmRUeXBlPiB7CisgICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5
Q29tbWFuZCwKKyAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OlBhdXNlQ29tbWFuZCwKKyAg
ICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OlRvZ2dsZVBsYXlQYXVzZUNvbW1hbmQsCisgICAg
ICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpCZWdpblNlZWtpbmdGb3J3YXJkQ29tbWFuZCwKKyAg
ICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZFNlZWtpbmdGb3J3YXJkQ29tbWFuZCwKKyAg
ICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OkJlZ2luU2Vla2luZ0JhY2t3YXJkQ29tbWFuZCwK
KyAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZFNlZWtpbmdCYWNrd2FyZENvbW1hbmQs
CisgICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTZWVrVG9QbGF5YmFja1Bvc2l0aW9uQ29t
bWFuZCwKKyAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OlNraXBGb3J3YXJkQ29tbWFuZCwK
KyAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OlNraXBCYWNrd2FyZENvbW1hbmQsCisgICAg
fSk7CisKKyAgICByZXR1cm4gY29tbWFuZHM7Cit9CisKK3N0YXRpYyBib29sIGlzU2Vla0NvbW1h
bmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21tYW5k
KQoreworICAgIHJldHVybiBjb21tYW5kID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTZWVrVG9Q
bGF5YmFja1Bvc2l0aW9uQ29tbWFuZAorICAgICAgICB8fCBjb21tYW5kID09IFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpTa2lwRm9yd2FyZENvbW1hbmQKKyAgICAgICAgfHwgY29tbWFuZCA9PSBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEJhY2t3YXJkQ29tbWFuZAorICAgICAgICB8fCBjb21tYW5k
ID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpCZWdpblNlZWtpbmdGb3J3YXJkQ29tbWFuZAorICAg
ICAgICB8fCBjb21tYW5kID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpCZWdpblNlZWtpbmdCYWNr
d2FyZENvbW1hbmQ7Cit9CisKIHZvaWQgUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjOjp1cGRhdGVT
dXBwb3J0ZWRDb21tYW5kcygpCiB7CiAgICAgaWYgKCFpc01lZGlhUmVtb3RlRnJhbWV3b3JrQXZh
aWxhYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHN0YXRpYyBjb25zdCBNUk1lZGlhUmVt
b3RlQ29tbWFuZCBzdXBwb3J0ZWRDb21tYW5kc1tdID0gewotICAgICAgICBNUk1lZGlhUmVtb3Rl
Q29tbWFuZFBsYXksCi0gICAgICAgIE1STWVkaWFSZW1vdGVDb21tYW5kUGF1c2UsCi0gICAgICAg
IE1STWVkaWFSZW1vdGVDb21tYW5kVG9nZ2xlUGxheVBhdXNlLAotICAgICAgICBNUk1lZGlhUmVt
b3RlQ29tbWFuZEJlZ2luRmFzdEZvcndhcmQsCi0gICAgICAgIE1STWVkaWFSZW1vdGVDb21tYW5k
RW5kRmFzdEZvcndhcmQsCi0gICAgICAgIE1STWVkaWFSZW1vdGVDb21tYW5kQmVnaW5SZXdpbmQs
Ci0gICAgICAgIE1STWVkaWFSZW1vdGVDb21tYW5kRW5kUmV3aW5kLAotICAgICAgICBNUk1lZGlh
UmVtb3RlQ29tbWFuZFNlZWtUb1BsYXliYWNrUG9zaXRpb24sCi0gICAgfTsKKyAgICBhdXRvJiBz
dXBwb3J0ZWRDb21tYW5kcyA9ICFtX3JlZ2lzdGVyZWRDb21tYW5kcy5pc0VtcHR5KCkgPyBtX3Jl
Z2lzdGVyZWRDb21tYW5kcyA6IGRlZmF1bHRDb21tYW5kcygpOworICAgIGlmIChtX3N1cHBvcnRz
U2Vla2luZyA9PSBjbGllbnQoKS5zdXBwb3J0c1NlZWtpbmcoKSAmJiBtX2N1cnJlbnRDb21tYW5k
cyA9PSBzdXBwb3J0ZWRDb21tYW5kcykKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBjb21t
YW5kSW5mb0FycmF5ID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBzdXBwb3J0ZWRDb21tYW5kcy5zaXplKCksICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3Mp
KTsKKyAgICBmb3IgKGF1dG8gcGxhdGZvcm1Db21tYW5kIDogc3VwcG9ydGVkQ29tbWFuZHMpIHsK
KyAgICAgICAgaWYgKGlzU2Vla0NvbW1hbmQocGxhdGZvcm1Db21tYW5kKSAmJiAhY2xpZW50KCku
c3VwcG9ydHNTZWVraW5nKCkpCisgICAgICAgICAgICBjb250aW51ZTsKIAotICAgIGF1dG8gY29t
bWFuZEluZm9BcnJheSA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgc2l6ZW9mKHN1cHBvcnRlZENvbW1hbmRzKSAvIHNpemVvZihNUk1lZGlhUmVtb3Rl
Q29tbWFuZCksICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKKyAgICAgICAgYXV0byBjb21tYW5k
ID0gbWVkaWFSZW1vdGVDb21tYW5kRm9yUGxhdGZvcm1Db21tYW5kKHBsYXRmb3JtQ29tbWFuZCk7
CisgICAgICAgIEFTU0VSVChjb21tYW5kKTsKKyAgICAgICAgaWYgKCFjb21tYW5kKQorICAgICAg
ICAgICAgY29udGludWU7CiAKLSAgICBmb3IgKGF1dG8gY29tbWFuZCA6IHN1cHBvcnRlZENvbW1h
bmRzKSB7CiAgICAgICAgIGF1dG8gY29tbWFuZEluZm8gPSBhZG9wdENGKE1STWVkaWFSZW1vdGVD
b21tYW5kSW5mb0NyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0KSk7Ci0gICAgICAgIE1STWVkaWFS
ZW1vdGVDb21tYW5kSW5mb1NldENvbW1hbmQoY29tbWFuZEluZm8uZ2V0KCksIGNvbW1hbmQpOwor
ICAgICAgICBNUk1lZGlhUmVtb3RlQ29tbWFuZEluZm9TZXRDb21tYW5kKGNvbW1hbmRJbmZvLmdl
dCgpLCBjb21tYW5kLnZhbHVlKCkpOwogICAgICAgICBNUk1lZGlhUmVtb3RlQ29tbWFuZEluZm9T
ZXRFbmFibGVkKGNvbW1hbmRJbmZvLmdldCgpLCB0cnVlKTsKICAgICAgICAgQ0ZBcnJheUFwcGVu
ZFZhbHVlKGNvbW1hbmRJbmZvQXJyYXkuZ2V0KCksIGNvbW1hbmRJbmZvLmdldCgpKTsKICAgICB9
CiAKLSAgICBhdXRvIHNlZWtDb21tYW5kSW5mbyA9IGFkb3B0Q0YoTVJNZWRpYVJlbW90ZUNvbW1h
bmRJbmZvQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQpKTsKLSAgICBNUk1lZGlhUmVtb3RlQ29t
bWFuZEluZm9TZXRDb21tYW5kKHNlZWtDb21tYW5kSW5mby5nZXQoKSwgTVJNZWRpYVJlbW90ZUNv
bW1hbmRTZWVrVG9QbGF5YmFja1Bvc2l0aW9uKTsKLSAgICBNUk1lZGlhUmVtb3RlQ29tbWFuZElu
Zm9TZXRFbmFibGVkKHNlZWtDb21tYW5kSW5mby5nZXQoKSwgY2xpZW50KCkuc3VwcG9ydHNTZWVr
aW5nKCkpOwotICAgIENGQXJyYXlBcHBlbmRWYWx1ZShjb21tYW5kSW5mb0FycmF5LmdldCgpLCBz
ZWVrQ29tbWFuZEluZm8uZ2V0KCkpOwotCiAgICAgTVJNZWRpYVJlbW90ZVNldFN1cHBvcnRlZENv
bW1hbmRzKGNvbW1hbmRJbmZvQXJyYXkuZ2V0KCksIE1STWVkaWFSZW1vdGVHZXRMb2NhbE9yaWdp
bigpLCBudWxscHRyLCBudWxscHRyKTsKKyAgICBtX2N1cnJlbnRDb21tYW5kcyA9IHN1cHBvcnRl
ZENvbW1hbmRzOworICAgIG1fc3VwcG9ydHNTZWVraW5nID0gY2xpZW50KCkuc3VwcG9ydHNTZWVr
aW5nKCk7CiB9CiAKIFJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYzo6UmVtb3RlQ29tbWFuZExpc3Rl
bmVyTWFjKFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCYgY2xpZW50KQpAQCAtNzksNyArMTM5
LDcgQEAgUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjOjpSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMo
UmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50JgogICAgIGlmICghaXNNZWRpYVJlbW90ZUZyYW1l
d29ya0F2YWlsYWJsZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICB1cGRhdGVTdXBwb3J0ZWRD
b21tYW5kcygpOworICAgIHNjaGVkdWxlU3VwcG9ydGVkQ29tbWFuZHNVcGRhdGUoKTsKIAogICAg
IGF1dG8gd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyk7CiAgICAgbV9jb21tYW5kSGFuZGxl
ciA9IE1STWVkaWFSZW1vdGVBZGRBc3luY0NvbW1hbmRIYW5kbGVyQmxvY2soXihNUk1lZGlhUmVt
b3RlQ29tbWFuZCBjb21tYW5kLCBDRkRpY3Rpb25hcnlSZWYgb3B0aW9ucywgdm9pZCheY29tcGxl
dGlvbikoQ0ZBcnJheVJlZikpIHsKQEAgLTg4LDYgKzE0OCw3IEBAIFJlbW90ZUNvbW1hbmRMaXN0
ZW5lck1hYzo6UmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjKFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNs
aWVudCYKIAogICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1h
bmRUeXBlIHBsYXRmb3JtQ29tbWFuZCB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb0NvbW1hbmQg
fTsKICAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbW1hbmRBcmd1bWVudCBh
cmd1bWVudCB7IDAgfTsKKyAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbW1h
bmRBcmd1bWVudCogYXJndW1lbnRQdHIgPSBudWxscHRyOwogICAgICAgICBNUk1lZGlhUmVtb3Rl
Q29tbWFuZEhhbmRsZXJTdGF0dXMgc3RhdHVzID0gTVJNZWRpYVJlbW90ZUNvbW1hbmRIYW5kbGVy
U3RhdHVzU3VjY2VzczsKIAogICAgICAgICBzd2l0Y2ggKGNvbW1hbmQpIHsKQEAgLTEyOCwxNiAr
MTg5LDM3IEBAIFJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYzo6UmVtb3RlQ29tbWFuZExpc3RlbmVy
TWFjKFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCYKICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgQ0ZOdW1iZXJHZXRWYWx1ZShwb3NpdGlvblJlZiwga0NGTnVtYmVyRG91YmxlVHlwZSwg
JmFyZ3VtZW50LmFzRG91YmxlKTsKKyAgICAgICAgICAgIGFyZ3VtZW50UHRyID0gJmFyZ3VtZW50
OwogICAgICAgICAgICAgcGxhdGZvcm1Db21tYW5kID0gUGxhdGZvcm1NZWRpYVNlc3Npb246OlNl
ZWtUb1BsYXliYWNrUG9zaXRpb25Db21tYW5kOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KKyAgICAgICAgY2FzZSBNUk1lZGlhUmVtb3RlQ29tbWFuZFNraXBGb3J3YXJkOgorICAgICAg
ICBjYXNlIE1STWVkaWFSZW1vdGVDb21tYW5kU2tpcEJhY2t3YXJkOgorICAgICAgICAgICAgaWYg
KCFjbGllbnQuc3VwcG9ydHNTZWVraW5nKCkpIHsKKyAgICAgICAgICAgICAgICBzdGF0dXMgPSBN
Uk1lZGlhUmVtb3RlQ29tbWFuZEhhbmRsZXJTdGF0dXNDb21tYW5kRmFpbGVkOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoYXV0byBwb3Np
dGlvblJlZiA9IHN0YXRpY19jYXN0PENGTnVtYmVyUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShv
cHRpb25zLCBrTVJNZWRpYVJlbW90ZU9wdGlvblNraXBJbnRlcnZhbCkpKSB7CisgICAgICAgICAg
ICAgICAgQ0ZOdW1iZXJHZXRWYWx1ZShwb3NpdGlvblJlZiwga0NGTnVtYmVyRG91YmxlVHlwZSwg
JmFyZ3VtZW50LmFzRG91YmxlKTsKKyAgICAgICAgICAgICAgICBhcmd1bWVudFB0ciA9ICZhcmd1
bWVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcGxhdGZvcm1Db21tYW5kID0gKGNv
bW1hbmQgPT0gTVJNZWRpYVJlbW90ZUNvbW1hbmRTa2lwRm9yd2FyZCkgPyBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6U2tpcEZvcndhcmRDb21tYW5kIDogUGxhdGZvcm1NZWRpYVNlc3Npb246OlNraXBC
YWNrd2FyZENvbW1hbmQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNUk1lZGlh
UmVtb3RlQ29tbWFuZE5leHRUcmFjazoKKyAgICAgICAgICAgIHBsYXRmb3JtQ29tbWFuZCA9IFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpOZXh0VHJhY2tDb21tYW5kOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgTVJNZWRpYVJlbW90ZUNvbW1hbmRQcmV2aW91c1RyYWNrOgorICAgICAg
ICAgICAgcGxhdGZvcm1Db21tYW5kID0gUGxhdGZvcm1NZWRpYVNlc3Npb246OlByZXZpb3VzVHJh
Y2tDb21tYW5kOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICBMT0coTWVkaWEsICJSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWM6OlJlbW90ZUNvbW1hbmRM
aXN0ZW5lck1hYyAtIGNvbW1hbmQgJXUgbm90IHN1cHBvcnRlZCEiLCBjb21tYW5kKTsKICAgICAg
ICAgICAgIHN0YXR1cyA9IE1STWVkaWFSZW1vdGVDb21tYW5kSGFuZGxlclN0YXR1c0NvbW1hbmRG
YWlsZWQ7CiAgICAgICAgIH07CiAKICAgICAgICAgaWYgKHdlYWtUaGlzICYmIHN0YXR1cyAhPSBN
Uk1lZGlhUmVtb3RlQ29tbWFuZEhhbmRsZXJTdGF0dXNDb21tYW5kRmFpbGVkKQotICAgICAgICAg
ICAgd2Vha1RoaXMtPm1fY2xpZW50LmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChwbGF0
Zm9ybUNvbW1hbmQsICZhcmd1bWVudCk7CisgICAgICAgICAgICB3ZWFrVGhpcy0+bV9jbGllbnQu
ZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKHBsYXRmb3JtQ29tbWFuZCwgYXJndW1lbnRQ
dHIpOwogCiAgICAgICAgIGNvbXBsZXRpb24oKF9fYnJpZGdlIENGQXJyYXlSZWYpQFtAKHN0YXR1
cyldKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1ByZWZlcmVuY2VzLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLUHJlZmVyZW5jZXMubW0KaW5kZXggNjJkY2IzMDZhODk5Y2E4YmE0Mjg0OTJmOTM3NjEwZjY4
YTlmZTQ1My4uMGM3OWJmZmVkNWJlZGM3NzlhMmM5ODEyM2YyOGU3MjM2NjA1NGMzYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0K
QEAgLTE0NzksNiArMTQ3OSwxNiBAQCBzdGF0aWMgV2ViQ29yZTo6RWRpdGFibGVMaW5rQmVoYXZp
b3IgdG9FZGl0YWJsZUxpbmtCZWhhdmlvcihfV0tFZGl0YWJsZUxpbmtCZWhhdgogICAgIF9wcmVm
ZXJlbmNlcy0+c2V0UGl0Y2hDb3JyZWN0aW9uQWxnb3JpdGhtKHBpdGNoQ29ycmVjdGlvbkFsZ29y
aXRobSk7CiB9CiAKKy0gKEJPT0wpX21lZGlhU2Vzc2lvbkVuYWJsZWQKK3sKKyAgICByZXR1cm4g
X3ByZWZlcmVuY2VzLT5tZWRpYVNlc3Npb25FbmFibGVkKCk7Cit9CisKKy0gKHZvaWQpX3NldE1l
ZGlhU2Vzc2lvbkVuYWJsZWQ6KEJPT0wpbWVkaWFTZXNzaW9uRW5hYmxlZAoreworICAgIF9wcmVm
ZXJlbmNlcy0+c2V0TWVkaWFTZXNzaW9uRW5hYmxlZChtZWRpYVNlc3Npb25FbmFibGVkKTsKK30K
KwogQGVuZAogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLUHJlZmVyZW5jZXNQcml2YXRlLmgKaW5kZXggZjA2OTFmZDU3NTA0ZjNjYTgxMWU3NGIw
ZDBhMzllM2Q3OGE4ZDQxMS4uNzY2Njk2MDA4ZmUyYmI0YWQzZmY2MjEzZDI1YjM3YmZmZWRjMmJk
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVy
ZW5jZXNQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
UHJlZmVyZW5jZXNQcml2YXRlLmgKQEAgLTE3MCw2ICsxNzAsNyBAQCB0eXBlZGVmIE5TX0VOVU0o
TlNJbnRlZ2VyLCBfV0tQaXRjaENvcnJlY3Rpb25BbGdvcml0aG0pIHsKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCBzZXR0ZXI9X3NldFNwZWVjaFJlY29nbml0aW9uRW5hYmxlZDopIEJPT0wgX3NwZWVj
aFJlY29nbml0aW9uRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRFbmFibGVkOikgQk9PTCBfcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRF
bmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJB
KSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRQaXRjaENvcnJlY3Rpb25BbGdv
cml0aG06KSBfV0tQaXRjaENvcnJlY3Rpb25BbGdvcml0aG0gX3BpdGNoQ29ycmVjdGlvbkFsZ29y
aXRobSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkp
OworQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0TWVkaWFTZXNzaW9uRW5hYmxlZDop
IEJPT0wgX21lZGlhU2Vzc2lvbkVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNf
VEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogI2lmICFUQVJHRVRfT1NfSVBIT05FCiBAcHJvcGVy
dHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRXZWJHTEVuYWJsZWQ6KSBCT09MIF93ZWJHTEVuYWJs
ZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7CmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDVhZTMxZmJlY2ExYzdiOTM3OWU0ZmNl
YzM3NmVjNGI4MTk1NWFkNC4uMmZiMDQxMTJjZGMzYTg4OGQwYmJjMjBiMTg1ZWM2NDExMGUyYTgx
NCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDMzIEBACisyMDIxLTAyLTA0ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBw
bGUuY29tPgorCisgICAgICAgIFtNYWNdIENvbm5lY3QgTWVkaWFTZXNzaW9uIHdpdGggTWVkaWFS
ZW1vdGUgYW5kIE5vd1BsYXlpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyMTQzMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzQwMDAzNjM+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL01lZGlhU2Vzc2lvbi5tbTogQWRkZWQu
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25UZXN0Ojp3ZWJWaWV3KToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvblRlc3Q6OndlYlZpZXdQaWQpOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uVGVzdDo6Z2V0Tm93UGxheWluZ0NsaWVu
dCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25UZXN0OjpnZXROb3dQbGF5
aW5nQ2xpZW50UGlkKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvblRlc3Q6
OmxvYWRQYWdlQW5kQmVjb21lTm93UGxheWluZyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpN
ZWRpYVNlc3Npb25UZXN0OjpydW5TY3JpcHRXaXRoVXNlckdlc3R1cmUpOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uVGVzdDo6cGxheSk6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpNZWRpYVNlc3Npb25UZXN0OjpwYXVzZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpN
ZWRpYVNlc3Npb25UZXN0OjpzZW5kTWVkaWFSZW1vdGVDb21tYW5kKToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvblRlc3Q6OnNlbmRNZWRpYVJlbW90ZVNlZWtDb21tYW5kKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvblRlc3Q6Omxpc3RlbkZvckV2ZW50
TWVzc2FnZXMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uVGVzdDo6ZXZl
bnRMaXN0ZW5lcldhc0NhbGxlZCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Np
b25UZXN0Ojp3YWl0Rm9yRXZlbnRMaXN0ZW5lclRvQmVDYWxsZWQpOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6TWVkaWFTZXNzaW9uVGVzdDo6bGlzdGVuRm9yU2Vzc2lvbkhhbmRsZXJNZXNzYWdl
cyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25UZXN0OjpzZXNzaW9uSGFu
ZGxlcldhc0NhbGxlZCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25UZXN0
Ojp3YWl0Rm9yU2Vzc2lvbkhhbmRsZXJUb0JlQ2FsbGVkKToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6Ok1lZGlhU2Vzc2lvblRlc3Q6OmdldFN1cHBvcnRlZENvbW1hbmRzKToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9tZWRpYS1yZW1vdGUuaHRtbDogQWRkZWQuCisKIDIwMjEtMDItMDQgIEpvbmF0aGFu
IEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFtQeXRob24tM10gQ2hhbmdl
IHNoZWJhbmcgaW4gdGVzdC13ZWJraXRweSAoUGFydC0xKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA1YzU5N2E3MWQyZWIzODc4NjA3ZGUyYWZmM2JkMmM4MTczNjgzMzZiLi4wYjQ4ZTdlYWU1
YTJiZjg2YmQ2MWJkMGQ5MmIxYWVkZWM3MjMxOThkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtNTYsNiArNTYsOCBAQAogCQkwNzQ5OTQ1MjFFQTUwMzRCMDAwREE0NEUgLyogZ2V0VXNlck1l
ZGlhMi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxQkFGNEUyMjVBQzlEQjgwMEQ4MkYzMiAvKiBnZXRVc2VyTWVkaWEyLmh0bWwgKi87
IH07CiAJCTA3NkU1MDdGMUY0NTEzRDYwMDZFOUY1QSAvKiBMb2dnaW5nLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NkU1MDdFMUY0NTAzMUUwMDZF
OUY1QSAvKiBMb2dnaW5nLmNwcCAqLzsgfTsKIAkJMDc3QTVBRjMyMzA2MzhBNjAwQTcxMDVDIC8q
IEFjY2Vzc2liaWxpdHlUZXN0UGx1Z2luLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDc0NjY0NTgyMkZGNjMwNTAwRTM0NTFBIC8qIEFjY2Vzc2liaWxp
dHlUZXN0UGx1Z2luLm1tICovOyB9OworCQkwNzk0NzQwRDI1Q0EwQkRFMDBDNTk3RUIgLyogTWVk
aWFTZXNzaW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDc5NDc0MEMyNUNBMEJERTAwQzU5N0VCIC8qIE1lZGlhU2Vzc2lvbi5tbSAqLzsgfTsKKwkJ
MDc5NDc0MkQyNUNCMzNGRDAwQzU5N0VCIC8qIG1lZGlhLXJlbW90ZS5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3OTQ3NDJDMjVDQjMz
QjAwMEM1OTdFQiAvKiBtZWRpYS1yZW1vdGUuaHRtbCAqLzsgfTsKIAkJMDc5OUMzNDkxRUJBMkQ3
QjAwM0I3NTMyIC8qIFVzZXJNZWRpYURpc2FibGVkLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdFREVGQUMxRUI5NDAwQzAwRDQzMjkyIC8qIFVzZXJN
ZWRpYURpc2FibGVkLm1tICovOyB9OwogCQkwNzk5QzM0QjFFQkEzMzAxMDAzQjc1MzIgLyogZGlz
YWJsZUdldFVzZXJNZWRpYS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3OTlDMzRBMUVCQTMyRjQwMDNCNzUzMiAvKiBkaXNhYmxlR2V0
VXNlck1lZGlhLmh0bWwgKi87IH07CiAJCTA3QzA0NkNBMUU0MjYyQTgwMDcyMDFFNyAvKiBDQVJp
bmdCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDdDMDQ2QzkxRTQyNTczRTAwNzIwMUU3IC8qIENBUmluZ0J1ZmZlci5jcHAgKi87IH07CkBA
IC0xNTU5LDYgKzE1NjEsNyBAQAogCQkJCUFENTdBQzIyMURBNzQ2NkUwMEZGMUJERSAvKiBtYW55
LWlmcmFtZXMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk3NzcyRUNFMTIyRkUwNkM2
MDAwOUE3OTkgLyogbWFueS1zYW1lLW9yaWdpbi1pZnJhbWVzLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCiAJCQkJQ0Q4Mzk0REYyMzJBRjdDMDAwMTQ5NDk1IC8qIG1lZGlhLWxvYWRpbmcuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJCQkwNzk0NzQyRDI1Q0IzM0ZEMDBDNTk3RUIgLyog
bWVkaWEtcmVtb3RlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJQ0RBMzE1OUExRUQ1
NDhGMTAwOUY2MEQzIC8qIE1lZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvbi5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovLAogCQkJCUNEQzk0NDJGMUVGMjA1RDYwMDU5QzNDNCAvKiBtZWRpYXN0cmVh
bXRyYWNrLWRldGFjaGVkLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJRTEyMjBEQ0Ex
NTVCMjhBQTAwMTNFMkZDIC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERl
bGVnYXRlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC0xNzIyLDYgKzE3MjUsOCBAQAog
CQkwNzQ5MkIzQTFERjhBRTJEMDA2MzNERTEgLyogRW51bWVyYXRlTWVkaWFEZXZpY2VzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVudW1lcmF0ZU1lZGlhRGV2aWNl
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NjZERDFGMUE1QUQ1MjAwMDIz
RTNCQiAvKiBQZW5kaW5nQVBJUmVxdWVzdFVSTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBQZW5kaW5nQVBJUmVxdWVzdFVSTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTA3NkU1MDdFMUY0NTAzMUUwMDZFOUY1QSAvKiBMb2dnaW5nLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvZ2dpbmcuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwNzk0NzQwQzI1Q0EwQkRFMDBDNTk3RUIgLyogTWVkaWFTZXNz
aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVkaWFTZXNz
aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzk0NzQyQzI1Q0IzM0IwMDBD
NTk3RUIgLyogbWVkaWEtcmVtb3RlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAi
bWVkaWEtcmVtb3RlLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzk5QzM0
QTFFQkEzMkY0MDAzQjc1MzIgLyogZGlzYWJsZUdldFVzZXJNZWRpYS5odG1sICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5odG1sOyBwYXRoID0gZGlzYWJsZUdldFVzZXJNZWRpYS5odG1sOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwN0MwNDZDOTFFNDI1NzNFMDA3MjAxRTcgLyogQ0FSaW5nQnVmZmVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENBUmluZ0J1ZmZlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3Q0M3REZEMjI2NjMzMDgwMEUzOTE4
MSAvKiBNZWRpYUJ1ZmZlcmluZ1BvbGljeS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IE1lZGlhQnVmZmVyaW5nUG9saWN5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMzM1OSw2ICszMzY0LDcgQEAKIAkJCQk5NUI2QjNCNjI1MUVCRjJGMDBGQzQz
ODIgLyogTWVkaWFEb2N1bWVudC5tbSAqLywKIAkJCQlDRDAzNzBFMjI0QTQ0QjdBMDBCQTNDQUUg
LyogTWVkaWFMb2FkaW5nLm1tICovLAogCQkJCTA3RUY3NkQ0MjU0MEZDMDYwMDUzRUQ1MyAvKiBN
ZWRpYU11dGVkU3RhdGUubW0gKi8sCisJCQkJMDc5NDc0MEMyNUNBMEJERTAwQzU5N0VCIC8qIE1l
ZGlhU2Vzc2lvbi5tbSAqLywKIAkJCQk1MUJFOUU2NTIzNzYwODk1MDBCNEUxMTcgLyogTWVkaWFU
eXBlLm1tICovLAogCQkJCTUxNjVGRTAzMjAxRUU2MTcwMDlGN0VDMyAvKiBNZXNzYWdlUG9ydFBy
b3ZpZGVycy5tbSAqLywKIAkJCQk1MUNEMUM2QTFCMzhDRTM2MDAxNDJDQTUgLyogTW9kYWxBbGVy
dHMubW0gKi8sCkBAIC0zOTIyLDYgKzM5MjgsNyBAQAogCQkJCTQ2QzUxOUUzMUQzNTYyOTYwMERB
QTUxQSAvKiBMb2NhbFN0b3JhZ2VOdWxsRW50cmllcy5sb2NhbHN0b3JhZ2UgKi8sCiAJCQkJNDZD
NTE5RTQxRDM1NjI5NjAwREFBNTFBIC8qIExvY2FsU3RvcmFnZU51bGxFbnRyaWVzLmxvY2Fsc3Rv
cmFnZS1zaG0gKi8sCiAJCQkJN0E2QTJDNzExRENDRkIwMjAwQzBEMDg1IC8qIExvY2FsU3RvcmFn
ZVF1aXJrRW5hYmxlZC5odG1sICovLAorCQkJCTA3OTQ3NDJDMjVDQjMzQjAwMEM1OTdFQiAvKiBt
ZWRpYS1yZW1vdGUuaHRtbCAqLywKIAkJCQk5QjU5RjEyOTIwMzQwODU0MDA5RTYzRDUgLyogbXNv
LWxpc3QtY29tcGF0LW1vZGUuaHRtbCAqLywKIAkJCQk5QkNENDExOTIwNkQ1RUQ3MDAxRDcxQkUg
LyogbXNvLWxpc3Qtb24taDQuaHRtbCAqLywKIAkJCQk5QkYzNTZDQzIwMkQ0NEYyMDBGNzExNjAg
LyogbXNvLWxpc3QuaHRtbCAqLywKQEAgLTUzODMsNiArNTM5MCw3IEBACiAJCQkJQ0QwMzcwRTMy
NEE0NEQ5NjAwQkEzQ0FFIC8qIE1lZGlhTG9hZGluZy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3
RUY3NkQ1MjU0MEZDMDYwMDUzRUQ1MyAvKiBNZWRpYU11dGVkU3RhdGUubW0gaW4gU291cmNlcyAq
LywKIAkJCQlDREEzMTU5ODFFRDUzNjUxMDA5RjYwRDMgLyogTWVkaWFQbGF5YmFja1NsZWVwQXNz
ZXJ0aW9uLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMDc5NDc0MEQyNUNBMEJERTAwQzU5N0VCIC8q
IE1lZGlhU2Vzc2lvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQzk0NDJFMUVGMUZDMDgwMDU5
QzNDNCAvKiBNZWRpYVN0cmVhbVRyYWNrRGV0YWNoZWQubW0gaW4gU291cmNlcyAqLywKIAkJCQk1
MUJFOUU2NjIzNzYwODlGMDBCNEUxMTcgLyogTWVkaWFUeXBlLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0NDRTdFQzUxQTQxMUE3RTAwNDQ3QzRDIC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJl
c291cmNlTG9hZERlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCkBAIC01NDIxLDYgKzU0MjksNyBA
QAogCQkJCUMxMDRCQzFGMjU0NzIzNzEwMEMwNzhDOSAvKiBPdmVycmlkZUFwcGxlTGFuZ3VhZ2Vz
UHJlZmVyZW5jZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNFQkNBMTJGMUUzQTY2MDEwMEM3MzI5
MyAvKiBPdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTJEQTI1ODZGMjI1QzY3REMwMEI0NUMxQyAvKiBPdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzLm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJOTUzQUJCMzUyNUMwRDY4MjAwNEM4QjczIC8qIFBhZ2VFeHRl
bmRlZEJhY2tncm91bmRDb2xvci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0I0REE5MUM4M0FF
NzMwMENDNjkxOCAvKiBQYWdlR3JvdXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMDcx
QTQxMUFFNjAwNDQ3QzRDIC8qIFBhZ2VMb2FkQmFzaWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0NDRTdGMDgxQTQxMUFFNjAwNDQ3QzRDIC8qIFBhZ2VMb2FkRGlkQ2hhbmdlTG9jYXRpb25XaXRo
aW5QYWdlRm9yRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC01NDY0LDcgKzU0NzMsNiBAQAog
CQkJCTUxOEMxMTUzMjA1QjA1MDQwMDFGRjRBRSAvKiBQcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5t
bSBpbiBTb3VyY2VzICovLAogCQkJCUZFQzJBODU2MjRDRUI2NUYwMEFEQkMzNSAvKiBQcm9wZXJ0
eVNsb3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwQzExRDBBNjUyRjAwRkVCQ0YzIC8q
IFByb3Zpc2lvbmFsVVJMTm90Q2hhbmdlLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJOTUzQUJCMzUy
NUMwRDY4MjAwNEM4QjczIC8qIFBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvci5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTVDRkFDRjY1MjI2RkQyREMwMDU2QzdEMCAvKiBQcm94eS5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTA0MUExRTM0MjE2RkZEQkMwMDc4OUUwQSAvKiBQdWJsaWNTdWZmaXguY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwQzIxRDBBNjUzNTAwRkVCQ0YzIC8qIFF1aWNrTG9v
ay5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9NZWRpYVNlc3Npb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL01lZGlhU2Vzc2lvbi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MmRkZDBkOTE1NmIxNDI5
M2EwOTEyZTlhOWFjMmQxODhlYjgzNzZmCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9NZWRpYVNlc3Npb24ubW0KQEAgLTAsMCArMSwzNzIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2lmIFBMQVRGT1JNKE1BQykg
JiYgRU5BQkxFKE1FRElBX1NFU1NJT04pCisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgi
CisjaW1wb3J0ICJUZXN0LmgiCisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0IDxX
ZWJLaXQvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdD
b25maWd1cmF0aW9uUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUu
aD4KKyNpbXBvcnQgPFdlYktpdC9XZWJWaWV3UHJpdmF0ZS5oPgorI2ltcG9ydCA8cGFsL3NwaS9t
YWMvTWVkaWFSZW1vdGVTUEkuaD4KKyNpbXBvcnQgPHd0Zi9GdW5jdGlvbi5oPgorI2ltcG9ydCA8
d3RmL0hhc2hTZXQuaD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8
d3RmL1NvZnRMaW5raW5nLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW1w
b3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JL
KE1lZGlhUmVtb3RlKQorCitTT0ZUX0xJTksoTWVkaWFSZW1vdGUsIE1STWVkaWFSZW1vdGVTZW5k
Q29tbWFuZFRvQXBwLCBCb29sZWFuLCAoTVJNZWRpYVJlbW90ZUNvbW1hbmQgY29tbWFuZCwgQ0ZE
aWN0aW9uYXJ5UmVmIG9wdGlvbnMsIE1ST3JpZ2luUmVmIG9yaWdpbiwgQ0ZTdHJpbmdSZWYgYXBw
RGlzcGxheUlELCBNUlNlbmRDb21tYW5kQXBwT3B0aW9ucyBhcHBPcHRpb25zLCBkaXNwYXRjaF9x
dWV1ZV90IHJlcGx5USwgdm9pZCheY29tcGxldGlvbikoTVJTZW5kQ29tbWFuZEVycm9yIGVyciwg
Q0ZBcnJheVJlZiBoYW5kbGVyUmV0dXJuU3RhdHVzZXMpKSwgKGNvbW1hbmQsIG9wdGlvbnMsIG9y
aWdpbiwgYXBwRGlzcGxheUlELCBhcHBPcHRpb25zLCByZXBseVEsIGNvbXBsZXRpb24pKTsKKyNk
ZWZpbmUgTVJNZWRpYVJlbW90ZVNlbmRDb21tYW5kVG9BcHAgc29mdExpbmtNUk1lZGlhUmVtb3Rl
U2VuZENvbW1hbmRUb0FwcAorCitTT0ZUX0xJTksoTWVkaWFSZW1vdGUsIE1STWVkaWFSZW1vdGVH
ZXRMb2NhbE9yaWdpbiwgTVJPcmlnaW5SZWYsICgpLCAoKSk7CisjZGVmaW5lIE1STWVkaWFSZW1v
dGVHZXRMb2NhbE9yaWdpbiBzb2Z0TGlua01STWVkaWFSZW1vdGVHZXRMb2NhbE9yaWdpbgorCitT
T0ZUX0xJTksoTWVkaWFSZW1vdGUsIE1STWVkaWFSZW1vdGVHZXRTdXBwb3J0ZWRDb21tYW5kc0Zv
ck9yaWdpbiwgdm9pZCwgKE1ST3JpZ2luUmVmIG9yaWdpbiwgZGlzcGF0Y2hfcXVldWVfdCBxdWV1
ZSwgdm9pZCheY29tcGxldGlvbikoQ0ZBcnJheVJlZiBjb21tYW5kcykpLCAob3JpZ2luLCBxdWV1
ZSwgY29tcGxldGlvbikpOworI2RlZmluZSBNUk1lZGlhUmVtb3RlR2V0U3VwcG9ydGVkQ29tbWFu
ZHNGb3JPcmlnaW4gc29mdExpbmtNUk1lZGlhUmVtb3RlR2V0U3VwcG9ydGVkQ29tbWFuZHNGb3JP
cmlnaW4KKworU09GVF9MSU5LKE1lZGlhUmVtb3RlLCBNUk1lZGlhUmVtb3RlR2V0Tm93UGxheWlu
Z0NsaWVudCwgdm9pZCwgKGRpc3BhdGNoX3F1ZXVlX3QgcXVldWUsIHZvaWQoXmNvbXBsZXRpb24p
KE1STm93UGxheWluZ0NsaWVudFJlZiwgQ0ZFcnJvclJlZikpLCAocXVldWUsIGNvbXBsZXRpb24p
KQorI2RlZmluZSBNUk1lZGlhUmVtb3RlR2V0Tm93UGxheWluZ0NsaWVudCBzb2Z0TGlua01STWVk
aWFSZW1vdGVHZXROb3dQbGF5aW5nQ2xpZW50CisKK1NPRlRfTElOSyhNZWRpYVJlbW90ZSwgTVJO
b3dQbGF5aW5nQ2xpZW50R2V0UHJvY2Vzc0lkZW50aWZpZXIsIHBpZF90LCAoTVJOb3dQbGF5aW5n
Q2xpZW50UmVmIGNsaWVudCksIChjbGllbnQpKQorI2RlZmluZSBNUk5vd1BsYXlpbmdDbGllbnRH
ZXRQcm9jZXNzSWRlbnRpZmllciBzb2Z0TGlua01STm93UGxheWluZ0NsaWVudEdldFByb2Nlc3NJ
ZGVudGlmaWVyCisKK1NPRlRfTElOS19DT05TVEFOVChNZWRpYVJlbW90ZSwga01STWVkaWFSZW1v
dGVPcHRpb25Ta2lwSW50ZXJ2YWwsIENGU3RyaW5nUmVmKQorI2RlZmluZSBrTVJNZWRpYVJlbW90
ZU9wdGlvblNraXBJbnRlcnZhbCBnZXRrTVJNZWRpYVJlbW90ZU9wdGlvblNraXBJbnRlcnZhbCgp
CisKK1NPRlRfTElOS19DT05TVEFOVChNZWRpYVJlbW90ZSwga01STWVkaWFSZW1vdGVPcHRpb25Q
bGF5YmFja1Bvc2l0aW9uLCBDRlN0cmluZ1JlZikKKyNkZWZpbmUga01STWVkaWFSZW1vdGVPcHRp
b25QbGF5YmFja1Bvc2l0aW9uIGdldGtNUk1lZGlhUmVtb3RlT3B0aW9uUGxheWJhY2tQb3NpdGlv
bigpCisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworY2xhc3MgTWVkaWFTZXNzaW9uVGVz
dCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK3B1YmxpYzoKKyAgICB2b2lkIFNldFVwKCkgZmlu
YWwKKyAgICB7CisgICAgICAgIF9jb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICAgICAgW19jb25maWd1cmF0aW9uIHNldE1l
ZGlhVHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2s6V0tBdWRpb3Zpc3VhbE1lZGlh
VHlwZUF1ZGlvXTsKKworICAgICAgICBfd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMzAwLCAzMDApIGNvbmZpZ3Vy
YXRpb246X2NvbmZpZ3VyYXRpb24uZ2V0KCkgYWRkVG9XaW5kb3c6WUVTXSk7CisKKyAgICAgICAg
V0tQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMgPSBbX3dlYlZpZXcgY29uZmlndXJhdGlvbl0ucHJl
ZmVyZW5jZXM7CisgICAgICAgIHByZWZlcmVuY2VzLl9tZWRpYVNlc3Npb25FbmFibGVkID0gWUVT
OworCisgICAgICAgIF9tZXNzYWdlSGFuZGxlcnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkg
YWxsb2NdIGluaXRdKTsKKyAgICB9CisKKyAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKKyAg
ICB7CisgICAgICAgIFtfd2ViVmlldyBjbGVhck1lc3NhZ2VIYW5kbGVyczpfbWVzc2FnZUhhbmRs
ZXJzLmdldCgpXTsKKyAgICB9CisKKyAgICBUZXN0V0tXZWJWaWV3KiB3ZWJWaWV3KCkgeyByZXR1
cm4gX3dlYlZpZXcuZ2V0KCk7IH0KKworICAgIHBpZF90IHdlYlZpZXdQaWQoKSB7IHJldHVybiBb
X3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXTsgfQorCisgICAgUmV0YWluUHRyPE1STm93
UGxheWluZ0NsaWVudFJlZj4gZ2V0Tm93UGxheWluZ0NsaWVudCgpCisgICAgeworICAgICAgICBi
b29sIGdvdE5vd1BsYXlpbmcgPSBmYWxzZTsKKyAgICAgICAgUmV0YWluUHRyPE1STm93UGxheWlu
Z0NsaWVudFJlZj4gbm93UGxheWluZ0NsaWVudDsKKyAgICAgICAgTVJNZWRpYVJlbW90ZUdldE5v
d1BsYXlpbmdDbGllbnQoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgWyZdIChNUk5vd1BsYXlp
bmdDbGllbnRSZWYgcGxheWVyLCBDRkVycm9yUmVmIGVycm9yKSB7CisgICAgICAgICAgICBpZiAo
IWVycm9yICYmIHBsYXllcikKKyAgICAgICAgICAgICAgICBub3dQbGF5aW5nQ2xpZW50ID0gcGxh
eWVyOworICAgICAgICAgICAgZ290Tm93UGxheWluZyA9IHRydWU7CisgICAgICAgIH0pOworICAg
ICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdvdE5vd1BsYXlpbmcpOworICAgICAgICBy
ZXR1cm4gbm93UGxheWluZ0NsaWVudDsKKyAgICB9CisKKyAgICBwaWRfdCBnZXROb3dQbGF5aW5n
Q2xpZW50UGlkKCkKKyAgICB7CisgICAgICAgIHJldHVybiBNUk5vd1BsYXlpbmdDbGllbnRHZXRQ
cm9jZXNzSWRlbnRpZmllcihnZXROb3dQbGF5aW5nQ2xpZW50KCkuZ2V0KCkpOworICAgIH0KKwor
ICAgIHZvaWQgbG9hZFBhZ2VBbmRCZWNvbWVOb3dQbGF5aW5nKGNvbnN0IFN0cmluZyYgcGFnZU5h
bWUpCisgICAgeworICAgICAgICBbX3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5h
bWVkOnBhZ2VOYW1lXTsKKworICAgICAgICBib29sIGNhbnBsYXl0aHJvdWdoID0gZmFsc2U7Cisg
ICAgICAgIFt3ZWJWaWV3KCkgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAImNhbnBsYXl0
aHJvdWdoIGV2ZW50IiBhY3Rpb246WyZdIHsKKyAgICAgICAgICAgIGNhbnBsYXl0aHJvdWdoID0g
dHJ1ZTsKKyAgICAgICAgfV07CisgICAgICAgIHJ1blNjcmlwdFdpdGhVc2VyR2VzdHVyZSgibG9h
ZCgpIik7CisgICAgICAgIFV0aWw6OnJ1bigmY2FucGxheXRocm91Z2gpOworCisgICAgICAgIHBs
YXkoKTsKKyAgICAgICAgcGF1c2UoKTsKKyAgICAgICAgQVNTRVJUX0VRKHdlYlZpZXdQaWQoKSwg
Z2V0Tm93UGxheWluZ0NsaWVudFBpZCgpKTsKKyAgICB9CisKKyAgICB2b2lkIHJ1blNjcmlwdFdp
dGhVc2VyR2VzdHVyZShjb25zdCBTdHJpbmcmIHNjcmlwdCkKKyAgICB7CisgICAgICAgIGJvb2wg
Y29tcGxldGUgPSBmYWxzZTsKKyAgICAgICAgW193ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpz
Y3JpcHQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCwgTlNFcnJvciAqKSB7IGNvbXBsZXRlID0g
dHJ1ZTsgfV07CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmY29tcGxldGUpOwor
ICAgIH0KKworICAgIHZvaWQgcGxheSgpCisgICAgeworICAgICAgICBib29sIHBsYXlpbmcgPSBm
YWxzZTsKKyAgICAgICAgW193ZWJWaWV3IHBlcmZvcm1BZnRlclJlY2VpdmluZ01lc3NhZ2U6QCJw
bGF5IGV2ZW50IiBhY3Rpb246WyZdIHsgcGxheWluZyA9IHRydWU7IH1dOworICAgICAgICBydW5T
Y3JpcHRXaXRoVXNlckdlc3R1cmUoImF1ZGlvLnBsYXkoKSIpOworICAgICAgICBVdGlsOjpydW4o
JnBsYXlpbmcpOworICAgIH0KKworICAgIHZvaWQgcGF1c2UoKQorICAgIHsKKyAgICAgICAgYm9v
bCBwYXVzZWQgPSBmYWxzZTsKKyAgICAgICAgW193ZWJWaWV3IHBlcmZvcm1BZnRlclJlY2Vpdmlu
Z01lc3NhZ2U6QCJwYXVzZSBldmVudCIgYWN0aW9uOlsmXSB7IHBhdXNlZCA9IHRydWU7IH1dOwor
ICAgICAgICBydW5TY3JpcHRXaXRoVXNlckdlc3R1cmUoImF1ZGlvLnBhdXNlKCkiKTsKKyAgICAg
ICAgVXRpbDo6cnVuKCZwYXVzZWQpOworICAgIH0KKworICAgIGJvb2wgc2VuZE1lZGlhUmVtb3Rl
Q29tbWFuZChNUk1lZGlhUmVtb3RlQ29tbWFuZCBjb21tYW5kLCBDRkRpY3Rpb25hcnlSZWYgb3B0
aW9ucyA9IG51bGxwdHIpCisgICAgeworICAgICAgICBib29sIGNvbXBsZXRlZCA9IGZhbHNlOwor
ICAgICAgICBib29sIHN1Y2Nlc3M7CisKKyAgICAgICAgTVJNZWRpYVJlbW90ZVNlbmRDb21tYW5k
VG9BcHAoY29tbWFuZCwgb3B0aW9ucywgTlVMTCwgTlVMTCwgc3RhdGljX2Nhc3Q8TVJTZW5kQ29t
bWFuZEFwcE9wdGlvbnM+KDApLCBOVUxMLCBbJl0gKE1SU2VuZENvbW1hbmRFcnJvciBlcnJvciwg
Q0ZBcnJheVJlZikgeworICAgICAgICAgICAgc3VjY2VzcyA9ICFlcnJvcjsKKyAgICAgICAgICAg
IGNvbXBsZXRlZCA9IHRydWU7CisgICAgICAgIH0pOworICAgICAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmNvbXBsZXRlZCk7CisKKyAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7CisgICAgfQor
CisgICAgYm9vbCBzZW5kTWVkaWFSZW1vdGVTZWVrQ29tbWFuZChNUk1lZGlhUmVtb3RlQ29tbWFu
ZCBjb21tYW5kLCBkb3VibGUgaW50ZXJ2YWwpCisgICAgeworICAgICAgICBDRlN0cmluZ1JlZiBz
ZWVrSW50ZXJ2YWwgPSAoY29tbWFuZCA9PSBNUk1lZGlhUmVtb3RlQ29tbWFuZFNlZWtUb1BsYXli
YWNrUG9zaXRpb24pID8ga01STWVkaWFSZW1vdGVPcHRpb25QbGF5YmFja1Bvc2l0aW9uIDoga01S
TWVkaWFSZW1vdGVPcHRpb25Ta2lwSW50ZXJ2YWw7CisgICAgICAgIE5TRGljdGlvbmFyeSAqb3B0
aW9ucyA9IEB7KF9fYnJpZGdlIE5TU3RyaW5nICopc2Vla0ludGVydmFsIDogQChpbnRlcnZhbCl9
OworICAgICAgICByZXR1cm4gc2VuZE1lZGlhUmVtb3RlQ29tbWFuZChjb21tYW5kLCAoX19icmlk
Z2UgQ0ZEaWN0aW9uYXJ5UmVmKW9wdGlvbnMpOworICAgIH0KKworICAgIHZvaWQgbGlzdGVuRm9y
RXZlbnRNZXNzYWdlcyhzdGQ6OmluaXRpYWxpemVyX2xpc3Q8Y29uc3QgY2hhcio+IGV2ZW50cykK
KyAgICB7CisgICAgICAgIGZvciAoYXV0byogZXZlbnQgOiBldmVudHMpIHsKKyAgICAgICAgICAg
IGF1dG8gZXZlbnRNZXNzYWdlID0gbWFrZVN0cmluZyhldmVudCwgIiBldmVudCIpOworICAgICAg
ICAgICAgW19tZXNzYWdlSGFuZGxlcnMgYWRkT2JqZWN0OmV2ZW50TWVzc2FnZV07CisgICAgICAg
ICAgICBbd2ViVmlldygpIHBlcmZvcm1BZnRlclJlY2VpdmluZ01lc3NhZ2U6ZXZlbnRNZXNzYWdl
IGFjdGlvbjpbdGhpcywgZXZlbnRNZXNzYWdlID0gV1RGTW92ZShldmVudE1lc3NhZ2UpXSB7Cisg
ICAgICAgICAgICAgICAgX2V2ZW50TGlzdGVuZXJzQ2FsbGVkLmFkZChldmVudE1lc3NhZ2UpOwor
ICAgICAgICAgICAgfV07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBib29sIGV2ZW50TGlzdGVu
ZXJXYXNDYWxsZWQoY29uc3QgU3RyaW5nJiBldmVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBf
ZXZlbnRMaXN0ZW5lcnNDYWxsZWQuY29udGFpbnMobWFrZVN0cmluZyhldmVudCwgIiBldmVudCIp
KTsKKyAgICB9CisKKyAgICB2b2lkIHdhaXRGb3JFdmVudExpc3RlbmVyVG9CZUNhbGxlZChjb25z
dCBTdHJpbmcmIGV2ZW50KQorICAgIHsKKyAgICAgICAgaW50IHRyaWVzID0gMDsKKyAgICAgICAg
ZG8geworICAgICAgICAgICAgaWYgKGV2ZW50TGlzdGVuZXJXYXNDYWxsZWQoZXZlbnQpKQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIFV0aWw6OnNsZWVwKDAuMSk7CisgICAg
ICAgIH0gd2hpbGUgKCsrdHJpZXMgPD0gNTApOworCisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICB2b2lkIGxpc3RlbkZvclNlc3Npb25IYW5kbGVyTWVzc2FnZXMoc3RkOjppbml0aWFsaXpl
cl9saXN0PGNvbnN0IGNoYXIqPiBoYW5kbGVycykKKyAgICB7CisgICAgICAgIGZvciAoYXV0byog
aGFuZGxlciA6IGhhbmRsZXJzKSB7CisgICAgICAgICAgICBhdXRvIGhhbmRsZXJNZXNzYWdlID0g
bWFrZVN0cmluZyhoYW5kbGVyLCAiIGhhbmRsZXIiKTsKKyAgICAgICAgICAgIFtfbWVzc2FnZUhh
bmRsZXJzIGFkZE9iamVjdDpoYW5kbGVyTWVzc2FnZV07CisgICAgICAgICAgICBbd2ViVmlldygp
IHBlcmZvcm1BZnRlclJlY2VpdmluZ01lc3NhZ2U6aGFuZGxlck1lc3NhZ2UgYWN0aW9uOlt0aGlz
LCBoYW5kbGVyTWVzc2FnZSA9IFdURk1vdmUoaGFuZGxlck1lc3NhZ2UpXSB7CisgICAgICAgICAg
ICAgICAgX21lZGlhU2Vzc2lvbkhhbmRsZXJzQ2FsbGVkLmFkZChoYW5kbGVyTWVzc2FnZSk7Cisg
ICAgICAgICAgICB9XTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGJvb2wgc2Vzc2lvbkhhbmRs
ZXJXYXNDYWxsZWQoY29uc3QgU3RyaW5nJiBoYW5kbGVyKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IF9tZWRpYVNlc3Npb25IYW5kbGVyc0NhbGxlZC5jb250YWlucyhtYWtlU3RyaW5nKGhhbmRsZXIs
ICIgaGFuZGxlciIpKTsKKyAgICB9CisKKyAgICB2b2lkIHdhaXRGb3JTZXNzaW9uSGFuZGxlclRv
QmVDYWxsZWQoY29uc3QgU3RyaW5nJiBoYW5kbGVyKQorICAgIHsKKyAgICAgICAgaW50IHRyaWVz
ID0gMDsKKyAgICAgICAgZG8geworICAgICAgICAgICAgaWYgKHNlc3Npb25IYW5kbGVyV2FzQ2Fs
bGVkKGhhbmRsZXIpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIFV0aWw6
OnNsZWVwKDAuMSk7CisgICAgICAgIH0gd2hpbGUgKCsrdHJpZXMgPD0gNTApOworCisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBSZXRhaW5QdHI8TlNBcnJheT4gZ2V0U3VwcG9ydGVkQ29t
bWFuZHMoKQorICAgIHsKKyAgICAgICAgYm9vbCBjb21wbGV0ZWQgPSBmYWxzZTsKKyAgICAgICAg
UmV0YWluUHRyPE5TQXJyYXk+IHJlc3VsdDsKKworICAgICAgICBNUk1lZGlhUmVtb3RlR2V0U3Vw
cG9ydGVkQ29tbWFuZHNGb3JPcmlnaW4oTVJNZWRpYVJlbW90ZUdldExvY2FsT3JpZ2luKCksIGRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFsmXSAoQ0ZBcnJheVJlZiBjb21tYW5kcykgeworICAg
ICAgICAgICAgcmVzdWx0ID0gKF9fYnJpZGdlIE5TQXJyYXkgKiljb21tYW5kczsKKyAgICAgICAg
ICAgIGNvbXBsZXRlZCA9IHRydWU7CisgICAgICAgIH0pOworCisgICAgICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmY29tcGxldGVkKTsKKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
IH0KKworcHJpdmF0ZToKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gX2Nv
bmZpZ3VyYXRpb247CisgICAgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IF93ZWJWaWV3OworCisg
ICAgSGFzaFNldDxTdHJpbmc+IF9tZWRpYVNlc3Npb25IYW5kbGVyc0NhbGxlZDsKKyAgICBIYXNo
U2V0PFN0cmluZz4gX2V2ZW50TGlzdGVuZXJzQ2FsbGVkOworICAgIFJldGFpblB0cjxOU011dGFi
bGVBcnJheT4gX21lc3NhZ2VIYW5kbGVyczsKK307CisKK1RFU1RfRihNZWRpYVNlc3Npb25UZXN0
LCBPbmx5T25lSGFuZGxlcikKK3sKKyAgICBsb2FkUGFnZUFuZEJlY29tZU5vd1BsYXlpbmcoIm1l
ZGlhLXJlbW90ZSIpOworCisgICAgW3dlYlZpZXcoKSBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2Ny
aXB0OkAic2V0RW1wdHlBY3Rpb25IYW5kbGVycyhbICdwbGF5JyBdKSJdOworCisgICAgbGlzdGVu
Rm9yU2Vzc2lvbkhhbmRsZXJNZXNzYWdlcyh7ICJwbGF5IiwgInBhdXNlIiwgInNlZWt0byIsICJz
ZWVrZm9yd2FyZCIsICJzZWVrYmFja3dhcmQiLCAicHJldmlvdXN0cmFjayIsICJuZXh0dHJhY2si
IH0pOworICAgIGxpc3RlbkZvckV2ZW50TWVzc2FnZXMoeyAicGxheSIsICJwYXVzZSIsICJzZWVr
ZWQiIH0pOworCisgICAgc3RhdGljIFZlY3RvcjxNUk1lZGlhUmVtb3RlQ29tbWFuZD4gcmVnaXN0
ZXJlZENvbW1hbmRzID0geyBNUk1lZGlhUmVtb3RlQ29tbWFuZFBsYXkgfTsKKyAgICBhdXRvIGN1
cnJlbnRDb21tYW5kcyA9IGdldFN1cHBvcnRlZENvbW1hbmRzKCk7CisgICAgZm9yIChNUkNvbW1h
bmRJbmZvICpjb21tYW5kIGluIGN1cnJlbnRDb21tYW5kcy5nZXQoKSkgeworICAgICAgICBpZiAo
IWNvbW1hbmQuZW5hYmxlZCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAKKyAgICAg
ICAgQVNTRVJUX1RSVUUocmVnaXN0ZXJlZENvbW1hbmRzLmNvbnRhaW5zKGNvbW1hbmQuY29tbWFu
ZCkpOworICAgIH0KKworICAgIEFTU0VSVF9UUlVFKHNlbmRNZWRpYVJlbW90ZUNvbW1hbmQoTVJN
ZWRpYVJlbW90ZUNvbW1hbmRQbGF5KSk7CisgICAgd2FpdEZvclNlc3Npb25IYW5kbGVyVG9CZUNh
bGxlZCgicGxheSIpOworICAgIEFTU0VSVF9UUlVFKHNlc3Npb25IYW5kbGVyV2FzQ2FsbGVkKCJw
bGF5IikpOworICAgIEFTU0VSVF9GQUxTRShldmVudExpc3RlbmVyV2FzQ2FsbGVkKCJwbGF5Iikp
OworCisgICAgLy8gVGhlIG1lZGlhIHNlc3Npb24gb25seSByZWdpc3RlcmVkIGZvciBQbGF5LCBi
dXQgbm8gb3RoZXIgY29tbWFuZHMgc2hvdWxkIHJlYWNoIEhUTUxNZWRpYUVsZW1lbnQuCisgICAg
QVNTRVJUX1RSVUUoc2VuZE1lZGlhUmVtb3RlU2Vla0NvbW1hbmQoTVJNZWRpYVJlbW90ZUNvbW1h
bmRTa2lwRm9yd2FyZCwgMSkpOworICAgIEFTU0VSVF9GQUxTRShzZXNzaW9uSGFuZGxlcldhc0Nh
bGxlZCgic2Vla2ZvcndhcmQiKSk7CisgICAgQVNTRVJUX0ZBTFNFKGV2ZW50TGlzdGVuZXJXYXND
YWxsZWQoInNlZWtlZCIpKTsKKworICAgIEFTU0VSVF9UUlVFKHNlbmRNZWRpYVJlbW90ZVNlZWtD
b21tYW5kKE1STWVkaWFSZW1vdGVDb21tYW5kU2tpcEJhY2t3YXJkLCAxMCkpOworICAgIEFTU0VS
VF9GQUxTRShzZXNzaW9uSGFuZGxlcldhc0NhbGxlZCgic2Vla2JhY2t3YXJkIikpOworICAgIEFT
U0VSVF9GQUxTRShldmVudExpc3RlbmVyV2FzQ2FsbGVkKCJzZWVrZWQiKSk7CisKKyAgICBBU1NF
UlRfVFJVRShzZW5kTWVkaWFSZW1vdGVTZWVrQ29tbWFuZChNUk1lZGlhUmVtb3RlQ29tbWFuZFNl
ZWtUb1BsYXliYWNrUG9zaXRpb24sIDYpKTsKKyAgICBBU1NFUlRfRkFMU0Uoc2Vzc2lvbkhhbmRs
ZXJXYXNDYWxsZWQoInNlZWt0byIpKTsKKyAgICBBU1NFUlRfRkFMU0UoZXZlbnRMaXN0ZW5lcldh
c0NhbGxlZCgic2Vla2VkIikpOworCisgICAgQVNTRVJUX1RSVUUoc2VuZE1lZGlhUmVtb3RlQ29t
bWFuZChNUk1lZGlhUmVtb3RlQ29tbWFuZE5leHRUcmFjaykpOworICAgIEFTU0VSVF9GQUxTRShz
ZXNzaW9uSGFuZGxlcldhc0NhbGxlZCgibmV4dHRyYWNrIikpOworCisgICAgQVNTRVJUX1RSVUUo
c2VuZE1lZGlhUmVtb3RlQ29tbWFuZChNUk1lZGlhUmVtb3RlQ29tbWFuZFByZXZpb3VzVHJhY2sp
KTsKKyAgICBBU1NFUlRfRkFMU0Uoc2Vzc2lvbkhhbmRsZXJXYXNDYWxsZWQoInByZXZpb3VzdHJh
Y2siKSk7Cit9CisKK1RFU1RfRihNZWRpYVNlc3Npb25UZXN0LCBSZW1vdGVDb21tYW5kcykKK3sK
KyAgICBsb2FkUGFnZUFuZEJlY29tZU5vd1BsYXlpbmcoIm1lZGlhLXJlbW90ZSIpOworCisgICAg
W3dlYlZpZXcoKSBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAic2V0RW1wdHlBY3Rpb25I
YW5kbGVycyhbICdwbGF5JywgJ3BhdXNlJywgJ3NlZWt0bycsICdzZWVrZm9yd2FyZCcsICdzZWVr
YmFja3dhcmQnLCAncHJldmlvdXN0cmFjaycsICduZXh0dHJhY2snIF0pIl07CisKKyAgICBsaXN0
ZW5Gb3JTZXNzaW9uSGFuZGxlck1lc3NhZ2VzKHsgInBsYXkiLCAicGF1c2UiLCAic2Vla3RvIiwg
InNlZWtmb3J3YXJkIiwgInNlZWtiYWNrd2FyZCIsICJwcmV2aW91c3RyYWNrIiwgIm5leHR0cmFj
ayIgfSk7CisgICAgbGlzdGVuRm9yRXZlbnRNZXNzYWdlcyh7ICJwbGF5IiwgInBhdXNlIiwgInNl
ZWtlZCIgfSk7CisKKyAgICBzdGF0aWMgVmVjdG9yPE1STWVkaWFSZW1vdGVDb21tYW5kPiByZWdp
c3RlcmVkQ29tbWFuZHMgPSB7IE1STWVkaWFSZW1vdGVDb21tYW5kUGxheSwgTVJNZWRpYVJlbW90
ZUNvbW1hbmRQYXVzZSwgTVJNZWRpYVJlbW90ZUNvbW1hbmRTZWVrVG9QbGF5YmFja1Bvc2l0aW9u
LCBNUk1lZGlhUmVtb3RlQ29tbWFuZFNraXBGb3J3YXJkLCBNUk1lZGlhUmVtb3RlQ29tbWFuZFNr
aXBCYWNrd2FyZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRQcmV2aW91c1RyYWNrLCBNUk1lZGlhUmVt
b3RlQ29tbWFuZE5leHRUcmFjayB9OworICAgIGF1dG8gY3VycmVudENvbW1hbmRzID0gZ2V0U3Vw
cG9ydGVkQ29tbWFuZHMoKTsKKyAgICBmb3IgKE1SQ29tbWFuZEluZm8gKmNvbW1hbmQgaW4gY3Vy
cmVudENvbW1hbmRzLmdldCgpKSB7CisgICAgICAgIGlmICghY29tbWFuZC5lbmFibGVkKQorICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICBBU1NFUlRfVFJVRShyZWdpc3Rl
cmVkQ29tbWFuZHMuY29udGFpbnMoY29tbWFuZC5jb21tYW5kKSk7CisgICAgfQorCisgICAgQVNT
RVJUX1RSVUUoc2VuZE1lZGlhUmVtb3RlQ29tbWFuZChNUk1lZGlhUmVtb3RlQ29tbWFuZFBsYXkp
KTsKKyAgICB3YWl0Rm9yU2Vzc2lvbkhhbmRsZXJUb0JlQ2FsbGVkKCJwbGF5Iik7CisgICAgQVNT
RVJUX1RSVUUoc2Vzc2lvbkhhbmRsZXJXYXNDYWxsZWQoInBsYXkiKSk7CisgICAgQVNTRVJUX0ZB
TFNFKGV2ZW50TGlzdGVuZXJXYXNDYWxsZWQoInBsYXkiKSk7CisKKyAgICBBU1NFUlRfVFJVRShz
ZW5kTWVkaWFSZW1vdGVDb21tYW5kKE1STWVkaWFSZW1vdGVDb21tYW5kUGF1c2UpKTsKKyAgICB3
YWl0Rm9yU2Vzc2lvbkhhbmRsZXJUb0JlQ2FsbGVkKCJwYXVzZSIpOworICAgIEFTU0VSVF9UUlVF
KHNlc3Npb25IYW5kbGVyV2FzQ2FsbGVkKCJwYXVzZSIpKTsKKyAgICBBU1NFUlRfRkFMU0UoZXZl
bnRMaXN0ZW5lcldhc0NhbGxlZCgicGF1c2UiKSk7CisKKyAgICBBU1NFUlRfVFJVRShzZW5kTWVk
aWFSZW1vdGVTZWVrQ29tbWFuZChNUk1lZGlhUmVtb3RlQ29tbWFuZFNraXBGb3J3YXJkLCAxKSk7
CisgICAgd2FpdEZvclNlc3Npb25IYW5kbGVyVG9CZUNhbGxlZCgic2Vla2ZvcndhcmQiKTsKKyAg
ICBBU1NFUlRfVFJVRShzZXNzaW9uSGFuZGxlcldhc0NhbGxlZCgic2Vla2ZvcndhcmQiKSk7Cisg
ICAgQVNTRVJUX0ZBTFNFKGV2ZW50TGlzdGVuZXJXYXNDYWxsZWQoInNlZWtlZCIpKTsKKworICAg
IEFTU0VSVF9UUlVFKHNlbmRNZWRpYVJlbW90ZVNlZWtDb21tYW5kKE1STWVkaWFSZW1vdGVDb21t
YW5kU2tpcEJhY2t3YXJkLCAxMCkpOworICAgIHdhaXRGb3JTZXNzaW9uSGFuZGxlclRvQmVDYWxs
ZWQoInNlZWtiYWNrd2FyZCIpOworICAgIEFTU0VSVF9UUlVFKHNlc3Npb25IYW5kbGVyV2FzQ2Fs
bGVkKCJzZWVrYmFja3dhcmQiKSk7CisgICAgQVNTRVJUX0ZBTFNFKGV2ZW50TGlzdGVuZXJXYXND
YWxsZWQoInNlZWtlZCIpKTsKKworICAgIEFTU0VSVF9UUlVFKHNlbmRNZWRpYVJlbW90ZVNlZWtD
b21tYW5kKE1STWVkaWFSZW1vdGVDb21tYW5kU2Vla1RvUGxheWJhY2tQb3NpdGlvbiwgNikpOwor
ICAgIHdhaXRGb3JTZXNzaW9uSGFuZGxlclRvQmVDYWxsZWQoInNlZWt0byIpOworICAgIEFTU0VS
VF9UUlVFKHNlc3Npb25IYW5kbGVyV2FzQ2FsbGVkKCJzZWVrdG8iKSk7CisgICAgQVNTRVJUX0ZB
TFNFKGV2ZW50TGlzdGVuZXJXYXNDYWxsZWQoInNlZWtlZCIpKTsKKworICAgIEFTU0VSVF9UUlVF
KHNlbmRNZWRpYVJlbW90ZUNvbW1hbmQoTVJNZWRpYVJlbW90ZUNvbW1hbmROZXh0VHJhY2spKTsK
KyAgICB3YWl0Rm9yU2Vzc2lvbkhhbmRsZXJUb0JlQ2FsbGVkKCJuZXh0dHJhY2siKTsKKyAgICBB
U1NFUlRfVFJVRShzZXNzaW9uSGFuZGxlcldhc0NhbGxlZCgibmV4dHRyYWNrIikpOworCisgICAg
QVNTRVJUX1RSVUUoc2VuZE1lZGlhUmVtb3RlQ29tbWFuZChNUk1lZGlhUmVtb3RlQ29tbWFuZFBy
ZXZpb3VzVHJhY2spKTsKKyAgICB3YWl0Rm9yU2Vzc2lvbkhhbmRsZXJUb0JlQ2FsbGVkKCJwcmV2
aW91c3RyYWNrIik7CisgICAgQVNTRVJUX1RSVUUoc2Vzc2lvbkhhbmRsZXJXYXNDYWxsZWQoInBy
ZXZpb3VzdHJhY2siKSk7CisKKyAgICAvLyBVbnJlZ2lzdGVyIGFjdGlvbiBoYW5kbGVycywgc3Vw
cG9ydGVkIGNvbW1hbmRzIHNob3VsZCBnbyB0byBIVE1MTWVkaWFFbGVtZW50LgorICAgIFt3ZWJW
aWV3KCkgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImNsZWFyQWN0aW9uSGFuZGxlcnMo
KSJdOworCisgICAgQVNTRVJUX1RSVUUoc2VuZE1lZGlhUmVtb3RlQ29tbWFuZChNUk1lZGlhUmVt
b3RlQ29tbWFuZFBsYXkpKTsKKyAgICB3YWl0Rm9yRXZlbnRMaXN0ZW5lclRvQmVDYWxsZWQoInBs
YXkiKTsKKyAgICBBU1NFUlRfVFJVRShldmVudExpc3RlbmVyV2FzQ2FsbGVkKCJwbGF5IikpOwor
CisgICAgQVNTRVJUX1RSVUUoc2VuZE1lZGlhUmVtb3RlQ29tbWFuZChNUk1lZGlhUmVtb3RlQ29t
bWFuZFBhdXNlKSk7CisgICAgd2FpdEZvckV2ZW50TGlzdGVuZXJUb0JlQ2FsbGVkKCJwbGF5Iik7
CisgICAgQVNTRVJUX1RSVUUoZXZlbnRMaXN0ZW5lcldhc0NhbGxlZCgicGF1c2UiKSk7CisKKyAg
ICBBU1NFUlRfVFJVRShzZW5kTWVkaWFSZW1vdGVTZWVrQ29tbWFuZChNUk1lZGlhUmVtb3RlQ29t
bWFuZFNraXBGb3J3YXJkLCAxKSk7CisgICAgd2FpdEZvckV2ZW50TGlzdGVuZXJUb0JlQ2FsbGVk
KCJzZWVrZWQiKTsKKyAgICBBU1NFUlRfVFJVRShldmVudExpc3RlbmVyV2FzQ2FsbGVkKCJzZWVr
ZWQiKSk7CisKKyAgICBBU1NFUlRfVFJVRShzZW5kTWVkaWFSZW1vdGVTZWVrQ29tbWFuZChNUk1l
ZGlhUmVtb3RlQ29tbWFuZFNraXBCYWNrd2FyZCwgMTApKTsKKyAgICB3YWl0Rm9yRXZlbnRMaXN0
ZW5lclRvQmVDYWxsZWQoInNlZWtlZCIpOworICAgIEFTU0VSVF9UUlVFKGV2ZW50TGlzdGVuZXJX
YXNDYWxsZWQoInNlZWtlZCIpKTsKKworICAgIEFTU0VSVF9UUlVFKHNlbmRNZWRpYVJlbW90ZVNl
ZWtDb21tYW5kKE1STWVkaWFSZW1vdGVDb21tYW5kU2Vla1RvUGxheWJhY2tQb3NpdGlvbiwgNikp
OworICAgIHdhaXRGb3JFdmVudExpc3RlbmVyVG9CZUNhbGxlZCgic2Vla2VkIik7CisgICAgQVNT
RVJUX1RSVUUoZXZlbnRMaXN0ZW5lcldhc0NhbGxlZCgic2Vla2VkIikpOworfQorCit9CisKKyNl
bmRpZiAvLyBQTEFURk9STShNQUMpICYmIEVOQUJMRShNRURJQV9TRVNTSU9OKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9tZWRpYS1yZW1vdGUuaHRt
bCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvbWVkaWEtcmVtb3RlLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMWM5OTNjN2NkNDAxYWZmMzJjZjIzMmVkYmM4ODNlY2RjNzliYjM1Zgot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
bWVkaWEtcmVtb3RlLmh0bWwKQEAgLTAsMCArMSwxMzkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxzdHlsZT4KKyAgICAjZXZlbnRzbG9nIHsKKyAgICAgICAgZm9udC1zaXpl
OiAxMHB4OyAKKyAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMCUgLSAoMzIwcHgpKTsKKyAgICAgICAg
b3ZlcmZsb3cteTogc2Nyb2xsOworICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDE0Nywg
MTI4LCAxMDgsIDAuMjUpOworICAgIH0KKzwvc3R5bGU+CisgICAgPHNjcmlwdD4KKworICAgICAg
ICBsZXQgcGxheWxpc3QgPSB7CisgICAgICAgICAgICBjdXJyZW50OiAwLAorICAgICAgICAgICAg
bWV0YWRhdGE6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHVybDog
J3ZpZGVvLXdpdGgtYXVkaW8ubXA0JywKKyAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICdCaXAg
Qm9wIFdpdGggQXVkaW8nLAorICAgICAgICAgICAgICAgICAgICBhcnRpc3Q6ICdUaGUgQmlwIEJv
cCBBdXRob3JzJywKKyAgICAgICAgICAgICAgICAgICAgYWxidW06ICdXZWJLaXQgR3JlYXRlc3Qg
SGl0cycsCisgICAgICAgICAgICAgICAgICAgIGFydHdvcms6IFsKKworICAgICAgICAgICAgICAg
ICAgICBdLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICB1cmw6ICd2aWRlby13aXRob3V0LWF1ZGlvLm1wNCcsCisgICAgICAgICAgICAg
ICAgICAgIHRpdGxlOiAnQmlwIEJvcCBXaXRob3V0IEF1ZGlvJywKKyAgICAgICAgICAgICAgICAg
ICAgYXJ0aXN0OiAnVGhlIEJpcCBCb3AgQXV0aG9ycycsCisgICAgICAgICAgICAgICAgICAgIGFs
YnVtOiAnV2ViS2l0IE9yaWdpbmFsIFRlc3QgQ29udGVudCcsCisgICAgICAgICAgICAgICAgICAg
IGFydHdvcms6IFsKKworICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgIH0s
CisgICAgICAgICAgICBdLAorICAgICAgICB9OworCisgICAgICAgIGZ1bmN0aW9uIHNldE1ldGFk
YXRhKGRhdGEpCisgICAgICAgIHsKKyAgICAgICAgICAgIG5hdmlnYXRvci5tZWRpYVNlc3Npb24u
bWV0YWRhdGEgPSBuZXcgTWVkaWFNZXRhZGF0YShkYXRhKTsKKyAgICAgICAgICAgIHBvc3RNZXNz
YWdlKCdzZXQgbWV0YWRhdGEnKQorICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2V0UGxh
eWxpc3RNZXRhZGF0YShpbmRleCkKKyAgICAgICAgeworICAgICAgICAgICAgc2V0TWV0YWRhdGEo
cGxheWxpc3QubWV0YWRhdGFbaW5kZXhdKTsKKyAgICAgICAgCisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBjbGVhckFjdGlvbkhhbmRsZXJzKCkKKyAgICAgICAgeworICAgICAgICAgICAg
c2V0RW1wdHlBY3Rpb25IYW5kbGVycyhbXSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBzZXRFbXB0eUFjdGlvbkhhbmRsZXJzKGhhbmRsZXJzKQorICAgICAgICB7CisgICAgICAgICAg
ICBjb25zdCBhY3Rpb25zID0geworICAgICAgICAgICAgICAgICdwbGF5JyA6ICgpID0+IHsgcG9z
dE1lc3NhZ2UoJ3BsYXkgaGFuZGxlcicpOyB9LAorCisgICAgICAgICAgICAgICAgJ3BhdXNlJyA6
ICgpID0+IHsgcG9zdE1lc3NhZ2UoJ3BhdXNlIGhhbmRsZXInKSB9LAorICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgICdzZWVrdG8nIDogKGRldGFpbHMpID0+IHsgcG9zdE1lc3NhZ2Uo
J3NlZWt0byBoYW5kbGVyJykgfSwKKworICAgICAgICAgICAgICAgICdzZWVrZm9yd2FyZCcgOiAo
ZGV0YWlscykgPT4geyBwb3N0TWVzc2FnZSgnc2Vla2ZvcndhcmQgaGFuZGxlcicpIH0sCisKKyAg
ICAgICAgICAgICAgICAnc2Vla2JhY2t3YXJkJyA6IChkZXRhaWxzKSA9PiB7IHBvc3RNZXNzYWdl
KCdzZWVrYmFja3dhcmQgaGFuZGxlcicpIH0sIAorCisgICAgICAgICAgICAgICAgJ3ByZXZpb3Vz
dHJhY2snIDogKCkgPT4geyBwb3N0TWVzc2FnZSgncHJldmlvdXN0cmFjayBoYW5kbGVyJykgfSwg
CisKKyAgICAgICAgICAgICAgICAnbmV4dHRyYWNrJyA6ICgpID0+IHsgcG9zdE1lc3NhZ2UoJ25l
eHR0cmFjayBoYW5kbGVyJykgfSwgCisgICAgICAgICAgICB9OworCisgICAgICAgICAgICBPYmpl
Y3Qua2V5cyhhY3Rpb25zKS5mb3JFYWNoKGFjdGlvbiA9PiB7ICBuYXZpZ2F0b3IubWVkaWFTZXNz
aW9uLnNldEFjdGlvbkhhbmRsZXIoYWN0aW9uLCBudWxsKTsgfSk7CisKKyAgICAgICAgICAgIGhh
bmRsZXJzLmZvckVhY2goaGFuZGxlciA9PiB7CisgICAgICAgICAgICAgICAgaWYgKCFhY3Rpb25z
W2hhbmRsZXJdKSB7CisgICAgICAgICAgICAgICAgICAgIGxvZyhgYXNrZWQgdG8gcmVnaXN0ZXIg
aGFuZGxlciBmb3IgdW5rbm93biBhY3Rpb24gJyR7aGFuZGxlcn0nYCk7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBsb2co
YHJlZ2lzdGVyaW5nICcke2hhbmRsZXJ9JyBoYW5kbGVyYCk7CisgICAgICAgICAgICAgICAgbmF2
aWdhdG9yLm1lZGlhU2Vzc2lvbi5zZXRBY3Rpb25IYW5kbGVyKGhhbmRsZXIsIGFjdGlvbnNbaGFu
ZGxlcl0pOyAKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
cG9zdE1lc3NhZ2UobWVzc2FnZSkKKyAgICAgICAgeworICAgICAgICAgICAgbG9nKGAke21lc3Nh
Z2V9YCkKKyAgICAgICAgICAgIGlmICh3aW5kb3cud2Via2l0KQorICAgICAgICAgICAgICAgIHdp
bmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKG1lc3Nh
Z2UpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gcG9zdEV2ZW50KGV2dCkgCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHBvc3RNZXNzYWdlKGAke2V2dC50eXBlfSBldmVudGApOworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBmdW5jdGlvbiBsb2FkKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgbGV0IHNyYyA9IHBsYXlsaXN0Lm1ldGFkYXRhWzBdLnVybDsKKyAgICAgICAgICAg
IGlmICghd2luZG93LndlYmtpdCkKKyAgICAgICAgICAgICAgICBzcmMgPSBgLi4vV2ViS2l0TGVn
YWN5L2lvcy8ke3NyY31gOworICAgICAgICAgICAgYXVkaW8uc3JjID0gc3JjOworICAgICAgICAg
ICAgYXVkaW8ubG9hZCgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmdW5jdGlvbiBs
b2cobXNnKQorICAgICAgICB7CisgICAgICAgICAgICBsZXQgZXZlbnRMb2cgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnZXZlbnRzbG9nJykKKyAgICAgICAgICAgIGxldCBub3RlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgICAgICBub3RlLmlubmVySFRNTCA9IG1z
ZzsKKyAgICAgICAgICAgIGV2ZW50TG9nLmluc2VydEJlZm9yZShub3RlLCBldmVudExvZy5maXJz
dENoaWxkKTsKKyAgICAgICAgfQorCisgICAgICAgIAorICAgICAgICB3aW5kb3cuYWRkRXZlbnRM
aXN0ZW5lcigibG9hZCIsIGV2dCA9PiB7CisgICAgICAgICAgICBhdWRpbyA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCdhdWRpbycpWzBdOworICAgICAgICAgICAgYXVkaW8uYWRkRXZl
bnRMaXN0ZW5lcignY2FucGxheXRocm91Z2gnLCBwb3N0RXZlbnQpOworICAgICAgICAgICAgYXVk
aW8uYWRkRXZlbnRMaXN0ZW5lcigncGxheScsIHBvc3RFdmVudCk7CisgICAgICAgICAgICBhdWRp
by5hZGRFdmVudExpc3RlbmVyKCdwYXVzZScsIHBvc3RFdmVudCk7CisgICAgICAgICAgICBhdWRp
by5hZGRFdmVudExpc3RlbmVyKCdzZWVrZWQnLCBwb3N0RXZlbnQpOworICAgICAgICB9LCBmYWxz
ZSk7CisKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxhdWRpbyBjb250cm9s
cz4gPC9hdWRpbz4KKyAgICA8YnI+CisgICAgPGJ1dHRvbiBvbmNsaWNrPSJzZXRFbXB0eUFjdGlv
bkhhbmRsZXJzKFsncGxheScsJ3BhdXNlJywnc2Vla3RvJ10pIj5FbXB0eSBQbGF5LCBQYXVzZSwg
U2Vla1RvPC9idXR0b24+CisgICAgPGJyPgorICAgIDxidXR0b24gb25jbGljaz0ic2V0RW1wdHlB
Y3Rpb25IYW5kbGVycyhbJ3BsYXknLCdwYXVzZScsJ3NlZWtmb3J3YXJkJywnc2Vla2JhY2t3YXJk
J10pIj5FbXB0eSBQbGF5LCBQYXVzZSwgU2VlayBGb3J3YXJkLCBTZWVrIEJhY2t3YXJkPC9idXR0
b24+CisgICAgPGJyPgorICAgIDxidXR0b24gb25jbGljaz0ibG9hZCgpIj5Mb2FkPC9idXR0b24+
CisgICAgPGJyPgorICAgIDxidXR0b24gb25jbGljaz0ic2V0UGxheWxpc3RNZXRhZGF0YSgwKSI+
U2V0IE1ldGFkYXRhIDE8L2J1dHRvbj48YnV0dG9uIG9uY2xpY2s9InNldFBsYXlsaXN0TWV0YWRh
dGEoMSkiPlNldCBNZXRhZGF0YSAyPC9idXR0b24+CisgICAgPGJyPgorICAgIDxkaXYgaWQ9J2V2
ZW50c2xvZyc+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419388</attachid>
            <date>2021-02-05 04:48:48 -0800</date>
            <delta_ts>2021-02-05 05:40:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221431-20210205044847.patch</filename>
            <type>text/plain</type>
            <size>93909</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDY1NTU5N2Y2NWVlNjhi
MzU4NTk2MzFmZjU2MjljMzNiZmE0YTliOC4uY2M4OTA1ZGZkZWQwZTg0N2Q2MzEwZmFiNjUyMzg4
YThhMTc1ZmQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisyMDIxLTAyLTA0ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIENvbm5l
Y3QgTWVkaWFTZXNzaW9uIHdpdGggTWVkaWFSZW1vdGUgYW5kIE5vd1BsYXlpbmcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTQzMQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNzQwMDAzNjM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUm91dGUgYWxsIHJlbW90ZSBjb250cm9sIGNvbW1hbmRzIHRvIG5h
dmlnYXRvci5tZWRpYVNlc3Npb24gd2hlbiBpdCBoYXMgYW55IAorICAgICAgICByZWdpc3RlcmVk
IGFjdGlvbiBoYW5kbGVycywgYW5kIHBhc3MgbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5tZXRhZGF0
YSB0byBOb3dQbGF5aW5nLgorCisgICAgICAgIFRlc3RlZCBieSBuZXcgQVBJIHRlc3RzIGluIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTWVkaWFTZXNzaW9uLm1tLgorCisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFJbWFnZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFJbWFnZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
SW1hZ2U6OmRlY29kZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRh
ZGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYU1ldGFkYXRhOjpzZXRUaXRsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYU1ldGFkYXRhOjpzZXRBcnRpc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFNZXRhZGF0YTo6c2V0QWxidW0pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFN
ZXRhZGF0YTo6c2V0QXJ0d29yayk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVk
aWFNZXRhZGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFNZXRhZGF0YTo6dGl0bGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFNZXRhZGF0YTo6YXJ0aXN0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhTWV0YWRhdGE6OmFsYnVtIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhTWV0YWRhdGE6OmFydHdvcmsgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFNZXRhZGF0YTo6bWV0YWRhdGEgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
ZXNzaW9uL01lZGlhTWV0YWRhdGFJbml0Lmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYU1ldGFk
YXRhSW5pdDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhTWV0YWRhdGFJ
bml0OjpkZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpuZXh0TG9nSWRlbnRpZmllcik6CisgICAgICAgIChX
ZWJDb3JlOjpsb2dDaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6OmxvZ0NsYXNzTmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUNvbW1hbmRGb3JNZWRpYVNlc3Npb25BY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uOjpNZWRpYVNlc3Npb24pOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTZXNzaW9uOjpzZXRNZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVNlc3Npb246OnNldFBsYXliYWNrU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
ZXNzaW9uOjpzZXRBY3Rpb25IYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lv
bjo6c2V0UG9zaXRpb25TdGF0ZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVk
aWFTZXNzaW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb246Omhhc0FjdGl2ZUFj
dGlvbkhhbmRsZXJzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6bG9n
Z2VyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6bG9nSWRlbnRpZmll
ciBjb25zdCk6CisgICAgICAgIChXVEY6OkxvZ0FyZ3VtZW50PFdlYkNvcmU6Ok1lZGlhU2Vzc2lv
blBsYXliYWNrU3RhdGU+Ojp0b1N0cmluZyk6CisgICAgICAgIChXVEY6OkxvZ0FyZ3VtZW50PFdl
YkNvcmU6Ok1lZGlhU2Vzc2lvbkFjdGlvbj46OnRvU3RyaW5nKToKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmRpZFJlY2VpdmVS
ZW1vdGVDb250cm9sQ29tbWFuZCk6CisgICAgICAgICogaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OmRpZFJlY2VpdmVS
ZW1vdGVDb250cm9sQ29tbWFuZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNz
aW9uOjpub3dQbGF5aW5nSW5mbyBjb25zdCk6CisgICAgICAgICogaHRtbC9NZWRpYUVsZW1lbnRT
ZXNzaW9uLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3Rl
Q29tbWFuZExpc3RlbmVyOjpzY2hlZHVsZVN1cHBvcnRlZENvbW1hbmRzVXBkYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6YWRkU3VwcG9ydGVkQ29tbWFuZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVDb21tYW5kTGlzdGVuZXI6OnJlbW92ZVN1cHBvcnRl
ZENvbW1hbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmg6CisgICAgICAgIChXZWJD
b3JlOjpOb3dQbGF5aW5nSW5mbzo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9Q
bGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RW51bWVy
YXRpb25Ub1N0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNl
c3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6
YWRkU3VwcG9ydGVkQ29tbWFuZCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXI6OnJlbW92ZVN1cHBvcnRlZENvbW1hbmQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2NoZWR1bGVTZXNzaW9uU3RhdHVzVXBk
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2Vzc2lv
bkNhblByb2R1Y2VBdWRpb0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9u
TWFuYWdlckNvY29hOjphZGRTdXBwb3J0ZWRDb21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6cmVtb3ZlU3VwcG9ydGVkQ29tbWFuZCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJbmZvKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvTWVkaWFSZW1vdGVTb2Z0TGluay5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL01lZGlhUmVtb3RlU29mdExpbmsuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om1lZGlhUmVt
b3RlQ29tbWFuZEZvclBsYXRmb3JtQ29tbWFuZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVD
b21tYW5kTGlzdGVuZXJNYWM6OmRlZmF1bHRDb21tYW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpp
c1NlZWtDb21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lck1h
Yzo6dXBkYXRlU3VwcG9ydGVkQ29tbWFuZHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlQ29t
bWFuZExpc3RlbmVyTWFjOjpSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMpOgorCiAyMDIxLTAyLTA0
ICBKdWxpYW4gR29uemFsZXogIDxqdWxpYW5fYV9nb256YWxlekBhcHBsZS5jb20+CiAKICAgICAg
ICAgTnVsbCBkZXJlZmVyZW5jZSBpbiBEb2N1bWVudExvYWRlcjo6Y29tbWl0RGF0YSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFM
L0NoYW5nZUxvZwppbmRleCAwOWIxMGNhMTI3OWQ5YjgxNTY2ZGE4ZmZhMmUwMWU0NWQ1MGI3YmZh
Li5hNmY2YzJjZmQwYjVjMTFjZTcwZTEyOTc3OGZjMjEwZGUxMWU1MjQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0wMi0wNCAgRXJpYyBDYXJsc29uICA8ZXJpYy5j
YXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWFjXSBDb25uZWN0IE1lZGlhU2Vzc2lvbiB3
aXRoIE1lZGlhUmVtb3RlIGFuZCBOb3dQbGF5aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE0MzEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc0
MDAwMzYzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcGFsL3NwaS9tYWMvTWVkaWFSZW1vdGVTUEkuaDoKKwogMjAyMS0wMi0wMSAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIERpc2FibGUgaW50ZXJz
dGl0aWFsIGV2ZW50cyBvbiBBVlBsYXllckl0ZW0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDc5M2YzNGE3MzdlMzhl
YjZjMWMxOTI4NGIyYTQ3Y2EwNjQ5MzAyMjkuLmRhYWNmODY3OGRiMGIxYzI0NTEzMjZkMjQ2ODg1
MGY5MTViZDVhZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDItMDQgIEVyaWMg
Q2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW01hY10gQ29ubmVj
dCBNZWRpYVNlc3Npb24gd2l0aCBNZWRpYVJlbW90ZSBhbmQgTm93UGxheWluZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNDMxCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS83NDAwMDM2Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgYSBwcml2YXRlIHByZWZlcmVuY2Ugc28gdGhlIG5ldyBNZWRp
YVNlc3Npb24gQVBJIHRlc3QgY2FuIGVuYWJsZSB0aGUgZmVhdHVyZS4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbToKKyAgICAgICAgKC1bV0tQcmVmZXJl
bmNlcyBfbWVkaWFTZXNzaW9uRW5hYmxlZF0pOgorICAgICAgICAoLVtXS1ByZWZlcmVuY2VzIF9z
ZXRNZWRpYVNlc3Npb25FbmFibGVkOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tQcmVmZXJlbmNlc1ByaXZhdGUuaDoKKwogMjAyMS0wMi0wNCAgSnVsaWFuIEdvbnphbGV6ICA8
anVsaWFuX2FfZ29uemFsZXpAYXBwbGUuY29tPgogCiAgICAgICAgIE51bGwgZGVyZWZlcmVuY2Ug
aW4gRG9jdW1lbnRMb2FkZXI6OmNvbW1pdERhdGEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNlc3Npb24vTWVkaWFJbWFnZS5oCmluZGV4IGFmMTE5NWVhZDBmYjIwMGYyYjVh
YWFhZjA2Yjc4MGMyNjFlMmRhZGQuLjQ5MzI0MDBhMDJmODc2OWQxOTQ4OWNkMzhhMmRhODAzYTQ4
MWMyNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01l
ZGlhSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRp
YUltYWdlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzMsOCArMzMsMzMgQEAgc3RydWN0IE1lZGlhSW1hZ2UgewogICAgIFN0cmluZyBz
cmM7CiAgICAgU3RyaW5nIHNpemVzOwogICAgIFN0cmluZyB0eXBlOworCisgICAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxNZWRpYUltYWdlPiBkZWNvZGUoRGVjb2Rl
ciYpOwogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gaW5saW5lIHZvaWQgTWVkaWFJbWFn
ZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBzcmMg
PDwgc2l6ZXMgPDwgdHlwZTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIE9w
dGlvbmFsPE1lZGlhSW1hZ2U+IE1lZGlhSW1hZ2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
eworICAgIFN0cmluZyBzcmM7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzcmMpKQorICAgICAg
ICByZXR1cm4geyB9OworCisgICAgU3RyaW5nIHNpemVzOworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoc2l6ZXMpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgU3RyaW5nIHR5cGU7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZSh0eXBlKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJl
dHVybiBNZWRpYUltYWdlIHsgV1RGTW92ZShzcmMpLCBXVEZNb3ZlKHNpemVzKSwgV1RGTW92ZSh0
eXBlKSB9OworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU0VTU0lPTikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5j
cHAKaW5kZXggYTZmNDQ5YzQyNjBmY2ZiN2NhNDZjMDZkMTk4ZWM3ZTY1NjI4MWQ5ZC4uZjZmZjMx
ZmIwOGRkNDk4MWEzYmNlOTAzOTJiZGJkMmNkYTVmY2RiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjQsMjUgKzY0
LDI4IEBAIHZvaWQgTWVkaWFNZXRhZGF0YTo6cmVzZXRNZWRpYVNlc3Npb24oKQogCiB2b2lkIE1l
ZGlhTWV0YWRhdGE6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7Ci0gICAgaWYgKG1f
dGl0bGUgPT0gdGl0bGUpCisgICAgaWYgKG1fbWV0YWRhdGEudGl0bGUgPT0gdGl0bGUpCiAgICAg
ICAgIHJldHVybjsKLSAgICBtX3RpdGxlID0gdGl0bGU7CisKKyAgICBtX21ldGFkYXRhLnRpdGxl
ID0gdGl0bGU7CiAgICAgbWV0YWRhdGFVcGRhdGVkKCk7CiB9CiAKIHZvaWQgTWVkaWFNZXRhZGF0
YTo6c2V0QXJ0aXN0KGNvbnN0IFN0cmluZyYgYXJ0aXN0KQogewotICAgIGlmIChtX2FydGlzdCA9
PSBhcnRpc3QpCisgICAgaWYgKG1fbWV0YWRhdGEuYXJ0aXN0ID09IGFydGlzdCkKICAgICAgICAg
cmV0dXJuOwotICAgIG1fYXJ0aXN0ID0gYXJ0aXN0OworCisgICAgbV9tZXRhZGF0YS5hcnRpc3Qg
PSBhcnRpc3Q7CiAgICAgbWV0YWRhdGFVcGRhdGVkKCk7CiB9CiAKIHZvaWQgTWVkaWFNZXRhZGF0
YTo6c2V0QWxidW0oY29uc3QgU3RyaW5nJiBhbGJ1bSkKIHsKLSAgICBpZiAobV9hbGJ1bSA9PSBh
bGJ1bSkKKyAgICBpZiAobV9tZXRhZGF0YS5hbGJ1bSA9PSBhbGJ1bSkKICAgICAgICAgcmV0dXJu
OwotICAgIG1fYWxidW0gPSBhbGJ1bTsKKworICAgIG1fbWV0YWRhdGEuYWxidW0gPSBhbGJ1bTsK
ICAgICBtZXRhZGF0YVVwZGF0ZWQoKTsKIH0KIApAQCAtOTcsNyArMTAwLDcgQEAgRXhjZXB0aW9u
T3I8dm9pZD4gTWVkaWFNZXRhZGF0YTo6c2V0QXJ0d29yayhTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBWZWMKICAgICAgICAgcmVzb2x2ZWRBcnR3b3JrLnVuY2hlY2tlZEFwcGVuZChN
ZWRpYUltYWdlIHsgcmVzb2x2ZWRTcmMuc3RyaW5nKCksIGltYWdlLnNpemVzLCBpbWFnZS50eXBl
IH0pOwogICAgIH0KIAotICAgIG1fYXJ0d29yayA9IFdURk1vdmUocmVzb2x2ZWRBcnR3b3JrKTsK
KyAgICBtX21ldGFkYXRhLmFydHdvcmsgPSBXVEZNb3ZlKHJlc29sdmVkQXJ0d29yayk7CiAgICAg
bWV0YWRhdGFVcGRhdGVkKCk7CiAgICAgcmV0dXJuIHsgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuaAppbmRleCAyNjRlZWNj
YTk1MGIyMmVhNDUzYjcxZTQyZGZhODA0NjBhOTc2YmNhLi4zMGUwOTNkNmQyN2RkYjc0MTUyODFl
ZThiNWQxMDA0ZWZjZmFhNWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShN
RURJQV9TRVNTSU9OKQogCisjaW5jbHVkZSAiTWVkaWFNZXRhZGF0YUluaXQuaCIKICNpbmNsdWRl
ICJNZWRpYVNlc3Npb24uaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CkBAIC0zNCwxMCArMzUsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIERvY3VtZW50OwotY2xhc3MgTWVkaWFTZXNzaW9uOwogc3RydWN0IE1lZGlhSW1hZ2U7
Ci1zdHJ1Y3QgTWVkaWFNZXRhZGF0YUluaXQ7CisKK3VzaW5nIE1lZGlhU2Vzc2lvbk1ldGFkYXRh
ID0gTWVkaWFNZXRhZGF0YUluaXQ7CiAKIGNsYXNzIE1lZGlhTWV0YWRhdGEgOiBwdWJsaWMgUmVm
Q291bnRlZDxNZWRpYU1ldGFkYXRhPiB7CiBwdWJsaWM6CkBAIC00NywyNyArNDcsMjYgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0TWVkaWFTZXNzaW9uKE1lZGlhU2Vzc2lvbiYpOwogICAgIHZvaWQg
cmVzZXRNZWRpYVNlc3Npb24oKTsKIAotICAgIGNvbnN0IFN0cmluZyYgdGl0bGUoKSBjb25zdCB7
IHJldHVybiBtX3RpdGxlOyB9CisgICAgY29uc3QgU3RyaW5nJiB0aXRsZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbWV0YWRhdGEudGl0bGU7IH0KICAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZyYp
OwogCi0gICAgY29uc3QgU3RyaW5nJiBhcnRpc3QoKSBjb25zdCB7IHJldHVybiBtX2FydGlzdDsg
fQorICAgIGNvbnN0IFN0cmluZyYgYXJ0aXN0KCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5h
cnRpc3Q7IH0KICAgICB2b2lkIHNldEFydGlzdChjb25zdCBTdHJpbmcmKTsKIAotICAgIGNvbnN0
IFN0cmluZyYgYWxidW0oKSBjb25zdCB7IHJldHVybiBtX2FsYnVtOyB9CisgICAgY29uc3QgU3Ry
aW5nJiBhbGJ1bSgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRhdGEuYWxidW07IH0KICAgICB2b2lk
IHNldEFsYnVtKGNvbnN0IFN0cmluZyYpOwogCi0gICAgY29uc3QgVmVjdG9yPE1lZGlhSW1hZ2U+
JiBhcnR3b3JrKCkgY29uc3QgeyByZXR1cm4gbV9hcnR3b3JrOyB9CisgICAgY29uc3QgVmVjdG9y
PE1lZGlhSW1hZ2U+JiBhcnR3b3JrKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5hcnR3b3Jr
OyB9CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0QXJ0d29yayhTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiwgVmVjdG9yPE1lZGlhSW1hZ2U+JiYpOwogCisgICAgY29uc3QgTWVkaWFTZXNzaW9uTWV0
YWRhdGEmIG1ldGFkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YTsgfQorCiBwcml2YXRl
OgogICAgIE1lZGlhTWV0YWRhdGEoKTsKICAgICB2b2lkIG1ldGFkYXRhVXBkYXRlZCgpOwogCiAg
ICAgV2Vha1B0cjxNZWRpYVNlc3Npb24+IG1fc2Vzc2lvbjsKLSAgICBTdHJpbmcgbV90aXRsZTsK
LSAgICBTdHJpbmcgbV9hcnRpc3Q7Ci0gICAgU3RyaW5nIG1fYWxidW07Ci0gICAgVmVjdG9yPE1l
ZGlhSW1hZ2U+IG1fYXJ0d29yazsKKyAgICBNZWRpYVNlc3Npb25NZXRhZGF0YSBtX21ldGFkYXRh
OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Np
b24vTWVkaWFNZXRhZGF0YUluaXQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNz
aW9uL01lZGlhTWV0YWRhdGFJbml0LmgKaW5kZXggMDEyZWMyZDA5NWY5M2JiZmUyOGEzOGQ2M2Fh
ZWE0MjEyNmFiNTZlNS4uNjY5ZGVmZmEyZDY5NDA4NWYwOGYxMGRmMWI5MTZlZjQ0ZTg4NWUwZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRh
ZGF0YUluaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRp
YU1ldGFkYXRhSW5pdC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTM2LDggKzM2LDM3IEBAIHN0cnVjdCBNZWRpYU1ldGFkYXRhSW5pdCB7
CiAgICAgU3RyaW5nIGFydGlzdDsKICAgICBTdHJpbmcgYWxidW07CiAgICAgVmVjdG9yPE1lZGlh
SW1hZ2U+IGFydHdvcms7CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29k
ZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9w
dGlvbmFsPE1lZGlhTWV0YWRhdGFJbml0PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAordGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gaW5saW5lIHZvaWQgTWVkaWFNZXRhZGF0YUluaXQ6OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgdGl0bGUgPDwgYXJ0aXN0
IDw8IGFsYnVtIDw8IGFydHdvcms7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGlu
ZSBPcHRpb25hbDxNZWRpYU1ldGFkYXRhSW5pdD4gTWVkaWFNZXRhZGF0YUluaXQ6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFN0cmluZyB0aXRsZTsKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHRpdGxlKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIFN0cmluZyBhcnRpc3Q7
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhcnRpc3QpKQorICAgICAgICByZXR1cm4geyB9Owor
CisgICAgU3RyaW5nIGFsYnVtOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWxidW0pKQorICAg
ICAgICByZXR1cm4geyB9OworCisgICAgVmVjdG9yPE1lZGlhSW1hZ2U+IGFydHdvcms7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShhcnR3b3JrKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAg
IHJldHVybiBNZWRpYU1ldGFkYXRhSW5pdCB7IFdURk1vdmUodGl0bGUpLCBXVEZNb3ZlKGFydGlz
dCksIFdURk1vdmUoYWxidW0pLCBXVEZNb3ZlKGFydHdvcmspIH07Cit9CisKIH0KIAogI2VuZGlm
IC8vIEVOQUJMRShNRURJQV9TRVNTSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAKaW5kZXggMWFiNjIyNDgzMmVlZmExMjky
ZjEzODYxM2I0MWYwNzcwOTk2MjNjZS4uYTNiNWE5MGYwNDdkZjdlODlhMzc1NTU3MDRiYzNmZWU3
NWVlMTIwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24v
TWVkaWFTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lv
bi9NZWRpYVNlc3Npb24uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDExICsyOCw1MyBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NF
U1NJT04pCiAKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFNZXRhZGF0YS5o
IgogI2luY2x1ZGUgIk5hdmlnYXRvci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBjb25zdCB2b2lkKiBu
ZXh0TG9nSWRlbnRpZmllcigpCit7CisgICAgc3RhdGljIHVpbnQ2NF90IGxvZ0lkZW50aWZpZXIg
PSBjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpOworICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PGNvbnN0IHZvaWQqPigrK2xvZ0lkZW50aWZpZXIpOworfQorCitzdGF0aWMgV1RGTG9n
Q2hhbm5lbCYgbG9nQ2hhbm5lbCgpIHsgcmV0dXJuIExvZ01lZGlhOyB9CitzdGF0aWMgY29uc3Qg
Y2hhciogbG9nQ2xhc3NOYW1lKCkgeyByZXR1cm4gIk1lZGlhU2Vzc2lvbiI7IH0KKworc3RhdGlj
IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgcGxhdGZvcm1D
b21tYW5kRm9yTWVkaWFTZXNzaW9uQWN0aW9uKE1lZGlhU2Vzc2lvbkFjdGlvbiBhY3Rpb24pCit7
CisgICAgc3RhdGljIGNvbnN0IGF1dG8gY29tbWFuZE1hcCA9IG1ha2VOZXZlckRlc3Ryb3llZChb
XSB7CisgICAgICAgIHN0cnVjdCBNYXBFbnRyeSB7CisgICAgICAgICAgICBNZWRpYVNlc3Npb25B
Y3Rpb24gYWN0aW9uOworICAgICAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNv
bnRyb2xDb21tYW5kVHlwZSBjb21tYW5kOworICAgICAgICB9OworICAgICAgICBzdGF0aWMgY29u
c3QgTWFwRW50cnkgZW50cmllc1tdID0geworICAgICAgICAgICAgeyBNZWRpYVNlc3Npb25BY3Rp
b246OlBsYXksIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5Q29tbWFuZCB9LAorICAgICAgICAg
ICAgeyBNZWRpYVNlc3Npb25BY3Rpb246OlBhdXNlLCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGF1
c2VDb21tYW5kIH0sCisgICAgICAgICAgICB7IE1lZGlhU2Vzc2lvbkFjdGlvbjo6U2Vla2Zvcndh
cmQsIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTa2lwRm9yd2FyZENvbW1hbmQgfSwKKyAgICAgICAg
ICAgIHsgTWVkaWFTZXNzaW9uQWN0aW9uOjpTZWVrYmFja3dhcmQsIFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpTa2lwQmFja3dhcmRDb21tYW5kIH0sCisgICAgICAgICAgICB7IE1lZGlhU2Vzc2lvbkFj
dGlvbjo6UHJldmlvdXN0cmFjaywgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5leHRUcmFja0NvbW1h
bmQgfSwKKyAgICAgICAgICAgIHsgTWVkaWFTZXNzaW9uQWN0aW9uOjpOZXh0dHJhY2ssIFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpQcmV2aW91c1RyYWNrQ29tbWFuZCB9LAorICAgICAgICAgICAgeyBN
ZWRpYVNlc3Npb25BY3Rpb246OlN0b3AsIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTdG9wQ29tbWFu
ZCB9LAorICAgICAgICAgICAgeyBNZWRpYVNlc3Npb25BY3Rpb246OlNlZWt0bywgUGxhdGZvcm1N
ZWRpYVNlc3Npb246OlNlZWtUb1BsYXliYWNrUG9zaXRpb25Db21tYW5kIH0sCisgICAgICAgIH07
CisKKyAgICAgICAgSGFzaE1hcDxNZWRpYVNlc3Npb25BY3Rpb24sIFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIFdURjo6SW50SGFzaDxNZWRpYVNlc3Npb25B
Y3Rpb24+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPE1lZGlhU2Vzc2lvbkFjdGlvbj4+IG1h
cDsKKyAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IGVudHJpZXMpCisgICAgICAgICAgICBtYXAu
YWRkKGVudHJ5LmFjdGlvbiwgZW50cnkuY29tbWFuZCk7CisgICAgICAgIHJldHVybiBtYXA7Cisg
ICAgfSgpKTsKKworICAgIGF1dG8gaXQgPSBjb21tYW5kTWFwLmdldCgpLmZpbmQoYWN0aW9uKTsK
KyAgICBpZiAoaXQgIT0gY29tbWFuZE1hcC5nZXQoKS5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGl0
LT52YWx1ZTsKKworICAgIHJldHVybiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9Db21tYW5kOwor
fQorCiBSZWY8TWVkaWFTZXNzaW9uPiBNZWRpYVNlc3Npb246OmNyZWF0ZShOYXZpZ2F0b3ImIG5h
dmlnYXRvcikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVNlc3Npb24obmF2aWdh
dG9yKSk7CkBAIC00MSwxMiArODMsMTggQEAgUmVmPE1lZGlhU2Vzc2lvbj4gTWVkaWFTZXNzaW9u
OjpjcmVhdGUoTmF2aWdhdG9yJiBuYXZpZ2F0b3IpCiBNZWRpYVNlc3Npb246Ok1lZGlhU2Vzc2lv
bihOYXZpZ2F0b3ImIG5hdmlnYXRvcikKICAgICA6IG1fbmF2aWdhdG9yKG1ha2VXZWFrUHRyKG5h
dmlnYXRvcikpCiB7CisgICAgbV9sb2dnZXIgPSBtYWtlUmVmUHRyKERvY3VtZW50OjpzaGFyZWRM
b2dnZXIoKSk7CisgICAgbV9sb2dJZGVudGlmaWVyID0gbmV4dExvZ0lkZW50aWZpZXIoKTsKKwor
ICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CiB9CiAKIE1lZGlhU2Vzc2lvbjo6fk1lZGlh
U2Vzc2lvbigpID0gZGVmYXVsdDsKIAogdm9pZCBNZWRpYVNlc3Npb246OnNldE1ldGFkYXRhKFJl
ZlB0cjxNZWRpYU1ldGFkYXRhPiYmIG1ldGFkYXRhKQogeworICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUik7CisKICAgICBpZiAobV9tZXRhZGF0YSkKICAgICAgICAgbV9tZXRhZGF0YS0+cmVz
ZXRNZWRpYVNlc3Npb24oKTsKICAgICBtX21ldGFkYXRhID0gV1RGTW92ZShtZXRhZGF0YSk7CkBA
IC02MCw2ICsxMDgsOCBAQCB2b2lkIE1lZGlhU2Vzc2lvbjo6c2V0UGxheWJhY2tTdGF0ZShNZWRp
YVNlc3Npb25QbGF5YmFja1N0YXRlIHN0YXRlKQogICAgIGlmIChtX3BsYXliYWNrU3RhdGUgPT0g
c3RhdGUpCiAgICAgICAgIHJldHVybjsKIAorICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwg
c3RhdGUpOworCiAgICAgYXV0byBjdXJyZW50UG9zaXRpb24gPSB0aGlzLT5jdXJyZW50UG9zaXRp
b24oKTsKICAgICBpZiAobV9wb3NpdGlvblN0YXRlICYmIGN1cnJlbnRQb3NpdGlvbikgewogICAg
ICAgICBtX3Bvc2l0aW9uU3RhdGUtPnBvc2l0aW9uID0gKmN1cnJlbnRQb3NpdGlvbjsKQEAgLTcw
LDEwICsxMjAsMTggQEAgdm9pZCBNZWRpYVNlc3Npb246OnNldFBsYXliYWNrU3RhdGUoTWVkaWFT
ZXNzaW9uUGxheWJhY2tTdGF0ZSBzdGF0ZSkKIAogdm9pZCBNZWRpYVNlc3Npb246OnNldEFjdGlv
bkhhbmRsZXIoTWVkaWFTZXNzaW9uQWN0aW9uIGFjdGlvbiwgUmVmUHRyPE1lZGlhU2Vzc2lvbkFj
dGlvbkhhbmRsZXI+JiYgaGFuZGxlcikKIHsKLSAgICBpZiAoaGFuZGxlcikKKyAgICBpZiAoaGFu
ZGxlcikgeworICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJhZGRpbmcgIiwgYWN0
aW9uKTsKICAgICAgICAgbV9hY3Rpb25IYW5kbGVycy5zZXQoYWN0aW9uLCBoYW5kbGVyKTsKLSAg
ICBlbHNlCi0gICAgICAgIG1fYWN0aW9uSGFuZGxlcnMucmVtb3ZlKGFjdGlvbik7CisgICAgICAg
IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmFkZFN1cHBvcnRl
ZENvbW1hbmQocGxhdGZvcm1Db21tYW5kRm9yTWVkaWFTZXNzaW9uQWN0aW9uKGFjdGlvbikpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChtX2FjdGlvbkhhbmRsZXJzLmNvbnRhaW5zKGFjdGlv
bikpIHsKKyAgICAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInJlbW92aW5nICIs
IGFjdGlvbik7CisgICAgICAgICAgICBtX2FjdGlvbkhhbmRsZXJzLnJlbW92ZShhY3Rpb24pOwor
ICAgICAgICB9CisgICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFu
YWdlcigpLnJlbW92ZVN1cHBvcnRlZENvbW1hbmQocGxhdGZvcm1Db21tYW5kRm9yTWVkaWFTZXNz
aW9uQWN0aW9uKGFjdGlvbikpOworICAgIH0KKyAgICAKICAgICBhY3Rpb25IYW5kbGVyc1VwZGF0
ZWQoKTsKIH0KIApAQCAtODksNiArMTQ3LDggQEAgUmVmUHRyPE1lZGlhU2Vzc2lvbkFjdGlvbkhh
bmRsZXI+IE1lZGlhU2Vzc2lvbjo6aGFuZGxlckZvckFjdGlvbihNZWRpYVNlc3Npb25BY3QKIAog
RXhjZXB0aW9uT3I8dm9pZD4gTWVkaWFTZXNzaW9uOjpzZXRQb3NpdGlvblN0YXRlKE9wdGlvbmFs
PE1lZGlhUG9zaXRpb25TdGF0ZT4mJiBzdGF0ZSkKIHsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5U
SUZJRVIpOworCiAgICAgaWYgKCFzdGF0ZSkgewogICAgICAgICBtX3Bvc2l0aW9uU3RhdGUgPSBX
VEY6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5oCmluZGV4IDNmNjRmM2IwMjQ2ODRl
NGY3ZWM2NDQ4N2I0MTdmNWVkMTczYTc5MDkuLjRmNGJlNDc3MjY0NDA4NmI3N2Q2MWQ5ZjViMDgy
M2ExNWQwNTA1NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNz
aW9uL01lZGlhU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNz
aW9uL01lZGlhU2Vzc2lvbi5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDEwICsyNywxNCBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NF
U1NJT04pCiAKKyNpbmNsdWRlICJKU01lZGlhUG9zaXRpb25TdGF0ZS5oIgorI2luY2x1ZGUgIkpT
TWVkaWFTZXNzaW9uQWN0aW9uLmgiCisjaW5jbHVkZSAiSlNNZWRpYVNlc3Npb25QbGF5YmFja1N0
YXRlLmgiCiAjaW5jbHVkZSAiTWVkaWFQb3NpdGlvblN0YXRlLmgiCiAjaW5jbHVkZSAiTWVkaWFT
ZXNzaW9uQWN0aW9uLmgiCiAjaW5jbHVkZSAiTWVkaWFTZXNzaW9uQWN0aW9uSGFuZGxlci5oIgog
I2luY2x1ZGUgIk1lZGlhU2Vzc2lvblBsYXliYWNrU3RhdGUuaCIKKyNpbmNsdWRlIDx3dGYvTG9n
Z2VyLmg+CiAjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KICNpbmNsdWRlIDx3dGYvT3B0
aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CkBAIC01NywxMyArNjEsMTggQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPGRvdWJsZT4gY3VycmVudFBvc2l0
aW9uKCkgY29uc3Q7CiAKICAgICB2b2lkIG1ldGFkYXRhVXBkYXRlZCgpOworCiAgICAgdm9pZCBh
Y3Rpb25IYW5kbGVyc1VwZGF0ZWQoKTsKICAgICBib29sIGhhc0FjdGlvbkhhbmRsZXIoTWVkaWFT
ZXNzaW9uQWN0aW9uKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8TWVkaWFTZXNz
aW9uQWN0aW9uSGFuZGxlcj4gaGFuZGxlckZvckFjdGlvbihNZWRpYVNlc3Npb25BY3Rpb24pIGNv
bnN0OworICAgIGJvb2wgaGFzQWN0aXZlQWN0aW9uSGFuZGxlcnMoKSBjb25zdCB7IHJldHVybiAh
bV9hY3Rpb25IYW5kbGVycy5pc0VtcHR5KCk7IH0KIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBN
ZWRpYVNlc3Npb24oTmF2aWdhdG9yJik7CiAKKyAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNv
bnN0IHsgcmV0dXJuICptX2xvZ2dlci5nZXQoKTsgfQorICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7IH0KKwogICAgIFdlYWtQdHI8
TmF2aWdhdG9yPiBtX25hdmlnYXRvcjsKICAgICBSZWZQdHI8TWVkaWFNZXRhZGF0YT4gbV9tZXRh
ZGF0YTsKICAgICBNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRlIG1fcGxheWJhY2tTdGF0ZSB7IE1l
ZGlhU2Vzc2lvblBsYXliYWNrU3RhdGU6Ok5vbmUgfTsKQEAgLTcxLDYgKzgwLDIwIEBAIHByaXZh
dGU6CiAgICAgT3B0aW9uYWw8ZG91YmxlPiBtX2xhc3RSZXBvcnRlZFBvc2l0aW9uOwogICAgIE1v
bm90b25pY1RpbWUgbV90aW1lQXRMYXN0UG9zaXRpb25VcGRhdGU7CiAgICAgSGFzaE1hcDxNZWRp
YVNlc3Npb25BY3Rpb24sIFJlZlB0cjxNZWRpYVNlc3Npb25BY3Rpb25IYW5kbGVyPiwgV1RGOjpJ
bnRIYXNoPE1lZGlhU2Vzc2lvbkFjdGlvbj4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8TWVk
aWFTZXNzaW9uQWN0aW9uPj4gbV9hY3Rpb25IYW5kbGVyczsKKyAgICBSZWZQdHI8Y29uc3QgTG9n
Z2VyPiBtX2xvZ2dlcjsKKyAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7Cit9OworCit9
CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBMb2dBcmd1bWVudDxXZWJD
b3JlOjpNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRlPiB7CisgICAgc3RhdGljIFN0cmluZyB0b1N0
cmluZyhXZWJDb3JlOjpNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRlIHN0YXRlKSB7IHJldHVybiBj
b252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhzdGF0ZSk7IH0KK307CisKK3RlbXBsYXRlPD4gc3Ry
dWN0IExvZ0FyZ3VtZW50PFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkFjdGlvbj4geworICAgIHN0YXRp
YyBTdHJpbmcgdG9TdHJpbmcoV2ViQ29yZTo6TWVkaWFTZXNzaW9uQWN0aW9uIGFjdGlvbikgeyBy
ZXR1cm4gY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoYWN0aW9uKTsgfQogfTsKIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL01lZGlhUmVtb3RlU1BJLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvTWVkaWFSZW1vdGVTUEkuaAppbmRleCA2
NTE1YzBkNzZmMDVkYTAwNjE4MGEyYTU3NTEzZWYyZTY0NWM4MWU0Li4wZmI3YmI0ZjcwMDI3ODU3
NGIzNjRkZGI1MjUwMDAwYjg1NGU3ZTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3NwaS9tYWMvTWVkaWFSZW1vdGVTUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L3NwaS9tYWMvTWVkaWFSZW1vdGVTUEkuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05Miw2ICs5Miw4IEBAIGVudW0gewogdHlwZWRlZiB1
aW50MzJfdCBNUk5vd1BsYXlpbmdDbGllbnRWaXNpYmlsaXR5OwogCiB0eXBlZGVmIHVpbnQzMl90
IE1STWVkaWFSZW1vdGVFcnJvcjsKK3R5cGVkZWYgdWludDMyX3QgTVJTZW5kQ29tbWFuZEFwcE9w
dGlvbnM7Cit0eXBlZGVmIHVpbnQzMl90IE1SU2VuZENvbW1hbmRFcnJvcjsKIHR5cGVkZWYgc3Ry
dWN0IF9NUk9yaWdpbiAqTVJPcmlnaW5SZWY7CiB0eXBlZGVmIHN0cnVjdCBfTVJNZWRpYVJlbW90
ZUNvbW1hbmRJbmZvICpNUk1lZGlhUmVtb3RlQ29tbWFuZEluZm9SZWY7CiB0eXBlZGVmIHZvaWQg
Kk1STm93UGxheWluZ0NsaWVudFJlZjsKQEAgLTEwMyw4ICsxMDUsMTAgQEAgV1RGX0VYVEVSTl9D
X0JFR0lOCiAKIHZvaWQqIE1STWVkaWFSZW1vdGVBZGRBc3luY0NvbW1hbmRIYW5kbGVyQmxvY2so
TVJNZWRpYVJlbW90ZUFzeW5jQ29tbWFuZEhhbmRsZXJCbG9jayk7CiB2b2lkIE1STWVkaWFSZW1v
dGVSZW1vdmVDb21tYW5kSGFuZGxlckJsb2NrKHZvaWQgKm9ic2VydmVyKTsKLXZvaWQgTVJNZWRp
YVJlbW90ZVNldFN1cHBvcnRlZENvbW1hbmRzKENGQXJyYXlSZWYgY29tbWFuZHMsIE1ST3JpZ2lu
UmVmLCBkaXNwYXRjaF9xdWV1ZV90IHJlcGx5USwgdm9pZCheY29tcGxldGlvbikoTVJNZWRpYVJl
bW90ZUVycm9yIGVycikpOwordm9pZCBNUk1lZGlhUmVtb3RlU2V0U3VwcG9ydGVkQ29tbWFuZHMo
Q0ZBcnJheVJlZiwgTVJPcmlnaW5SZWYsIGRpc3BhdGNoX3F1ZXVlX3QsIHZvaWQoXmNvbXBsZXRp
b24pKE1STWVkaWFSZW1vdGVFcnJvcikpOwordm9pZCBNUk1lZGlhUmVtb3RlR2V0U3VwcG9ydGVk
Q29tbWFuZHNGb3JPcmlnaW4oTVJPcmlnaW5SZWYsIGRpc3BhdGNoX3F1ZXVlX3QsIHZvaWQoXmNv
bXBsZXRpb24pKENGQXJyYXlSZWYpKTsKIHZvaWQgTVJNZWRpYVJlbW90ZVNldE5vd1BsYXlpbmdW
aXNpYmlsaXR5KE1ST3JpZ2luUmVmLCBNUk5vd1BsYXlpbmdDbGllbnRWaXNpYmlsaXR5KTsKK0Jv
b2xlYW4gTVJNZWRpYVJlbW90ZVNlbmRDb21tYW5kVG9BcHAoTVJNZWRpYVJlbW90ZUNvbW1hbmQs
IENGRGljdGlvbmFyeVJlZiwgTVJPcmlnaW5SZWYsIENGU3RyaW5nUmVmLCBNUlNlbmRDb21tYW5k
QXBwT3B0aW9ucywgZGlzcGF0Y2hfcXVldWVfdCwgdm9pZCheY29tcGxldGlvbikoTVJTZW5kQ29t
bWFuZEVycm9yLCBDRkFycmF5UmVmKSk7CiAKICNwcmFnbWEgbWFyayAtIE1ST3JpZ2luCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBmYTZjMjlmNGI0YmFmZjQxYjcwOGYyMjBiNzYwZmM5MmVlNDJkMGExLi5iZDNiYzE2MGQ4YmFm
NDdiNDE2MjI4ODA3NzY1NjAyYjVkMmI0NDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzksNiArMTM5LDEwIEBACiAJCTA3
N0FGMTQzMThGNEIxQkIwMDAxRUQ2MSAvKiBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzdBRjE0MTE4
RjRCMUJCMDAwMUVENjEgLyogU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1hYy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3N0I2NDEzMUI5NEYx
MkUwMDNFOUFENSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc3QjY0MTExQjk0RjEyRTAwM0U5
QUQ1IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDc3QjY0MTcxQjk1RjcwMzAwM0U5QUQ1
IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwNzdCNjQxNTFCOTVGNzAzMDAzRTlBRDUgLyogTWVkaWFQbGF5
YmFja1RhcmdldE1vY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQkwNzgyODk0ODI1QzIzRkU1MDBBN0JBMDMgLyogTWVkaWFNZXRhZGF0YS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0REREVBMkQyNTM4
Q0UwNDAwQTEzMDBDIC8qIE1lZGlhTWV0YWRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwNzgyODk0QTI1QzM2RkNGMDBBN0JBMDMgLyogTWVk
aWFTZXNzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRERERUEyMzI1MzhDRDgwMDBBMTMwMEMgLyogTWVkaWFTZXNzaW9uLmggKi87IH07CisJCTA3
ODI4OTRCMjVDMzZGRUQwMEE3QkEwMyAvKiBNZWRpYUltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRERERUEzMjI1MzhDRTM1MDBBMTMwMEMgLyog
TWVkaWFJbWFnZS5oICovOyB9OworCQkwNzgyODk0QzI1QzM3MDBCMDBBN0JBMDMgLyogTWVkaWFN
ZXRhZGF0YUluaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENERERFQTMwMjUzOENFMUUwMEExMzAwQyAvKiBNZWRpYU1ldGFkYXRhSW5pdC5oICovOyB9
OwogCQkwNzgzMjI4NTE4MDEzRUQ4MDA5OTlFMEMgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc4MzIyODMx
ODAxM0VEODAwOTk5RTBDIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaCAqLzsgfTsKIAkJMDc4
NDYzNDMxNDVCMTUxQTAwQTU4REYxIC8qIEpTVHJhY2tFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc4NDYzNDExNDVCMTUxQTAwQTU4REYxIC8q
IEpTVHJhY2tFdmVudC5oICovOyB9OwogCQkwNzg0NjM4NTE0NUIxQjhFMDBBNThERjEgLyogSlNU
cmFja0N1c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDc4NDYzODQxNDVCMUI4RTAwQTU4REYxIC8qIEpTVHJhY2tDdXN0b20uaCAqLzsgfTsKQEAg
LTMzNzAyLDEwICszMzcwNiwxMyBAQAogCQkJCUU0NDYxM0FEMENENjMzMTAwMEZBREE3NSAvKiBN
ZWRpYUVycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk0RTE5NTkyMjBBMzlEQUJBMDAyMjBGRTUg
LyogTWVkaWFGZWF0dXJlTmFtZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3QTZEMUVDMTQ5MTEz
NzcwMDA1MUQwQyAvKiBNZWRpYUZyYWdtZW50VVJJUGFyc2VyLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkwNzgyODk0QjI1QzM2RkVEMDBBN0JBMDMgLyogTWVkaWFJbWFnZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQ0RGNEI3MUExRTAxRDNEMDAwRTIzNUEyIC8qIE1lZGlhS2V5U2Vzc2lvblR5cGUuaWRs
IGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RGNEI3MjgxRTAzQzU3MzAwRTIzNUEyIC8qIE1lZGlhS2V5
c1JlcXVpcmVtZW50LmlkbCBpbiBIZWFkZXJzICovLAogCQkJCUNERjRCNzE4MUUwMUNCOTEwMEUy
MzVBMiAvKiBNZWRpYUtleXNSZXN0cmljdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RUE4
MDBFMEExOTUxNkUwMEE4RUY1RiAvKiBNZWRpYUxpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3
ODI4OTQ4MjVDMjNGRTUwMEE3QkEwMyAvKiBNZWRpYU1ldGFkYXRhLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwNzgyODk0QzI1QzM3MDBCMDBBN0JBMDMgLyogTWVkaWFNZXRhZGF0YUluaXQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTVFQkI4OTMxMUM3Nzc3RkYwMEM2NUQ0MSAvKiBNZWRpYVBheWxvYWQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTA3RTNERkQxMUE5RTc4NjUwMDc2NENBOCAvKiBNZWRpYVBs
YXliYWNrVGFyZ2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzkyMTY1NTFBQTU2MEFBMDBBM0Mw
NDkgLyogTWVkaWFQbGF5YmFja1RhcmdldENsaWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMzc0
Niw2ICszMzc1Myw3IEBACiAJCQkJMUIxMjREOEQxRDM4MEI3MDAwRUNERkIwIC8qIE1lZGlhU2Ft
cGxlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RCRUFFQUQxOUQ5MkI2QzAwQkVCQTg4
IC8qIE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTdE
Mjc1RTFFQUM1Nzk4MDBCRjAxRTcgLyogTWVkaWFTZWxlY3Rpb25PcHRpb24uaCBpbiBIZWFkZXJz
ICovLAorCQkJCTA3ODI4OTRBMjVDMzZGQ0YwMEE3QkEwMyAvKiBNZWRpYVNlc3Npb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxNkVDQUU1MjVCNThDQzQwMEIzNERBNSAvKiBNZWRpYVNlc3Npb25H
cm91cElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQTk1OTNGMjQxMkJBRTAwMDkx
MEVFRiAvKiBNZWRpYVNlc3Npb25IZWxwZXJJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNDQ2
MEEyMjQxMjk5NDUwMDgxNEJFNyAvKiBNZWRpYVNlc3Npb25JZGVudGlmaWVyLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGE2YTU0
YTYxMTQ1NWU0YmZhOTllODZmNjAzYzUyOTBkZjcwMGQxMDkuLjE1MjY2OTIzN2QzZWMwNGVlNzU4
NGVkYjE5NTMwNDVlZDk2YWZkNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTc1MDUsNiArNzUwNSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlk
UmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vCiAg
ICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBjb21tYW5kKTsKIAogICAgIFVzZXJHZXN0dXJl
SW5kaWNhdG9yIHJlbW90ZUNvbnRyb2xVc2VyR2VzdHVyZShQcm9jZXNzaW5nVXNlckdlc3R1cmUs
ICZkb2N1bWVudCgpKTsKKyAgICBkb3VibGUgb2Zmc2V0ID0gMTA7CiAgICAgc3dpdGNoIChjb21t
YW5kKSB7CiAgICAgY2FzZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheUNvbW1hbmQ6CiAgICAg
ICAgIHBsYXkoKTsKQEAgLTc1MjYsNiArNzUyNywxNiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVt
bwogICAgIGNhc2UgUGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZFNlZWtpbmdGb3J3YXJkQ29tbWFu
ZDoKICAgICAgICAgZW5kU2Nhbm5pbmcoKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEZvcndhcmRDb21tYW5kOgorICAgICAgICBpZiAoYXJndW1l
bnQpCisgICAgICAgICAgICBvZmZzZXQgPSBhcmd1bWVudC0+YXNEb3VibGU7CisgICAgICAgIGhh
bmRsZVNlZWtUb1BsYXliYWNrUG9zaXRpb24ob2Zmc2V0KTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEJhY2t3YXJkQ29tbWFuZDoKKyAgICAgICAg
aWYgKGFyZ3VtZW50KQorICAgICAgICAgICAgb2Zmc2V0ID0gYXJndW1lbnQtPmFzRG91YmxlOwor
ICAgICAgICBoYW5kbGVTZWVrVG9QbGF5YmFja1Bvc2l0aW9uKDAgLSBvZmZzZXQpOworICAgICAg
ICBicmVhazsKICAgICBjYXNlIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTZWVrVG9QbGF5YmFja1Bv
c2l0aW9uQ29tbWFuZDoKICAgICAgICAgQVNTRVJUKGFyZ3VtZW50KTsKICAgICAgICAgaWYgKGFy
Z3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNz
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKaW5k
ZXggNThkNDJlY2U0MTI2ZDljNmIzNDE4ODBjMGRhNzAzM2E0OTBjZTA1Yy4uNGFlYmJkNmFkNzhm
NThmMzI5MDUzZTA3MmZkNTBiMWZlN2M0MjBjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01l
ZGlhRWxlbWVudFNlc3Npb24uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTU0LDYgKzU0LDEyIEBACiAjaW5jbHVkZSAiU291cmNlQnVm
ZmVyLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCisjaWYgRU5BQkxF
KE1FRElBX1NFU1NJT04pCisjaW5jbHVkZSAiTWVkaWFNZXRhZGF0YS5oIgorI2luY2x1ZGUgIk1l
ZGlhU2Vzc2lvbi5oIgorI2luY2x1ZGUgIk5hdmlnYXRvck1lZGlhU2Vzc2lvbi5oIgorI2VuZGlm
CisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgIkF1ZGlvU2Vzc2lvbi5oIgog
I2luY2x1ZGUgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgpAQCAtMTAyMSw2ICsxMDI3LDcw
IEBAIGJvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6YWxsb3dzUGxheWJhY2tDb250cm9sc0ZvckF1
dG9wbGF5aW5nQXVkaW8oKSBjb25zdAogICAgIHJldHVybiBwYWdlICYmIHBhZ2UtPmFsbG93c1Bs
YXliYWNrQ29udHJvbHNGb3JBdXRvcGxheWluZ0F1ZGlvKCk7CiB9CiAKKyNpZiBFTkFCTEUoTUVE
SUFfU0VTU0lPTikKK3ZvaWQgTWVkaWFFbGVtZW50U2Vzc2lvbjo6ZGlkUmVjZWl2ZVJlbW90ZUNv
bnRyb2xDb21tYW5kKFJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21tYW5kVHlwZSwgY29uc3Qg
UmVtb3RlQ29tbWFuZEFyZ3VtZW50KiBhcmd1bWVudCkKK3sKKyAgICBhdXRvKiB3aW5kb3cgPSBt
X2VsZW1lbnQuZG9jdW1lbnQoKS5kb21XaW5kb3coKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gd2lu
ZG93ID8gJk5hdmlnYXRvck1lZGlhU2Vzc2lvbjo6bWVkaWFTZXNzaW9uKHdpbmRvdy0+bmF2aWdh
dG9yKCkpIDogbnVsbHB0cjsKKyAgICBpZiAoIXNlc3Npb24gfHwgIXNlc3Npb24tPmhhc0FjdGl2
ZUFjdGlvbkhhbmRsZXJzKCkpIHsKKyAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OmRpZFJl
Y2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChjb21tYW5kVHlwZSwgYXJndW1lbnQpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgTWVkaWFTZXNzaW9uQWN0aW9uRGV0YWlscyBhY3Rpb25E
ZXRhaWxzOworICAgIHN3aXRjaCAoY29tbWFuZFR5cGUpIHsKKyAgICBjYXNlIE5vQ29tbWFuZDoK
KyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgUGxheUNvbW1hbmQ6CisgICAgICAgIGFjdGlvbkRl
dGFpbHMuYWN0aW9uID0gTWVkaWFTZXNzaW9uQWN0aW9uOjpQbGF5OworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFBhdXNlQ29tbWFuZDoKKyAgICAgICAgYWN0aW9uRGV0YWlscy5hY3Rpb24gPSBN
ZWRpYVNlc3Npb25BY3Rpb246OlBhdXNlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0b3BD
b21tYW5kOgorICAgICAgICBhY3Rpb25EZXRhaWxzLmFjdGlvbiA9IE1lZGlhU2Vzc2lvbkFjdGlv
bjo6U3RvcDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUb2dnbGVQbGF5UGF1c2VDb21tYW5k
OgorICAgICAgICBhY3Rpb25EZXRhaWxzLmFjdGlvbiA9IG1fZWxlbWVudC5wYXVzZWQoKSA/IE1l
ZGlhU2Vzc2lvbkFjdGlvbjo6UGxheSA6IE1lZGlhU2Vzc2lvbkFjdGlvbjo6UGF1c2U7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgU2Vla1RvUGxheWJhY2tQb3NpdGlvbkNvbW1hbmQ6CisgICAg
ICAgIEFTU0VSVChhcmd1bWVudCk7CisgICAgICAgIGlmICghYXJndW1lbnQpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIGFjdGlvbkRldGFpbHMuYWN0aW9uID0gTWVkaWFTZXNzaW9uQWN0
aW9uOjpTZWVrdG87CisgICAgICAgIGFjdGlvbkRldGFpbHMuc2Vla1RpbWUgPSBhcmd1bWVudC0+
YXNEb3VibGU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2tpcEZvcndhcmRDb21tYW5kOgor
ICAgICAgICBpZiAoYXJndW1lbnQpCisgICAgICAgICAgICBhY3Rpb25EZXRhaWxzLnNlZWtPZmZz
ZXQgPSBhcmd1bWVudC0+YXNEb3VibGU7CisgICAgICAgIGFjdGlvbkRldGFpbHMuYWN0aW9uID0g
TWVkaWFTZXNzaW9uQWN0aW9uOjpTZWVrZm9yd2FyZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBTa2lwQmFja3dhcmRDb21tYW5kOgorICAgICAgICBpZiAoYXJndW1lbnQpCisgICAgICAgICAg
ICBhY3Rpb25EZXRhaWxzLnNlZWtPZmZzZXQgPSBhcmd1bWVudC0+YXNEb3VibGU7CisgICAgICAg
IGFjdGlvbkRldGFpbHMuYWN0aW9uID0gTWVkaWFTZXNzaW9uQWN0aW9uOjpTZWVrYmFja3dhcmQ7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTmV4dFRyYWNrQ29tbWFuZDoKKyAgICAgICAgYWN0
aW9uRGV0YWlscy5hY3Rpb24gPSBNZWRpYVNlc3Npb25BY3Rpb246Ok5leHR0cmFjazsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBQcmV2aW91c1RyYWNrQ29tbWFuZDoKKyAgICAgICAgYWN0aW9u
RGV0YWlscy5hY3Rpb24gPSBNZWRpYVNlc3Npb25BY3Rpb246OlByZXZpb3VzdHJhY2s7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQmVnaW5TZWVraW5nQmFja3dhcmRDb21tYW5kOgorICAgIGNh
c2UgRW5kU2Vla2luZ0JhY2t3YXJkQ29tbWFuZDoKKyAgICBjYXNlIEJlZ2luU2Vla2luZ0Zvcndh
cmRDb21tYW5kOgorICAgIGNhc2UgRW5kU2Vla2luZ0ZvcndhcmRDb21tYW5kOgorICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIAorICAgIGlm
IChhdXRvIGhhbmRsZXIgPSBzZXNzaW9uLT5oYW5kbGVyRm9yQWN0aW9uKGFjdGlvbkRldGFpbHMu
YWN0aW9uKSkKKyAgICAgICAgaGFuZGxlci0+aGFuZGxlRXZlbnQoYWN0aW9uRGV0YWlscyk7Cisg
ICAgZWxzZQorICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJJZ25vcmluZyBjb21t
YW5kLCBubyBhY3Rpb24gaGFuZGxlciByZWdpc3RlcmVkIGZvciAiLCBhY3Rpb25EZXRhaWxzLmFj
dGlvbik7Cit9CisjZW5kaWYKKwogT3B0aW9uYWw8Tm93UGxheWluZ0luZm8+IE1lZGlhRWxlbWVu
dFNlc3Npb246Om5vd1BsYXlpbmdJbmZvKCkgY29uc3QKIHsKICAgICBhdXRvKiBwYWdlID0gbV9l
bGVtZW50LmRvY3VtZW50KCkucGFnZSgpOwpAQCAtMTAzMiw3ICsxMTAyLDE5IEBAIE9wdGlvbmFs
PE5vd1BsYXlpbmdJbmZvPiBNZWRpYUVsZW1lbnRTZXNzaW9uOjpub3dQbGF5aW5nSW5mbygpIGNv
bnN0CiAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKGN1cnJlbnRUaW1lKSB8fCAhc3VwcG9ydHNTZWVr
aW5nKQogICAgICAgICBjdXJyZW50VGltZSA9IE1lZGlhUGxheWVyOjppbnZhbGlkVGltZSgpOwog
Ci0gICAgcmV0dXJuIE5vd1BsYXlpbmdJbmZvIHsgbV9lbGVtZW50Lm1lZGlhU2Vzc2lvblRpdGxl
KCksIG1fZWxlbWVudC5zb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIoKSwgZHVyYXRpb24sIGN1
cnJlbnRUaW1lLCBzdXBwb3J0c1NlZWtpbmcsIG1fZWxlbWVudC5tZWRpYVNlc3Npb25VbmlxdWVJ
ZGVudGlmaWVyKCksIGlzUGxheWluZywgYWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0
eSB9OworICAgIFN0cmluZyB0aXRsZTsKKyAgICBTdHJpbmcgYXJ0aXN0OworICAgIFN0cmluZyBh
bGJ1bTsKKyAgICBhdXRvKiB3aW5kb3cgPSBtX2VsZW1lbnQuZG9jdW1lbnQoKS5kb21XaW5kb3co
KTsKKyAgICBhdXRvKiBzZXNzaW9uTWV0YWRhdGEgPSB3aW5kb3cgPyBOYXZpZ2F0b3JNZWRpYVNl
c3Npb246Om1lZGlhU2Vzc2lvbih3aW5kb3ctPm5hdmlnYXRvcigpKS5tZXRhZGF0YSgpIDogbnVs
bHB0cjsKKyAgICBpZiAoc2Vzc2lvbk1ldGFkYXRhKSB7CisgICAgICAgIHRpdGxlID0gc2Vzc2lv
bk1ldGFkYXRhLT50aXRsZSgpOworICAgICAgICBhcnRpc3QgPSBzZXNzaW9uTWV0YWRhdGEtPmFy
dGlzdCgpOworICAgICAgICBhbGJ1bSA9IHNlc3Npb25NZXRhZGF0YS0+YWxidW0oKTsKKyAgICB9
IGVsc2UKKyAgICAgICAgdGl0bGUgPSBtX2VsZW1lbnQubWVkaWFTZXNzaW9uVGl0bGUoKTsKKwor
ICAgIHJldHVybiBOb3dQbGF5aW5nSW5mbyB7IFdURk1vdmUodGl0bGUpLCBXVEZNb3ZlKGFydGlz
dCksIFdURk1vdmUoYWxidW0pLCBtX2VsZW1lbnQuc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVy
KCksIGR1cmF0aW9uLCBjdXJyZW50VGltZSwgc3VwcG9ydHNTZWVraW5nLCBtX2VsZW1lbnQubWVk
aWFTZXNzaW9uVW5pcXVlSWRlbnRpZmllcigpLCBpc1BsYXlpbmcsIGFsbG93c05vd1BsYXlpbmdD
b250cm9sc1Zpc2liaWxpdHkgfTsKIH0KIAogdm9pZCBNZWRpYUVsZW1lbnRTZXNzaW9uOjp1cGRh
dGVNZWRpYVVzYWdlSWZDaGFuZ2VkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TWVkaWFFbGVtZW50U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRT
ZXNzaW9uLmgKaW5kZXggMWFiNDYyZjQ0NjFhNDRmY2NlY2VkOWZiZDEyM2I2ZTc1MmI3NzQyMy4u
ZDcxZTRkYmI0ZjAzYzQzNmVmMzRlYzk0Y2VlNDcwMmFlYTJhMDFiZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE0LTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE0LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzQsNiArMTc0LDEwIEBAIHB1Ymxp
YzoKICAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAi
TWVkaWFFbGVtZW50U2Vzc2lvbiI7IH0KICNlbmRpZgogCisjaWYgRU5BQkxFKE1FRElBX1NFU1NJ
T04pCisgICAgdm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUmVtb3RlQ29udHJv
bENvbW1hbmRUeXBlLCBjb25zdCBSZW1vdGVDb21tYW5kQXJndW1lbnQqID0gbnVsbHB0cikgZmlu
YWw7CisjZW5kaWYKKwogcHJpdmF0ZToKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19U
QVJHRVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCA2NzAxYTJkZTA3NDAyODQz
NWE0YmY3MzZiZmI2ZmYyOWEwNDhmZGI1Li4xYWQ0M2ZlNTM2YWQzY2FjYmQyYzRlN2UwNGIxNTAy
NjdlOWU4YjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTEwMSw3ICsxMDEs
NiBAQCBjbGFzcyBIVE1MTWVkaWFFbGVtZW50OwogY2xhc3MgSFRNTFZpZGVvRWxlbWVudDsKIGNs
YXNzIEhpdFRlc3RSZXN1bHQ7CiBjbGFzcyBJbnRSZWN0OwotY2xhc3MgTWVkaWFTZXNzaW9uTWV0
YWRhdGE7CiBjbGFzcyBOYXZpZ2F0aW9uQWN0aW9uOwogY2xhc3MgTm9kZTsKIGNsYXNzIFBhZ2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVu
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmNw
cAppbmRleCBhZjM0ZDUwZDNhNWE4YTY1ZTViYzk1ZTg3NzUzMWE3YWJmNDQ3OTY3Li41YjJhOTFm
MmM1YjQ4MGZmZjVjZDg0MjI5NjMxMjI1ODQ4NTE1Y2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5jcHAKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsNCArMzcsMjUgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZUNvbW1hbmRMaXN0ZW5lcj4gUmVtb3RlQ29tbWFuZExpc3RlbmVy
OjpjcmVhdGUoUmVtb3RlQ29tbWEKIAogI2VuZGlmCiAKK3ZvaWQgUmVtb3RlQ29tbWFuZExpc3Rl
bmVyOjpzY2hlZHVsZVN1cHBvcnRlZENvbW1hbmRzVXBkYXRlKCkKK3sKKyAgICBpZiAoIW1fdXBk
YXRlQ29tbWFuZHNUYXNrLmhhc1BlbmRpbmdUYXNrKCkpIHsKKyAgICAgICAgbV91cGRhdGVDb21t
YW5kc1Rhc2suc2NoZWR1bGVUYXNrKFt0aGlzXSAoKSAgeworICAgICAgICAgICAgdXBkYXRlU3Vw
cG9ydGVkQ29tbWFuZHMoKTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCit2b2lkIFJlbW90ZUNv
bW1hbmRMaXN0ZW5lcjo6YWRkU3VwcG9ydGVkQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlIGNvbW1hbmQpCit7CisgICAgbV9yZWdpc3RlcmVkQ29t
bWFuZHMuYWRkKGNvbW1hbmQpOworICAgIHNjaGVkdWxlU3VwcG9ydGVkQ29tbWFuZHNVcGRhdGUo
KTsKK30KKwordm9pZCBSZW1vdGVDb21tYW5kTGlzdGVuZXI6OnJlbW92ZVN1cHBvcnRlZENvbW1h
bmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21tYW5k
KQoreworICAgIG1fcmVnaXN0ZXJlZENvbW1hbmRzLnJlbW92ZShjb21tYW5kKTsKKyAgICBzY2hl
ZHVsZVN1cHBvcnRlZENvbW1hbmRzVXBkYXRlKCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmgKaW5kZXggMmI0MzRhZWY2ZTc1ZWEz
NTBjODg4NWYwZWVmNzBjNTk2ZTAxMWU5Ny4uNjdhY2JhYTg2NGQxMTZiZjAyMzExYjE0MzQ4ODAz
NGJhMDZjOTZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29t
bWFuZExpc3RlbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFu
ZExpc3RlbmVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBSZW1vdGVDb21tYW5kTGlzdGVuZXJf
aAogI2RlZmluZSBSZW1vdGVDb21tYW5kTGlzdGVuZXJfaAogCisjaW5jbHVkZSAiRGVmZXJyYWJs
ZVRhc2suaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC00NSwxMiArNDYsMjAgQEAgcHVibGljOgogICAgIFJlbW90ZUNvbW1hbmRM
aXN0ZW5lcihSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQmIGNsaWVudCkgOiBtX2NsaWVudChj
bGllbnQpIHsgfQogICAgIHZpcnR1YWwgflJlbW90ZUNvbW1hbmRMaXN0ZW5lcigpID0gZGVmYXVs
dDsKIAorICAgIHZvaWQgYWRkU3VwcG9ydGVkQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlKTsKKyAgICB2b2lkIHJlbW92ZVN1cHBvcnRlZENvbW1h
bmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSk7CiAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZVN1cHBvcnRlZENvbW1hbmRzKCkgeyB9CisgICAgdm9pZCBzY2hl
ZHVsZVN1cHBvcnRlZENvbW1hbmRzVXBkYXRlKCk7CiAKICAgICBSZW1vdGVDb21tYW5kTGlzdGVu
ZXJDbGllbnQmIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CiAKIHByb3RlY3Rl
ZDoKICAgICBSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQmIG1fY2xpZW50OworCisgICAgdXNp
bmcgUmVtb3RlQ29tbWFuZHNTZXQgPSBIYXNoU2V0PFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1v
dGVDb250cm9sQ29tbWFuZFR5cGUsIFdURjo6SW50SGFzaDxQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlPj47CisgICAgUmVtb3Rl
Q29tbWFuZHNTZXQgbV9yZWdpc3RlcmVkQ29tbWFuZHM7CisKKyAgICBEZWZlcnJhYmxlVGFzazxU
aW1lcj4gbV91cGRhdGVDb21tYW5kc1Rhc2s7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaAppbmRleCA2N2U5MWUyMmRmOGYwMGRiNDQ1
ODJlOTgwZmI2MjJhOGEwNzg5MGU1Li43NTQ4MjdhYTYwZjI5NTA3ZGUzMTdhYmRjNzcyN2YxYTE4
ZjRkYmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5
aW5nSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJ
bmZvLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMzIsNiArMzIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBOb3dQbGF5
aW5nSW5mbyB7CiAgICAgU3RyaW5nIHRpdGxlOworICAgIFN0cmluZyBhcnRpc3Q7CisgICAgU3Ry
aW5nIGFsYnVtOwogICAgIFN0cmluZyBzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXI7CiAgICAg
ZG91YmxlIGR1cmF0aW9uIHsgMCB9OwogICAgIGRvdWJsZSBjdXJyZW50VGltZSB7IDAgfTsKQEAg
LTU1LDYgKzU3LDE0IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGluZSBPcHRpb25hbDxO
b3dQbGF5aW5nSW5mbz4gTm93UGxheWluZ0luZm86OmRlY29kZShECiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZSh0aXRsZSkpCiAgICAgICAgIHJldHVybiB7IH07CiAKKyAgICBTdHJpbmcgYXJ0aXN0
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXJ0aXN0KSkKKyAgICAgICAgcmV0dXJuIHsgfTsK
KworICAgIFN0cmluZyBhbGJ1bTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFsYnVtKSkKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKwogICAgIFN0cmluZyBzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZp
ZXI7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIp
KQogICAgICAgICByZXR1cm4geyB9OwpAQCAtODMsNyArOTMsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBpbmxpbmUgT3B0aW9uYWw8Tm93UGxheWluZ0luZm8+IE5vd1BsYXlpbmdJbmZvOjpk
ZWNvZGUoRAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWxsb3dzTm93UGxheWluZ0NvbnRyb2xz
VmlzaWJpbGl0eSkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICByZXR1cm4gTm93UGxheWlu
Z0luZm8geyBXVEZNb3ZlKHRpdGxlKSwgV1RGTW92ZShzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZp
ZXIpLCBkdXJhdGlvbiwgY3VycmVudFRpbWUsIHN1cHBvcnRzU2Vla2luZywgdW5pcXVlSWRlbnRp
ZmllciwgaXNQbGF5aW5nLCBhbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5IH07Cisg
ICAgcmV0dXJuIE5vd1BsYXlpbmdJbmZvIHsgV1RGTW92ZSh0aXRsZSksIFdURk1vdmUoYXJ0aXN0
KSwgV1RGTW92ZShhbGJ1bSksIFdURk1vdmUoc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKSwg
ZHVyYXRpb24sIGN1cnJlbnRUaW1lLCBzdXBwb3J0c1NlZWtpbmcsIHVuaXF1ZUlkZW50aWZpZXIs
IGlzUGxheWluZywgYWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSB9OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAKaW5kZXggOTI2OWFkMzkzZTYyMDU5MWM4
MGI0MjE4ZjU5ODQ0NTlmZWY5ZmJhMy4uNDM3YzZkMGE1MTY2NDU5MGE0NjliYWQxYmI1ODIyYzE5
ODJlMTk0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZv
cm1NZWRpYVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bs
YXRmb3JtTWVkaWFTZXNzaW9uLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTQtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTkzLDYgKzkzLDEwIEBAIFN0cmluZyBjb252ZXJ0
RW51bWVyYXRpb25Ub1N0cmluZyhQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENv
bW1hbmRUeXBlCiAgICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJCZWdpblNlZWtpbmdG
b3J3YXJkQ29tbWFuZCIpLAogICAgICAgICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiRW5kU2Vl
a2luZ0ZvcndhcmRDb21tYW5kIiksCiAgICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJT
ZWVrVG9QbGF5YmFja1Bvc2l0aW9uQ29tbWFuZCIpLAorICAgICAgICBNQUtFX1NUQVRJQ19TVFJJ
TkdfSU1QTCgiU2tpcEZvcndhcmRDb21tYW5kIiksCisgICAgICAgIE1BS0VfU1RBVElDX1NUUklO
R19JTVBMKCJTa2lwQmFja3dhcmRDb21tYW5kIiksCisgICAgICAgIE1BS0VfU1RBVElDX1NUUklO
R19JTVBMKCJOZXh0VHJhY2tDb21tYW5kIiksCisgICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19J
TVBMKCJQcmV2aW91c1RyYWNrQ29tbWFuZCIpLAogICAgIH07CiAgICAgc3RhdGljX2Fzc2VydCgh
c3RhdGljX2Nhc3Q8c2l6ZV90PihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9Db21tYW5kKSwgIlBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpOb0NvbW1hbmQgaXMgbm90IDAgYXMgZXhwZWN0ZWQiKTsKICAg
ICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oUGxhdGZvcm1NZWRpYVNlc3Npb246
OlBsYXlDb21tYW5kKSA9PSAxLCAiUGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXlDb21tYW5kIGlz
IG5vdCAxIGFzIGV4cGVjdGVkIik7CkBAIC0xMDQsNiArMTA4LDEwIEBAIFN0cmluZyBjb252ZXJ0
RW51bWVyYXRpb25Ub1N0cmluZyhQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENv
bW1hbmRUeXBlCiAgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpCZWdpblNlZWtpbmdGb3J3YXJkQ29tbWFuZCkgPT0gNywgIlBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpCZWdpblNlZWtpbmdGb3J3YXJkQ29tbWFuZCBpcyBub3QgNyBhcyBleHBl
Y3RlZCIpOwogICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6RW5kU2Vla2luZ0ZvcndhcmRDb21tYW5kKSA9PSA4LCAiUGxhdGZvcm1NZWRp
YVNlc3Npb246OkVuZFNlZWtpbmdGb3J3YXJkQ29tbWFuZCBpcyBub3QgOCBhcyBleHBlY3RlZCIp
OwogICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6U2Vla1RvUGxheWJhY2tQb3NpdGlvbkNvbW1hbmQpID09IDksICJQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6U2Vla1RvUGxheWJhY2tQb3NpdGlvbkNvbW1hbmQgaXMgbm90IDkgYXMgZXhwZWN0
ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oUGxhdGZvcm1NZWRp
YVNlc3Npb246OlNraXBGb3J3YXJkQ29tbWFuZCkgPT0gMTAsICJQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6U2tpcEZvcndhcmRDb21tYW5kIGlzIG5vdCAxMCBhcyBleHBlY3RlZCIpOworICAgIHN0YXRp
Y19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEJh
Y2t3YXJkQ29tbWFuZCkgPT0gMTEsICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEJhY2t3YXJk
Q29tbWFuZCBpcyBub3QgMTEgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRp
Y19jYXN0PHNpemVfdD4oUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5leHRUcmFja0NvbW1hbmQpID09
IDEyLCAiUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5leHRUcmFja0NvbW1hbmQgaXMgbm90IDEyIGFz
IGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpQcmV2aW91c1RyYWNrQ29tbWFuZCkgPT0gMTMsICJQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6UHJldmlvdXNUcmFja0NvbW1hbmQgaXMgbm90IDEzIGFzIGV4cGVjdGVkIik7
CiAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVfdD4oY29tbWFuZCkgPCBXVEZfQVJSQVlfTEVO
R1RIKHZhbHVlcykpOwogICAgIHJldHVybiB2YWx1ZXNbc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb21t
YW5kKV07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0
Zm9ybU1lZGlhU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZv
cm1NZWRpYVNlc3Npb24uaAppbmRleCBjOTgxMjEzZDVlOTA3NmU0MmViOTBkYjRmM2ExMTU2YjUy
ZjRiNjI2Li5kOTUyZmE5NWIzZjI3MzcwZTYwYjRjNjkxMmU5NTFhNWQ2OGQwZGIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9u
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0xMzAsOSArMTMwLDEzIEBAIHB1YmxpYzoKICAgICAgICAgQmVnaW5TZWVraW5nRm9y
d2FyZENvbW1hbmQsCiAgICAgICAgIEVuZFNlZWtpbmdGb3J3YXJkQ29tbWFuZCwKICAgICAgICAg
U2Vla1RvUGxheWJhY2tQb3NpdGlvbkNvbW1hbmQsCisgICAgICAgIFNraXBGb3J3YXJkQ29tbWFu
ZCwKKyAgICAgICAgU2tpcEJhY2t3YXJkQ29tbWFuZCwKKyAgICAgICAgTmV4dFRyYWNrQ29tbWFu
ZCwKKyAgICAgICAgUHJldmlvdXNUcmFja0NvbW1hbmQsCiAgICAgfTsKICAgICBib29sIGNhblJl
Y2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZHMoKSBjb25zdDsKLSAgICB2b2lkIGRpZFJlY2VpdmVS
ZW1vdGVDb250cm9sQ29tbWFuZChSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIGNvbnN0IFJlbW90
ZUNvbW1hbmRBcmd1bWVudCogYXJndW1lbnQgPSBudWxscHRyKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwg
Y29uc3QgUmVtb3RlQ29tbWFuZEFyZ3VtZW50KiA9IG51bGxwdHIpOwogICAgIGJvb2wgc3VwcG9y
dHNTZWVraW5nKCkgY29uc3Q7CiAKICAgICBlbnVtIERpc3BsYXlUeXBlIDogdWludDhfdCB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlci5oCmluZGV4IDFmY2IzMzQyNGYwYjU1ZmQyMjA5YjYzNGNlZGRlZTgz
OWM0ZDdlZDYuLjIzZGQ5OWM2ZGVmMmZmNGRhZWY4N2EwNTA5OGI3NzVhODA3ZGNhMTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTUyLDYgKzE1Miw5IEBAIHB1YmxpYzoKICAgICBib29s
IGlzSW50ZXJydXB0ZWQoKSBjb25zdCB7IHJldHVybiBtX2ludGVycnVwdGVkOyB9CiAgICAgYm9v
bCBoYXNOb1Nlc3Npb24oKSBjb25zdDsKIAorICAgIHZpcnR1YWwgdm9pZCBhZGRTdXBwb3J0ZWRD
b21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUpIHsg
fTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlU3VwcG9ydGVkQ29tbWFuZChQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlKSB7IH07CisKIHByb3RlY3RlZDoKICAg
ICBmcmllbmQgY2xhc3MgUGxhdGZvcm1NZWRpYVNlc3Npb247CiAgICAgUGxhdGZvcm1NZWRpYVNl
c3Npb25NYW5hZ2VyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5oCmluZGV4IDQxYmEyZDUw
YzhhYTZhYWJhOTk2Mjc1OTVlZTA0MmRlNDZiNzJhMmUuLmQ5ZTM3YWE4MzdkNjU4YTk3MmU2YmI0
MzI2NmM2Y2RkNjBkZmE5NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg0LDYgKzg0
LDkgQEAgcHJvdGVjdGVkOgogCiAgICAgR2VuZXJpY1Rhc2tRdWV1ZTxUaW1lcj4mIHRhc2tRdWV1
ZSgpIHsgcmV0dXJuIG1fdGFza1F1ZXVlOyB9CiAKKyAgICB2b2lkIGFkZFN1cHBvcnRlZENvbW1h
bmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSkgZmluYWw7
CisgICAgdm9pZCByZW1vdmVTdXBwb3J0ZWRDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpS
ZW1vdGVDb250cm9sQ29tbWFuZFR5cGUpIGZpbmFsOworCiBwcml2YXRlOgogI2lmICFSRUxFQVNF
X0xPR19ESVNBQkxFRAogICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuICJNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EiOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29j
b2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25N
YW5hZ2VyQ29jb2EubW0KaW5kZXggMDZmZmZlNzA0NDZlODFiYzExYmVlNmUzZTlkM2E4NjZiZjky
NzdjNy4uZDM0ZmM5MGQ3YWE4YjY0MDgwNzlhMzE0ODhhYjAyZjgwYjdmMjg5NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdl
ckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE1Myw2ICsxNTMsOSBAQCB2b2lkIE1lZGlhU2Vz
c2lvbk1hbmFnZXJDb2NvYTo6cHJlcGFyZVRvU2VuZFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
KCkKIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpzY2hlZHVsZVNlc3Npb25TdGF0dXNV
cGRhdGUoKQogewogICAgIG1fdGFza1F1ZXVlLmVucXVldWVUYXNrKFt0aGlzXSAoKSBtdXRhYmxl
IHsKKyAgICAgICAgaWYgKG1fcmVtb3RlQ29tbWFuZExpc3RlbmVyKQorICAgICAgICAgICAgbV9y
ZW1vdGVDb21tYW5kTGlzdGVuZXItPnVwZGF0ZVN1cHBvcnRlZENvbW1hbmRzKCk7CisKICAgICAg
ICAgdXBkYXRlTm93UGxheWluZ0luZm8oKTsKIAogICAgICAgICBmb3JFYWNoU2Vzc2lvbihbXSAo
YXV0byYgc2Vzc2lvbikgewpAQCAtMjMyLDEwICsyMzUsMjMgQEAgdm9pZCBNZWRpYVNlc3Npb25N
YW5hZ2VyQ29jb2E6OmNsaWVudENoYXJhY3RlcmlzdGljc0NoYW5nZWQoUGxhdGZvcm1NZWRpYVNl
c3Npb24KIAogdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNlc3Npb25DYW5Qcm9kdWNl
QXVkaW9DaGFuZ2VkKCkKIHsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwogICAgIFBs
YXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbkNhblByb2R1Y2VBdWRpb0NoYW5nZWQo
KTsKICAgICBzY2hlZHVsZVNlc3Npb25TdGF0dXNVcGRhdGUoKTsKIH0KIAordm9pZCBNZWRpYVNl
c3Npb25NYW5hZ2VyQ29jb2E6OmFkZFN1cHBvcnRlZENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Np
b246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21tYW5kKQoreworICAgIGlmIChtX3JlbW90
ZUNvbW1hbmRMaXN0ZW5lcikKKyAgICAgICAgbV9yZW1vdGVDb21tYW5kTGlzdGVuZXItPmFkZFN1
cHBvcnRlZENvbW1hbmQoY29tbWFuZCk7Cit9CisKK3ZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlckNv
Y29hOjpyZW1vdmVTdXBwb3J0ZWRDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVD
b250cm9sQ29tbWFuZFR5cGUgY29tbWFuZCkKK3sKKyAgICBpZiAobV9yZW1vdGVDb21tYW5kTGlz
dGVuZXIpCisgICAgICAgIG1fcmVtb3RlQ29tbWFuZExpc3RlbmVyLT5yZW1vdmVTdXBwb3J0ZWRD
b21tYW5kKGNvbW1hbmQpOworfQorCiB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6Y2xl
YXJOb3dQbGF5aW5nSW5mbygpCiB7CiAgICAgaWYgKGNhbkxvYWRfTWVkaWFSZW1vdGVfTVJNZWRp
YVJlbW90ZVNldE5vd1BsYXlpbmdWaXNpYmlsaXR5KCkpCkBAIC0yNjAsNiArMjc2LDEyIEBAIHZv
aWQgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyhib29sIHNldEFz
Tm93UGxheWluZ0FwcGxpY2F0aW9uCiAKICAgICBhdXRvIGluZm8gPSBhZG9wdENGKENGRGljdGlv
bmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgNCwgJmtDRlR5cGVEaWN0aW9u
YXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogCisg
ICAgaWYgKCFub3dQbGF5aW5nSW5mby5hcnRpc3QuaXNFbXB0eSgpKQorICAgICAgICBDRkRpY3Rp
b25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0
aXN0LCBub3dQbGF5aW5nSW5mby5hcnRpc3QuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisKKyAg
ICBpZiAoIW5vd1BsYXlpbmdJbmZvLmFsYnVtLmlzRW1wdHkoKSkKKyAgICAgICAgQ0ZEaWN0aW9u
YXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FsYnVt
LCBub3dQbGF5aW5nSW5mby5hbGJ1bS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKwogICAgIGlm
ICghbm93UGxheWluZ0luZm8udGl0bGUuaXNFbXB0eSgpKQogICAgICAgICBDRkRpY3Rpb25hcnlT
ZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvVGl0bGUsIG5v
d1BsYXlpbmdJbmZvLnRpdGxlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTWVkaWFSZW1vdGVTb2Z0TGluay5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL01lZGlhUmVtb3RlU29mdExpbmsuaAppbmRleCA4YjVj
ZDIzZmIwMmFhMjY0NjYwZWRmMzgxNGU3N2ZiODYyZmQ1MGM4Li4wYWU4M2RkMDIyOTlhMmY5NmIy
MTc3NDgyYjNjNzcyYmI2OTBkMDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvTWVkaWFSZW1vdGVTb2Z0TGluay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9NZWRpYVJlbW90ZVNvZnRMaW5rLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTgsNiArNTgsMTQgQEAgU09GVF9MSU5LX0ZVTkNU
SU9OX01BWV9GQUlMX0ZPUl9IRUFERVIoV2ViQ29yZSwgTWVkaWFSZW1vdGUsIE1STWVkaWFSZW1v
dGVTZXRQYXIKICNkZWZpbmUgTVJNZWRpYVJlbW90ZVNldFBhcmVudEFwcGxpY2F0aW9uIHNvZnRM
aW5rX01lZGlhUmVtb3RlX01STWVkaWFSZW1vdGVTZXRQYXJlbnRBcHBsaWNhdGlvbgogU09GVF9M
SU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoV2ViQ29yZSwgTWVkaWFSZW1vdGUsIGtNUk1lZGlhUmVt
b3RlTm93UGxheWluZ0luZm9UaXRsZSwgQ0ZTdHJpbmdSZWYpOwogI2RlZmluZSBrTVJNZWRpYVJl
bW90ZU5vd1BsYXlpbmdJbmZvVGl0bGUgZ2V0X01lZGlhUmVtb3RlX2tNUk1lZGlhUmVtb3RlTm93
UGxheWluZ0luZm9UaXRsZSgpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihXZWJDb3Jl
LCBNZWRpYVJlbW90ZSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydGlzdCwgQ0ZTdHJp
bmdSZWYpOworI2RlZmluZSBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0aXN0IGdldF9N
ZWRpYVJlbW90ZV9rTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0aXN0KCkKK1NPRlRfTElO
S19DT05TVEFOVF9GT1JfSEVBREVSKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90
ZU5vd1BsYXlpbmdJbmZvQWxidW0sIENGU3RyaW5nUmVmKTsKKyNkZWZpbmUga01STWVkaWFSZW1v
dGVOb3dQbGF5aW5nSW5mb0FsYnVtIGdldF9NZWRpYVJlbW90ZV9rTVJNZWRpYVJlbW90ZU5vd1Bs
YXlpbmdJbmZvQWxidW0oKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoV2ViQ29yZSwg
TWVkaWFSZW1vdGUsIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrRGF0YSwgQ0ZT
dHJpbmdSZWYpOworI2RlZmluZSBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya0Rh
dGEgZ2V0X01lZGlhUmVtb3RlX2tNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrRGF0
YSgpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihXZWJDb3JlLCBNZWRpYVJlbW90ZSwg
a01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtNSU1FVHlwZSwgQ0ZTdHJpbmdSZWYp
OworI2RlZmluZSBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya01JTUVUeXBlIGdl
dF9NZWRpYVJlbW90ZV9rTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya01JTUVUeXBl
KCkKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBr
TVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRHVyYXRpb24sIENGU3RyaW5nUmVmKTsKICNkZWZp
bmUga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0R1cmF0aW9uIGdldF9NZWRpYVJlbW90ZV9r
TVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRHVyYXRpb24oKQogU09GVF9MSU5LX0NPTlNUQU5U
X0ZPUl9IRUFERVIoV2ViQ29yZSwgTWVkaWFSZW1vdGUsIGtNUk1lZGlhUmVtb3RlTm93UGxheWlu
Z0luZm9FbGFwc2VkVGltZSwgQ0ZTdHJpbmdSZWYpOwpAQCAtNjgsNiArNzYsOCBAQCBTT0ZUX0xJ
TktfQ09OU1RBTlRfRk9SX0hFQURFUihXZWJDb3JlLCBNZWRpYVJlbW90ZSwga01STWVkaWFSZW1v
dGVPcHRpb25QbGF5YmFjawogI2RlZmluZSBrTVJNZWRpYVJlbW90ZU9wdGlvblBsYXliYWNrUG9z
aXRpb24gZ2V0X01lZGlhUmVtb3RlX2tNUk1lZGlhUmVtb3RlT3B0aW9uUGxheWJhY2tQb3NpdGlv
bigpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihXZWJDb3JlLCBNZWRpYVJlbW90ZSwg
a01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb1VuaXF1ZUlkZW50aWZpZXIsIENGU3RyaW5nUmVm
KTsKICNkZWZpbmUga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb1VuaXF1ZUlkZW50aWZpZXIg
Z2V0X01lZGlhUmVtb3RlX2tNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9VbmlxdWVJZGVudGlm
aWVyKCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFdlYkNvcmUsIE1lZGlhUmVtb3Rl
LCBrTVJNZWRpYVJlbW90ZU9wdGlvblNraXBJbnRlcnZhbCwgQ0ZTdHJpbmdSZWYpOworI2RlZmlu
ZSBrTVJNZWRpYVJlbW90ZU9wdGlvblNraXBJbnRlcnZhbCBnZXRfTWVkaWFSZW1vdGVfa01STWVk
aWFSZW1vdGVPcHRpb25Ta2lwSW50ZXJ2YWwoKQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBNUk1l
ZGlhUmVtb3RlQ29weVBpY2thYmxlUm91dGVzLCBDRkFycmF5UmVmLCAoKSwgKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTWVkaWFSZW1vdGVTb2Z0TGluay5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9NZWRpYVJlbW90ZVNvZnRMaW5rLm1tCmluZGV4
IDg0ZGFjYjg1MWY4Y2Y2YzFiZDY2N2E5NmU3YmMwOWY3MzkyZjlkNTQuLjczZTdiMjBkOWJmNTUy
NzA0N2FjMzgxMTUyMDA2ZjNlODUyMTVlMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9NZWRpYVJlbW90ZVNvZnRMaW5rLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9NZWRpYVJlbW90ZVNvZnRMaW5rLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiAKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NCwxMSArNDQsMTYgQEAgU09GVF9M
SU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgTWVkaWFSZW1vdGUsIE1STWVkaWFSZW1v
dGVTZXROb3dQbGF5aW5nSW4KIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUs
IE1lZGlhUmVtb3RlLCBNUk1lZGlhUmVtb3RlU2V0Tm93UGxheWluZ0FwcGxpY2F0aW9uUGxheWJh
Y2tTdGF0ZUZvck9yaWdpbiwgdm9pZCwgKE1ST3JpZ2luUmVmIG9yaWdpbiwgTVJQbGF5YmFja1N0
YXRlIHBsYXliYWNrU3RhdGUsIGRpc3BhdGNoX3F1ZXVlX3QgcmVwbHlRLCB2b2lkKF5jb21wbGV0
aW9uKShNUk1lZGlhUmVtb3RlRXJyb3IpKSwgKG9yaWdpbiwgcGxheWJhY2tTdGF0ZSwgcmVwbHlR
LCBjb21wbGV0aW9uKSkKIFNPRlRfTElOS19GVU5DVElPTl9NQVlfRkFJTF9GT1JfU09VUkNFKFdl
YkNvcmUsIE1lZGlhUmVtb3RlLCBNUk1lZGlhUmVtb3RlU2V0UGFyZW50QXBwbGljYXRpb24sIHZv
aWQsIChNUk9yaWdpblJlZiBvcmlnaW4sIENGU3RyaW5nUmVmIHBhcmVudEFwcERpc3BsYXlJRCks
IChvcmlnaW4sIHBhcmVudEFwcERpc3BsYXlJRCkpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NP
VVJDRShXZWJDb3JlLCBNZWRpYVJlbW90ZSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb1Rp
dGxlLCBDRlN0cmluZ1JlZik7CitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShXZWJDb3Jl
LCBNZWRpYVJlbW90ZSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydGlzdCwgQ0ZTdHJp
bmdSZWYpOworU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgTWVkaWFSZW1v
dGUsIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BbGJ1bSwgQ0ZTdHJpbmdSZWYpOworU09G
VF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgTWVkaWFSZW1vdGUsIGtNUk1lZGlh
UmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrRGF0YSwgQ0ZTdHJpbmdSZWYpOworU09GVF9MSU5L
X0NPTlNUQU5UX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgTWVkaWFSZW1vdGUsIGtNUk1lZGlhUmVtb3Rl
Tm93UGxheWluZ0luZm9BcnR3b3JrTUlNRVR5cGUsIENGU3RyaW5nUmVmKTsKIFNPRlRfTElOS19D
T05TVEFOVF9GT1JfU09VUkNFKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU5v
d1BsYXlpbmdJbmZvRHVyYXRpb24sIENGU3RyaW5nUmVmKTsKIFNPRlRfTElOS19DT05TVEFOVF9G
T1JfU09VUkNFKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJ
bmZvRWxhcHNlZFRpbWUsIENGU3RyaW5nUmVmKTsKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09V
UkNFKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvUGxh
eWJhY2tSYXRlLCBDRlN0cmluZ1JlZik7CiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShX
ZWJDb3JlLCBNZWRpYVJlbW90ZSwga01STWVkaWFSZW1vdGVPcHRpb25QbGF5YmFja1Bvc2l0aW9u
LCBDRlN0cmluZ1JlZik7CiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShXZWJDb3JlLCBN
ZWRpYVJlbW90ZSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb1VuaXF1ZUlkZW50aWZpZXIs
IENGU3RyaW5nUmVmKTsKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFdlYkNvcmUsIE1l
ZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU9wdGlvblNraXBJbnRlcnZhbCwgQ0ZTdHJpbmdSZWYp
OwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09V
UkNFKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBNUk1lZGlhUmVtb3RlQ29weVBpY2thYmxlUm91dGVz
LCBDRkFycmF5UmVmLCAoKSwgKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5oCmluZGV4IDk0YTQyZTE5MTcxYjJkY2I5
ZmU5YjkwZjFkNThjMjNjOWY3OGEyM2IuLmI3MWNhZDg2ODE4ODg0ZDk5NGFmYWVlODM4MjY5Yzk1
ZjcxZGNjNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9SZW1vdGVD
b21tYW5kTGlzdGVuZXJNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUmVt
b3RlQ29tbWFuZExpc3RlbmVyTWFjLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksOSArMzksMTMgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgflJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYygpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCB1
cGRhdGVTdXBwb3J0ZWRDb21tYW5kcygpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlU3VwcG9y
dGVkQ29tbWFuZHMoKSBmaW5hbDsKIAogICAgIHZvaWQqIG1fY29tbWFuZEhhbmRsZXIgeyBudWxs
cHRyIH07CisKKyAgICBjb25zdCBSZW1vdGVDb21tYW5kc1NldCYgZGVmYXVsdENvbW1hbmRzKCk7
CisgICAgUmVtb3RlQ29tbWFuZHNTZXQgbV9jdXJyZW50Q29tbWFuZHM7CisgICAgYm9vbCBtX3N1
cHBvcnRzU2Vla2luZyB7IGZhbHNlIH07CiB9OwogICAgIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9SZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMubW0KaW5kZXgg
NGVhODM5MjA3MjcxODQ0OGE4NjIyZmZlMmQzMjVjZjczNzEyNDYyOC4uZmFmNzUzZjg3YTQ0ZmYy
MGZlZDgyOTNkN2MxNWIwNWIzYTg3MDJjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLm1tCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiAKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNSw0MiArMzUsMTAy
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIE9wdGlvbmFsPE1STWVkaWFSZW1v
dGVDb21tYW5kPiBtZWRpYVJlbW90ZUNvbW1hbmRGb3JQbGF0Zm9ybUNvbW1hbmQoUGxhdGZvcm1N
ZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21tYW5kKQoreworICAgIHN0
YXRpYyBjb25zdCBhdXRvIGNvbW1hbmRNYXAgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAg
ICAgICBzdHJ1Y3QgTWFwRW50cnkgeworICAgICAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246
OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBwbGF0Zm9ybUNvbW1hbmQ7CisgICAgICAgICAgICBN
Uk1lZGlhUmVtb3RlQ29tbWFuZCBtZWRpYVJlbW90ZUNvbW1hbmQ7CisgICAgICAgIH07CisgICAg
ICAgIHN0YXRpYyBjb25zdCBNYXBFbnRyeSBlbnRyaWVzW10gPSB7CisgICAgICAgICAgICB7IFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5Q29tbWFuZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRQbGF5
IH0sCisgICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQYXVzZUNvbW1hbmQsIE1S
TWVkaWFSZW1vdGVDb21tYW5kUGF1c2UgfSwKKyAgICAgICAgICAgIHsgUGxhdGZvcm1NZWRpYVNl
c3Npb246OlN0b3BDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZFN0b3AgfSwKKyAgICAgICAg
ICAgIHsgUGxhdGZvcm1NZWRpYVNlc3Npb246OlRvZ2dsZVBsYXlQYXVzZUNvbW1hbmQsIE1STWVk
aWFSZW1vdGVDb21tYW5kVG9nZ2xlUGxheVBhdXNlIH0sCisgICAgICAgICAgICB7IFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpCZWdpblNlZWtpbmdCYWNrd2FyZENvbW1hbmQsIE1STWVkaWFSZW1vdGVD
b21tYW5kQmVnaW5SZXdpbmQgfSwKKyAgICAgICAgICAgIHsgUGxhdGZvcm1NZWRpYVNlc3Npb246
OkVuZFNlZWtpbmdCYWNrd2FyZENvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kRW5kUmV3aW5k
IH0sCisgICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpCZWdpblNlZWtpbmdGb3J3
YXJkQ29tbWFuZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRCZWdpbkZhc3RGb3J3YXJkIH0sCisgICAg
ICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRTZWVraW5nRm9yd2FyZENvbW1hbmQs
IE1STWVkaWFSZW1vdGVDb21tYW5kRW5kRmFzdEZvcndhcmQgfSwKKyAgICAgICAgICAgIHsgUGxh
dGZvcm1NZWRpYVNlc3Npb246OlNlZWtUb1BsYXliYWNrUG9zaXRpb25Db21tYW5kLCBNUk1lZGlh
UmVtb3RlQ29tbWFuZFNlZWtUb1BsYXliYWNrUG9zaXRpb24gfSwKKyAgICAgICAgICAgIHsgUGxh
dGZvcm1NZWRpYVNlc3Npb246OlNraXBGb3J3YXJkQ29tbWFuZCwgTVJNZWRpYVJlbW90ZUNvbW1h
bmRTa2lwRm9yd2FyZCB9LAorICAgICAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2tp
cEJhY2t3YXJkQ29tbWFuZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRTa2lwQmFja3dhcmQgfSwKKyAg
ICAgICAgICAgIHsgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5leHRUcmFja0NvbW1hbmQsIE1STWVk
aWFSZW1vdGVDb21tYW5kTmV4dFRyYWNrIH0sCisgICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpQcmV2aW91c1RyYWNrQ29tbWFuZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRQcmV2aW91
c1RyYWNrIH0sCisgICAgICAgIH07CisKKyAgICAgICAgSGFzaE1hcDxQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlLCBNUk1lZGlhUmVtb3RlQ29tbWFuZCwgV1RG
OjpJbnRIYXNoPFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGU+
LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVD
b250cm9sQ29tbWFuZFR5cGU+PiBtYXA7CisgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBlbnRy
aWVzKQorICAgICAgICAgICAgbWFwLmFkZChlbnRyeS5wbGF0Zm9ybUNvbW1hbmQsIGVudHJ5Lm1l
ZGlhUmVtb3RlQ29tbWFuZCk7CisgICAgICAgIHJldHVybiBtYXA7CisgICAgfSgpKTsKKworICAg
IGF1dG8gaXQgPSBjb21tYW5kTWFwLmdldCgpLmZpbmQoY29tbWFuZCk7CisgICAgaWYgKGl0ICE9
IGNvbW1hbmRNYXAuZ2V0KCkuZW5kKCkpCisgICAgICAgIHJldHVybiB7IGl0LT52YWx1ZSB9Owor
CisgICAgcmV0dXJuIHsgfTsKK30KKwogc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNvbW1hbmRMaXN0
ZW5lcj4gUmVtb3RlQ29tbWFuZExpc3RlbmVyOjpjcmVhdGUoUmVtb3RlQ29tbWFuZExpc3RlbmVy
Q2xpZW50JiBjbGllbnQpCiB7CiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlQ29tbWFuZExp
c3RlbmVyTWFjPihjbGllbnQpOwogfQogCitjb25zdCBSZW1vdGVDb21tYW5kTGlzdGVuZXI6OlJl
bW90ZUNvbW1hbmRzU2V0JiBSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWM6OmRlZmF1bHRDb21tYW5k
cygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlbW90ZUNvbW1hbmRzU2V0PiBjb21t
YW5kcyhzdGQ6OmluaXRpYWxpemVyX2xpc3Q8UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNv
bnRyb2xDb21tYW5kVHlwZT4geworICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheUNv
bW1hbmQsCisgICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQYXVzZUNvbW1hbmQsCisgICAg
ICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpUb2dnbGVQbGF5UGF1c2VDb21tYW5kLAorICAgICAg
ICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QmVnaW5TZWVraW5nRm9yd2FyZENvbW1hbmQsCisgICAg
ICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRTZWVraW5nRm9yd2FyZENvbW1hbmQsCisgICAg
ICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpCZWdpblNlZWtpbmdCYWNrd2FyZENvbW1hbmQsCisg
ICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRTZWVraW5nQmFja3dhcmRDb21tYW5kLAor
ICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2Vla1RvUGxheWJhY2tQb3NpdGlvbkNvbW1h
bmQsCisgICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTa2lwRm9yd2FyZENvbW1hbmQsCisg
ICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTa2lwQmFja3dhcmRDb21tYW5kLAorICAgIH0p
OworCisgICAgcmV0dXJuIGNvbW1hbmRzOworfQorCitzdGF0aWMgYm9vbCBpc1NlZWtDb21tYW5k
KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgY29tbWFuZCkK
K3sKKyAgICByZXR1cm4gY29tbWFuZCA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2Vla1RvUGxh
eWJhY2tQb3NpdGlvbkNvbW1hbmQKKyAgICAgICAgfHwgY29tbWFuZCA9PSBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6U2tpcEZvcndhcmRDb21tYW5kCisgICAgICAgIHx8IGNvbW1hbmQgPT0gUGxhdGZv
cm1NZWRpYVNlc3Npb246OlNraXBCYWNrd2FyZENvbW1hbmQKKyAgICAgICAgfHwgY29tbWFuZCA9
PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QmVnaW5TZWVraW5nRm9yd2FyZENvbW1hbmQKKyAgICAg
ICAgfHwgY29tbWFuZCA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QmVnaW5TZWVraW5nQmFja3dh
cmRDb21tYW5kOworfQorCiB2b2lkIFJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYzo6dXBkYXRlU3Vw
cG9ydGVkQ29tbWFuZHMoKQogewogICAgIGlmICghaXNNZWRpYVJlbW90ZUZyYW1ld29ya0F2YWls
YWJsZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBzdGF0aWMgY29uc3QgTVJNZWRpYVJlbW90
ZUNvbW1hbmQgc3VwcG9ydGVkQ29tbWFuZHNbXSA9IHsKLSAgICAgICAgTVJNZWRpYVJlbW90ZUNv
bW1hbmRQbGF5LAotICAgICAgICBNUk1lZGlhUmVtb3RlQ29tbWFuZFBhdXNlLAotICAgICAgICBN
Uk1lZGlhUmVtb3RlQ29tbWFuZFRvZ2dsZVBsYXlQYXVzZSwKLSAgICAgICAgTVJNZWRpYVJlbW90
ZUNvbW1hbmRCZWdpbkZhc3RGb3J3YXJkLAotICAgICAgICBNUk1lZGlhUmVtb3RlQ29tbWFuZEVu
ZEZhc3RGb3J3YXJkLAotICAgICAgICBNUk1lZGlhUmVtb3RlQ29tbWFuZEJlZ2luUmV3aW5kLAot
ICAgICAgICBNUk1lZGlhUmVtb3RlQ29tbWFuZEVuZFJld2luZCwKLSAgICAgICAgTVJNZWRpYVJl
bW90ZUNvbW1hbmRTZWVrVG9QbGF5YmFja1Bvc2l0aW9uLAotICAgIH07CisgICAgYXV0byYgc3Vw
cG9ydGVkQ29tbWFuZHMgPSAhbV9yZWdpc3RlcmVkQ29tbWFuZHMuaXNFbXB0eSgpID8gbV9yZWdp
c3RlcmVkQ29tbWFuZHMgOiBkZWZhdWx0Q29tbWFuZHMoKTsKKyAgICBpZiAobV9zdXBwb3J0c1Nl
ZWtpbmcgPT0gY2xpZW50KCkuc3VwcG9ydHNTZWVraW5nKCkgJiYgbV9jdXJyZW50Q29tbWFuZHMg
PT0gc3VwcG9ydGVkQ29tbWFuZHMpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gY29tbWFu
ZEluZm9BcnJheSA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgc3VwcG9ydGVkQ29tbWFuZHMuc2l6ZSgpLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7
CisgICAgZm9yIChhdXRvIHBsYXRmb3JtQ29tbWFuZCA6IHN1cHBvcnRlZENvbW1hbmRzKSB7Cisg
ICAgICAgIGlmIChpc1NlZWtDb21tYW5kKHBsYXRmb3JtQ29tbWFuZCkgJiYgIWNsaWVudCgpLnN1
cHBvcnRzU2Vla2luZygpKQorICAgICAgICAgICAgY29udGludWU7CiAKLSAgICBhdXRvIGNvbW1h
bmRJbmZvQXJyYXkgPSBhZG9wdENGKENGQXJyYXlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIHNpemVvZihzdXBwb3J0ZWRDb21tYW5kcykgLyBzaXplb2YoTVJNZWRpYVJlbW90ZUNv
bW1hbmQpLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CisgICAgICAgIGF1dG8gY29tbWFuZCA9
IG1lZGlhUmVtb3RlQ29tbWFuZEZvclBsYXRmb3JtQ29tbWFuZChwbGF0Zm9ybUNvbW1hbmQpOwor
ICAgICAgICBBU1NFUlQoY29tbWFuZCk7CisgICAgICAgIGlmICghY29tbWFuZCkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOwogCi0gICAgZm9yIChhdXRvIGNvbW1hbmQgOiBzdXBwb3J0ZWRDb21tYW5k
cykgewogICAgICAgICBhdXRvIGNvbW1hbmRJbmZvID0gYWRvcHRDRihNUk1lZGlhUmVtb3RlQ29t
bWFuZEluZm9DcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCkpOwotICAgICAgICBNUk1lZGlhUmVt
b3RlQ29tbWFuZEluZm9TZXRDb21tYW5kKGNvbW1hbmRJbmZvLmdldCgpLCBjb21tYW5kKTsKKyAg
ICAgICAgTVJNZWRpYVJlbW90ZUNvbW1hbmRJbmZvU2V0Q29tbWFuZChjb21tYW5kSW5mby5nZXQo
KSwgY29tbWFuZC52YWx1ZSgpKTsKICAgICAgICAgTVJNZWRpYVJlbW90ZUNvbW1hbmRJbmZvU2V0
RW5hYmxlZChjb21tYW5kSW5mby5nZXQoKSwgdHJ1ZSk7CiAgICAgICAgIENGQXJyYXlBcHBlbmRW
YWx1ZShjb21tYW5kSW5mb0FycmF5LmdldCgpLCBjb21tYW5kSW5mby5nZXQoKSk7CiAgICAgfQog
Ci0gICAgYXV0byBzZWVrQ29tbWFuZEluZm8gPSBhZG9wdENGKE1STWVkaWFSZW1vdGVDb21tYW5k
SW5mb0NyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0KSk7Ci0gICAgTVJNZWRpYVJlbW90ZUNvbW1h
bmRJbmZvU2V0Q29tbWFuZChzZWVrQ29tbWFuZEluZm8uZ2V0KCksIE1STWVkaWFSZW1vdGVDb21t
YW5kU2Vla1RvUGxheWJhY2tQb3NpdGlvbik7Ci0gICAgTVJNZWRpYVJlbW90ZUNvbW1hbmRJbmZv
U2V0RW5hYmxlZChzZWVrQ29tbWFuZEluZm8uZ2V0KCksIGNsaWVudCgpLnN1cHBvcnRzU2Vla2lu
ZygpKTsKLSAgICBDRkFycmF5QXBwZW5kVmFsdWUoY29tbWFuZEluZm9BcnJheS5nZXQoKSwgc2Vl
a0NvbW1hbmRJbmZvLmdldCgpKTsKLQogICAgIE1STWVkaWFSZW1vdGVTZXRTdXBwb3J0ZWRDb21t
YW5kcyhjb21tYW5kSW5mb0FycmF5LmdldCgpLCBNUk1lZGlhUmVtb3RlR2V0TG9jYWxPcmlnaW4o
KSwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAgbV9jdXJyZW50Q29tbWFuZHMgPSBzdXBwb3J0ZWRD
b21tYW5kczsKKyAgICBtX3N1cHBvcnRzU2Vla2luZyA9IGNsaWVudCgpLnN1cHBvcnRzU2Vla2lu
ZygpOwogfQogCiBSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWM6OlJlbW90ZUNvbW1hbmRMaXN0ZW5l
ck1hYyhSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQmIGNsaWVudCkKQEAgLTc5LDcgKzEzOSw3
IEBAIFJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYzo6UmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjKFJl
bW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCYKICAgICBpZiAoIWlzTWVkaWFSZW1vdGVGcmFtZXdv
cmtBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdXBkYXRlU3VwcG9ydGVkQ29t
bWFuZHMoKTsKKyAgICBzY2hlZHVsZVN1cHBvcnRlZENvbW1hbmRzVXBkYXRlKCk7CiAKICAgICBh
dXRvIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpOwogICAgIG1fY29tbWFuZEhhbmRsZXIg
PSBNUk1lZGlhUmVtb3RlQWRkQXN5bmNDb21tYW5kSGFuZGxlckJsb2NrKF4oTVJNZWRpYVJlbW90
ZUNvbW1hbmQgY29tbWFuZCwgQ0ZEaWN0aW9uYXJ5UmVmIG9wdGlvbnMsIHZvaWQoXmNvbXBsZXRp
b24pKENGQXJyYXlSZWYpKSB7CkBAIC04OCw2ICsxNDgsNyBAQCBSZW1vdGVDb21tYW5kTGlzdGVu
ZXJNYWM6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYyhSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGll
bnQmCiAKICAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5k
VHlwZSBwbGF0Zm9ybUNvbW1hbmQgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9Db21tYW5kIH07
CiAgICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb21tYW5kQXJndW1lbnQgYXJn
dW1lbnQgeyAwIH07CisgICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb21tYW5k
QXJndW1lbnQqIGFyZ3VtZW50UHRyID0gbnVsbHB0cjsKICAgICAgICAgTVJNZWRpYVJlbW90ZUNv
bW1hbmRIYW5kbGVyU3RhdHVzIHN0YXR1cyA9IE1STWVkaWFSZW1vdGVDb21tYW5kSGFuZGxlclN0
YXR1c1N1Y2Nlc3M7CiAKICAgICAgICAgc3dpdGNoIChjb21tYW5kKSB7CkBAIC0xMjgsMTYgKzE4
OSwzNyBAQCBSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWM6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lck1h
YyhSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQmCiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIENGTnVtYmVyR2V0VmFsdWUocG9zaXRpb25SZWYsIGtDRk51bWJlckRvdWJsZVR5cGUsICZh
cmd1bWVudC5hc0RvdWJsZSk7CisgICAgICAgICAgICBhcmd1bWVudFB0ciA9ICZhcmd1bWVudDsK
ICAgICAgICAgICAgIHBsYXRmb3JtQ29tbWFuZCA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTZWVr
VG9QbGF5YmFja1Bvc2l0aW9uQ29tbWFuZDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CisgICAgICAgIGNhc2UgTVJNZWRpYVJlbW90ZUNvbW1hbmRTa2lwRm9yd2FyZDoKKyAgICAgICAg
Y2FzZSBNUk1lZGlhUmVtb3RlQ29tbWFuZFNraXBCYWNrd2FyZDoKKyAgICAgICAgICAgIGlmICgh
Y2xpZW50LnN1cHBvcnRzU2Vla2luZygpKSB7CisgICAgICAgICAgICAgICAgc3RhdHVzID0gTVJN
ZWRpYVJlbW90ZUNvbW1hbmRIYW5kbGVyU3RhdHVzQ29tbWFuZEZhaWxlZDsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGF1dG8gcG9zaXRp
b25SZWYgPSBzdGF0aWNfY2FzdDxDRk51bWJlclJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUob3B0
aW9ucywga01STWVkaWFSZW1vdGVPcHRpb25Ta2lwSW50ZXJ2YWwpKSkgeworICAgICAgICAgICAg
ICAgIENGTnVtYmVyR2V0VmFsdWUocG9zaXRpb25SZWYsIGtDRk51bWJlckRvdWJsZVR5cGUsICZh
cmd1bWVudC5hc0RvdWJsZSk7CisgICAgICAgICAgICAgICAgYXJndW1lbnRQdHIgPSAmYXJndW1l
bnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHBsYXRmb3JtQ29tbWFuZCA9IChjb21t
YW5kID09IE1STWVkaWFSZW1vdGVDb21tYW5kU2tpcEZvcndhcmQpID8gUGxhdGZvcm1NZWRpYVNl
c3Npb246OlNraXBGb3J3YXJkQ29tbWFuZCA6IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTa2lwQmFj
a3dhcmRDb21tYW5kOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTVJNZWRpYVJl
bW90ZUNvbW1hbmROZXh0VHJhY2s6CisgICAgICAgICAgICBwbGF0Zm9ybUNvbW1hbmQgPSBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6TmV4dFRyYWNrQ29tbWFuZDsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIE1STWVkaWFSZW1vdGVDb21tYW5kUHJldmlvdXNUcmFjazoKKyAgICAgICAg
ICAgIHBsYXRmb3JtQ29tbWFuZCA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQcmV2aW91c1RyYWNr
Q29tbWFuZDsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAg
ICAgTE9HKE1lZGlhLCAiUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjOjpSZW1vdGVDb21tYW5kTGlz
dGVuZXJNYWMgLSBjb21tYW5kICV1IG5vdCBzdXBwb3J0ZWQhIiwgY29tbWFuZCk7CiAgICAgICAg
ICAgICBzdGF0dXMgPSBNUk1lZGlhUmVtb3RlQ29tbWFuZEhhbmRsZXJTdGF0dXNDb21tYW5kRmFp
bGVkOwogICAgICAgICB9OwogCiAgICAgICAgIGlmICh3ZWFrVGhpcyAmJiBzdGF0dXMgIT0gTVJN
ZWRpYVJlbW90ZUNvbW1hbmRIYW5kbGVyU3RhdHVzQ29tbWFuZEZhaWxlZCkKLSAgICAgICAgICAg
IHdlYWtUaGlzLT5tX2NsaWVudC5kaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQocGxhdGZv
cm1Db21tYW5kLCAmYXJndW1lbnQpOworICAgICAgICAgICAgd2Vha1RoaXMtPm1fY2xpZW50LmRp
ZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChwbGF0Zm9ybUNvbW1hbmQsIGFyZ3VtZW50UHRy
KTsKIAogICAgICAgICBjb21wbGV0aW9uKChfX2JyaWRnZSBDRkFycmF5UmVmKUBbQChzdGF0dXMp
XSk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tQcmVmZXJlbmNlcy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1ByZWZlcmVuY2VzLm1tCmluZGV4IDYyZGNiMzA2YTg5OWNhOGJhNDI4NDkyZjkzNzYxMGY2OGE5
ZmU0NTMuLjBjNzliZmZlZDViZWRjNzc5YTJjOTgxMjNmMjhlNzIzNjYwNTRjM2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCkBA
IC0xNDc5LDYgKzE0NzksMTYgQEAgc3RhdGljIFdlYkNvcmU6OkVkaXRhYmxlTGlua0JlaGF2aW9y
IHRvRWRpdGFibGVMaW5rQmVoYXZpb3IoX1dLRWRpdGFibGVMaW5rQmVoYXYKICAgICBfcHJlZmVy
ZW5jZXMtPnNldFBpdGNoQ29ycmVjdGlvbkFsZ29yaXRobShwaXRjaENvcnJlY3Rpb25BbGdvcml0
aG0pOwogfQogCistIChCT09MKV9tZWRpYVNlc3Npb25FbmFibGVkCit7CisgICAgcmV0dXJuIF9w
cmVmZXJlbmNlcy0+bWVkaWFTZXNzaW9uRW5hYmxlZCgpOworfQorCistICh2b2lkKV9zZXRNZWRp
YVNlc3Npb25FbmFibGVkOihCT09MKW1lZGlhU2Vzc2lvbkVuYWJsZWQKK3sKKyAgICBfcHJlZmVy
ZW5jZXMtPnNldE1lZGlhU2Vzc2lvbkVuYWJsZWQobWVkaWFTZXNzaW9uRW5hYmxlZCk7Cit9CisK
IEBlbmQKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tQcmVmZXJlbmNlc1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCmluZGV4IGYwNjkxZmQ1NzUwNGYzY2E4MTFlNzRiMGQw
YTM5ZTNkNzhhOGQ0MTEuLjc2NjY5NjAwOGZlMmJiNGFkM2ZmNjIxM2QyNWIzN2JmZmVkYzJiZDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVu
Y2VzUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1By
ZWZlcmVuY2VzUHJpdmF0ZS5oCkBAIC0xNzAsNiArMTcwLDcgQEAgdHlwZWRlZiBOU19FTlVNKE5T
SW50ZWdlciwgX1dLUGl0Y2hDb3JyZWN0aW9uQWxnb3JpdGhtKSB7CiBAcHJvcGVydHkgKG5vbmF0
b21pYywgc2V0dGVyPV9zZXRTcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQ6KSBCT09MIF9zcGVlY2hS
ZWNvZ25pdGlvbkVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9z
KFdLX0lPU19UQkEpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFByaXZhdGVD
bGlja01lYXN1cmVtZW50RW5hYmxlZDopIEJPT0wgX3ByaXZhdGVDbGlja01lYXN1cmVtZW50RW5h
YmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkp
OwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0UGl0Y2hDb3JyZWN0aW9uQWxnb3Jp
dGhtOikgX1dLUGl0Y2hDb3JyZWN0aW9uQWxnb3JpdGhtIF9waXRjaENvcnJlY3Rpb25BbGdvcml0
aG0gV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldE1lZGlhU2Vzc2lvbkVuYWJsZWQ6KSBC
T09MIF9tZWRpYVNlc3Npb25FbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CiAKICNpZiAhVEFSR0VUX09TX0lQSE9ORQogQHByb3BlcnR5
IChub25hdG9taWMsIHNldHRlcj1fc2V0V2ViR0xFbmFibGVkOikgQk9PTCBfd2ViR0xFbmFibGVk
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGQ1YWUzMWZiZWNhMWM3YjkzNzllNGZjZWMz
NzZlYzRiODE5NTVhZDQuLjJmYjA0MTEyY2RjM2E4ODhkMGJiYzIwYjE4NWVjNjQxMTBlMmE4MTQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMyBAQAorMjAyMS0wMi0wNCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxl
LmNvbT4KKworICAgICAgICBbTWFjXSBDb25uZWN0IE1lZGlhU2Vzc2lvbiB3aXRoIE1lZGlhUmVt
b3RlIGFuZCBOb3dQbGF5aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjE0MzEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc0MDAwMzYzPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9NZWRpYVNlc3Npb24ubW06IEFkZGVkLgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uVGVzdDo6d2ViVmlldyk6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25UZXN0Ojp3ZWJWaWV3UGlkKToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvblRlc3Q6OmdldE5vd1BsYXlpbmdDbGllbnQp
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uVGVzdDo6Z2V0Tm93UGxheWlu
Z0NsaWVudFBpZCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25UZXN0Ojps
b2FkUGFnZUFuZEJlY29tZU5vd1BsYXlpbmcpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVk
aWFTZXNzaW9uVGVzdDo6cnVuU2NyaXB0V2l0aFVzZXJHZXN0dXJlKToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvblRlc3Q6OnBsYXkpOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6TWVkaWFTZXNzaW9uVGVzdDo6cGF1c2UpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVk
aWFTZXNzaW9uVGVzdDo6c2VuZE1lZGlhUmVtb3RlQ29tbWFuZCk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpNZWRpYVNlc3Npb25UZXN0OjpzZW5kTWVkaWFSZW1vdGVTZWVrQ29tbWFuZCk6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25UZXN0OjpsaXN0ZW5Gb3JFdmVudE1l
c3NhZ2VzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvblRlc3Q6OmV2ZW50
TGlzdGVuZXJXYXNDYWxsZWQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9u
VGVzdDo6d2FpdEZvckV2ZW50TGlzdGVuZXJUb0JlQ2FsbGVkKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6Ok1lZGlhU2Vzc2lvblRlc3Q6Omxpc3RlbkZvclNlc3Npb25IYW5kbGVyTWVzc2FnZXMp
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uVGVzdDo6c2Vzc2lvbkhhbmRs
ZXJXYXNDYWxsZWQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uVGVzdDo6
d2FpdEZvclNlc3Npb25IYW5kbGVyVG9CZUNhbGxlZCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpNZWRpYVNlc3Npb25UZXN0OjpnZXRTdXBwb3J0ZWRDb21tYW5kcyk6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvbWVkaWEtcmVtb3RlLmh0bWw6IEFkZGVkLgorCiAyMDIxLTAyLTA0ICBKb25hdGhhbiBC
ZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbUHl0aG9uLTNdIENoYW5nZSBz
aGViYW5nIGluIHRlc3Qtd2Via2l0cHkgKFBhcnQtMSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggNWM1OTdhNzFkMmViMzg3ODYwN2RlMmFmZjNiZDJjODE3MzY4MzM2Yi4uMGI0OGU3ZWFlNWEy
YmY4NmJkNjFiZDBkOTJiMWFlZGVjNzIzMTk4ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTU2LDYgKzU2LDggQEAKIAkJMDc0OTk0NTIxRUE1MDM0QjAwMERBNDRFIC8qIGdldFVzZXJNZWRp
YTIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MUJBRjRFMjI1QUM5REI4MDBEODJGMzIgLyogZ2V0VXNlck1lZGlhMi5odG1sICovOyB9
OwogCQkwNzZFNTA3RjFGNDUxM0Q2MDA2RTlGNUEgLyogTG9nZ2luZy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzZFNTA3RTFGNDUwMzFFMDA2RTlG
NUEgLyogTG9nZ2luZy5jcHAgKi87IH07CiAJCTA3N0E1QUYzMjMwNjM4QTYwMEE3MTA1QyAvKiBB
Y2Nlc3NpYmlsaXR5VGVzdFBsdWdpbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3NDY2NDU4MjJGRjYzMDUwMEUzNDUxQSAvKiBBY2Nlc3NpYmlsaXR5
VGVzdFBsdWdpbi5tbSAqLzsgfTsKKwkJMDc5NDc0MEQyNUNBMEJERTAwQzU5N0VCIC8qIE1lZGlh
U2Vzc2lvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3OTQ3NDBDMjVDQTBCREUwMEM1OTdFQiAvKiBNZWRpYVNlc3Npb24ubW0gKi87IH07CisJCTA3
OTQ3NDJEMjVDQjMzRkQwMEM1OTdFQiAvKiBtZWRpYS1yZW1vdGUuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzk0NzQyQzI1Q0IzM0Iw
MDBDNTk3RUIgLyogbWVkaWEtcmVtb3RlLmh0bWwgKi87IH07CiAJCTA3OTlDMzQ5MUVCQTJEN0Iw
MDNCNzUzMiAvKiBVc2VyTWVkaWFEaXNhYmxlZC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RURFRkFDMUVCOTQwMEMwMEQ0MzI5MiAvKiBVc2VyTWVk
aWFEaXNhYmxlZC5tbSAqLzsgfTsKIAkJMDc5OUMzNEIxRUJBMzMwMTAwM0I3NTMyIC8qIGRpc2Fi
bGVHZXRVc2VyTWVkaWEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwNzk5QzM0QTFFQkEzMkY0MDAzQjc1MzIgLyogZGlzYWJsZUdldFVz
ZXJNZWRpYS5odG1sICovOyB9OwogCQkwN0MwNDZDQTFFNDI2MkE4MDA3MjAxRTcgLyogQ0FSaW5n
QnVmZmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3QzA0NkM5MUU0MjU3M0UwMDcyMDFFNyAvKiBDQVJpbmdCdWZmZXIuY3BwICovOyB9OwpAQCAt
MTU1OSw2ICsxNTYxLDcgQEAKIAkJCQlBRDU3QUMyMjFEQTc0NjZFMDBGRjFCREUgLyogbWFueS1p
ZnJhbWVzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNzc3MkVDRTEyMkZFMDZDNjAw
MDlBNzk5IC8qIG1hbnktc2FtZS1vcmlnaW4taWZyYW1lcy5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovLAogCQkJCUNEODM5NERGMjMyQUY3QzAwMDE0OTQ5NSAvKiBtZWRpYS1sb2FkaW5nLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8sCisJCQkJMDc5NDc0MkQyNUNCMzNGRDAwQzU5N0VCIC8qIG1l
ZGlhLXJlbW90ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUNEQTMxNTlBMUVENTQ4
RjEwMDlGNjBEMyAvKiBNZWRpYVBsYXliYWNrU2xlZXBBc3NlcnRpb24uaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLywKIAkJCQlDREM5NDQyRjFFRjIwNUQ2MDA1OUMzQzQgLyogbWVkaWFzdHJlYW10
cmFjay1kZXRhY2hlZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUUxMjIwRENBMTU1
QjI4QUEwMDEzRTJGQyAvKiBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxl
Z2F0ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMTcyMiw2ICsxNzI1LDggQEAKIAkJ
MDc0OTJCM0ExREY4QUUyRDAwNjMzREUxIC8qIEVudW1lcmF0ZU1lZGlhRGV2aWNlcy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFbnVtZXJhdGVNZWRpYURldmljZXMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzY2REQxRjFBNUFENTIwMDAyM0Uz
QkIgLyogUGVuZGluZ0FQSVJlcXVlc3RVUkwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUGVuZGluZ0FQSVJlcXVlc3RVUkwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwNzZFNTA3RTFGNDUwMzFFMDA2RTlGNUEgLyogTG9nZ2luZy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2dnaW5nLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMDc5NDc0MEMyNUNBMEJERTAwQzU5N0VCIC8qIE1lZGlhU2Vzc2lv
bi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lZGlhU2Vzc2lv
bi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc5NDc0MkMyNUNCMzNCMDAwQzU5
N0VCIC8qIG1lZGlhLXJlbW90ZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIm1l
ZGlhLXJlbW90ZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc5OUMzNEEx
RUJBMzJGNDAwM0I3NTMyIC8qIGRpc2FibGVHZXRVc2VyTWVkaWEuaHRtbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuaHRtbDsgcGF0aCA9IGRpc2FibGVHZXRVc2VyTWVkaWEuaHRtbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMDdDMDQ2QzkxRTQyNTczRTAwNzIwMUU3IC8qIENBUmluZ0J1ZmZlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDQVJpbmdCdWZmZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0NDN0RGRDIyNjYzMzA4MDBFMzkxODEg
LyogTWVkaWFCdWZmZXJpbmdQb2xpY3kubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBNZWRpYUJ1ZmZlcmluZ1BvbGljeS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTMzNTksNiArMzM2NCw3IEBACiAJCQkJOTVCNkIzQjYyNTFFQkYyRjAwRkM0Mzgy
IC8qIE1lZGlhRG9jdW1lbnQubW0gKi8sCiAJCQkJQ0QwMzcwRTIyNEE0NEI3QTAwQkEzQ0FFIC8q
IE1lZGlhTG9hZGluZy5tbSAqLywKIAkJCQkwN0VGNzZENDI1NDBGQzA2MDA1M0VENTMgLyogTWVk
aWFNdXRlZFN0YXRlLm1tICovLAorCQkJCTA3OTQ3NDBDMjVDQTBCREUwMEM1OTdFQiAvKiBNZWRp
YVNlc3Npb24ubW0gKi8sCiAJCQkJNTFCRTlFNjUyMzc2MDg5NTAwQjRFMTE3IC8qIE1lZGlhVHlw
ZS5tbSAqLywKIAkJCQk1MTY1RkUwMzIwMUVFNjE3MDA5RjdFQzMgLyogTWVzc2FnZVBvcnRQcm92
aWRlcnMubW0gKi8sCiAJCQkJNTFDRDFDNkExQjM4Q0UzNjAwMTQyQ0E1IC8qIE1vZGFsQWxlcnRz
Lm1tICovLApAQCAtMzkyMiw2ICszOTI4LDcgQEAKIAkJCQk0NkM1MTlFMzFEMzU2Mjk2MDBEQUE1
MUEgLyogTG9jYWxTdG9yYWdlTnVsbEVudHJpZXMubG9jYWxzdG9yYWdlICovLAogCQkJCTQ2QzUx
OUU0MUQzNTYyOTYwMERBQTUxQSAvKiBMb2NhbFN0b3JhZ2VOdWxsRW50cmllcy5sb2NhbHN0b3Jh
Z2Utc2htICovLAogCQkJCTdBNkEyQzcxMURDQ0ZCMDIwMEMwRDA4NSAvKiBMb2NhbFN0b3JhZ2VR
dWlya0VuYWJsZWQuaHRtbCAqLywKKwkJCQkwNzk0NzQyQzI1Q0IzM0IwMDBDNTk3RUIgLyogbWVk
aWEtcmVtb3RlLmh0bWwgKi8sCiAJCQkJOUI1OUYxMjkyMDM0MDg1NDAwOUU2M0Q1IC8qIG1zby1s
aXN0LWNvbXBhdC1tb2RlLmh0bWwgKi8sCiAJCQkJOUJDRDQxMTkyMDZENUVENzAwMUQ3MUJFIC8q
IG1zby1saXN0LW9uLWg0Lmh0bWwgKi8sCiAJCQkJOUJGMzU2Q0MyMDJENDRGMjAwRjcxMTYwIC8q
IG1zby1saXN0Lmh0bWwgKi8sCkBAIC01MzgzLDYgKzUzOTAsNyBAQAogCQkJCUNEMDM3MEUzMjRB
NDREOTYwMEJBM0NBRSAvKiBNZWRpYUxvYWRpbmcubW0gaW4gU291cmNlcyAqLywKIAkJCQkwN0VG
NzZENTI1NDBGQzA2MDA1M0VENTMgLyogTWVkaWFNdXRlZFN0YXRlLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJQ0RBMzE1OTgxRUQ1MzY1MTAwOUY2MEQzIC8qIE1lZGlhUGxheWJhY2tTbGVlcEFzc2Vy
dGlvbi5tbSBpbiBTb3VyY2VzICovLAorCQkJCTA3OTQ3NDBEMjVDQTBCREUwMEM1OTdFQiAvKiBN
ZWRpYVNlc3Npb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREM5NDQyRTFFRjFGQzA4MDA1OUMz
QzQgLyogTWVkaWFTdHJlYW1UcmFja0RldGFjaGVkLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFC
RTlFNjYyMzc2MDg5RjAwQjRFMTE3IC8qIE1lZGlhVHlwZS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTdDQ0U3RUM1MUE0MTFBN0UwMDQ0N0M0QyAvKiBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNv
dXJjZUxvYWREZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLApAQCAtNTQyMSw2ICs1NDI5LDcgQEAK
IAkJCQlDMTA0QkMxRjI1NDcyMzcxMDBDMDc4QzkgLyogT3ZlcnJpZGVBcHBsZUxhbmd1YWdlc1By
ZWZlcmVuY2UubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRUJDQTEyRjFFM0E2NjAxMDBDNzMyOTMg
LyogT3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kubW0gaW4gU291cmNlcyAqLywKIAkJCQky
REEyNTg2RjIyNUM2N0RDMDBCNDVDMUMgLyogT3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50cy5tbSBp
biBTb3VyY2VzICovLAorCQkJCTk1M0FCQjM1MjVDMEQ2ODIwMDRDOEI3MyAvKiBQYWdlRXh0ZW5k
ZWRCYWNrZ3JvdW5kQ29sb3IubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NCNERBOTFDODNBRTcz
MDBDQzY5MTggLyogUGFnZUdyb3VwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjA3MUE0
MTFBRTYwMDQ0N0M0QyAvKiBQYWdlTG9hZEJhc2ljLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdD
Q0U3RjA4MUE0MTFBRTYwMDQ0N0M0QyAvKiBQYWdlTG9hZERpZENoYW5nZUxvY2F0aW9uV2l0aGlu
UGFnZUZvckZyYW1lLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNTQ2NCw3ICs1NDczLDYgQEAKIAkJ
CQk1MThDMTE1MzIwNUIwNTA0MDAxRkY0QUUgLyogUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0g
aW4gU291cmNlcyAqLywKIAkJCQlGRUMyQTg1NjI0Q0VCNjVGMDBBREJDMzUgLyogUHJvcGVydHlT
bG90LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNFMEMxMUQwQTY1MkYwMEZFQkNGMyAvKiBQ
cm92aXNpb25hbFVSTE5vdENoYW5nZS5tbSBpbiBTb3VyY2VzICovLAotCQkJCTk1M0FCQjM1MjVD
MEQ2ODIwMDRDOEI3MyAvKiBQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IubW0gaW4gU291cmNl
cyAqLywKIAkJCQk1Q0ZBQ0Y2NTIyNkZEMkRDMDA1NkM3RDAgLyogUHJveHkubW0gaW4gU291cmNl
cyAqLywKIAkJCQkwNDFBMUUzNDIxNkZGREJDMDA3ODlFMEEgLyogUHVibGljU3VmZml4LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTdDODNFMEMyMUQwQTY1MzUwMEZFQkNGMyAvKiBRdWlja0xvb2su
bW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvTWVkaWFTZXNzaW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9NZWRpYVNlc3Npb24ubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWJjNjI5YzBkMTMxNjQ2YTY3
OTFkY2RiMWRkYzdjNjZiYTE1ZTA1ZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTWVkaWFTZXNzaW9uLm1tCkBAIC0wLDAgKzEsMzgwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpZiBQTEFURk9STShNQUMpICYm
IEVOQUJMRShNRURJQV9TRVNTSU9OKQorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgor
I2ltcG9ydCAiVGVzdC5oIgorI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCA8V2Vi
S2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29u
ZmlndXJhdGlvblByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+
CisjaW1wb3J0IDxXZWJLaXQvV2ViVmlld1ByaXZhdGUuaD4KKyNpbXBvcnQgPHBhbC9zcGkvbWFj
L01lZGlhUmVtb3RlU1BJLmg+CisjaW1wb3J0IDx3dGYvRnVuY3Rpb24uaD4KKyNpbXBvcnQgPHd0
Zi9IYXNoU2V0Lmg+CisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0
Zi9Tb2Z0TGlua2luZy5oPgorI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorI2ltcG9y
dCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK1NPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SSyhN
ZWRpYVJlbW90ZSkKKworU09GVF9MSU5LKE1lZGlhUmVtb3RlLCBNUk1lZGlhUmVtb3RlU2VuZENv
bW1hbmRUb0FwcCwgQm9vbGVhbiwgKE1STWVkaWFSZW1vdGVDb21tYW5kIGNvbW1hbmQsIENGRGlj
dGlvbmFyeVJlZiBvcHRpb25zLCBNUk9yaWdpblJlZiBvcmlnaW4sIENGU3RyaW5nUmVmIGFwcERp
c3BsYXlJRCwgTVJTZW5kQ29tbWFuZEFwcE9wdGlvbnMgYXBwT3B0aW9ucywgZGlzcGF0Y2hfcXVl
dWVfdCByZXBseVEsIHZvaWQoXmNvbXBsZXRpb24pKE1SU2VuZENvbW1hbmRFcnJvciBlcnIsIENG
QXJyYXlSZWYgaGFuZGxlclJldHVyblN0YXR1c2VzKSksIChjb21tYW5kLCBvcHRpb25zLCBvcmln
aW4sIGFwcERpc3BsYXlJRCwgYXBwT3B0aW9ucywgcmVwbHlRLCBjb21wbGV0aW9uKSk7CisjZGVm
aW5lIE1STWVkaWFSZW1vdGVTZW5kQ29tbWFuZFRvQXBwIHNvZnRMaW5rTVJNZWRpYVJlbW90ZVNl
bmRDb21tYW5kVG9BcHAKKworU09GVF9MSU5LKE1lZGlhUmVtb3RlLCBNUk1lZGlhUmVtb3RlR2V0
TG9jYWxPcmlnaW4sIE1ST3JpZ2luUmVmLCAoKSwgKCkpOworI2RlZmluZSBNUk1lZGlhUmVtb3Rl
R2V0TG9jYWxPcmlnaW4gc29mdExpbmtNUk1lZGlhUmVtb3RlR2V0TG9jYWxPcmlnaW4KKworU09G
VF9MSU5LKE1lZGlhUmVtb3RlLCBNUk1lZGlhUmVtb3RlR2V0U3VwcG9ydGVkQ29tbWFuZHNGb3JP
cmlnaW4sIHZvaWQsIChNUk9yaWdpblJlZiBvcmlnaW4sIGRpc3BhdGNoX3F1ZXVlX3QgcXVldWUs
IHZvaWQoXmNvbXBsZXRpb24pKENGQXJyYXlSZWYgY29tbWFuZHMpKSwgKG9yaWdpbiwgcXVldWUs
IGNvbXBsZXRpb24pKTsKKyNkZWZpbmUgTVJNZWRpYVJlbW90ZUdldFN1cHBvcnRlZENvbW1hbmRz
Rm9yT3JpZ2luIHNvZnRMaW5rTVJNZWRpYVJlbW90ZUdldFN1cHBvcnRlZENvbW1hbmRzRm9yT3Jp
Z2luCisKK1NPRlRfTElOSyhNZWRpYVJlbW90ZSwgTVJNZWRpYVJlbW90ZUdldE5vd1BsYXlpbmdD
bGllbnQsIHZvaWQsIChkaXNwYXRjaF9xdWV1ZV90IHF1ZXVlLCB2b2lkKF5jb21wbGV0aW9uKShN
Uk5vd1BsYXlpbmdDbGllbnRSZWYsIENGRXJyb3JSZWYpKSwgKHF1ZXVlLCBjb21wbGV0aW9uKSkK
KyNkZWZpbmUgTVJNZWRpYVJlbW90ZUdldE5vd1BsYXlpbmdDbGllbnQgc29mdExpbmtNUk1lZGlh
UmVtb3RlR2V0Tm93UGxheWluZ0NsaWVudAorCitTT0ZUX0xJTksoTWVkaWFSZW1vdGUsIE1STm93
UGxheWluZ0NsaWVudEdldFByb2Nlc3NJZGVudGlmaWVyLCBwaWRfdCwgKE1STm93UGxheWluZ0Ns
aWVudFJlZiBjbGllbnQpLCAoY2xpZW50KSkKKyNkZWZpbmUgTVJOb3dQbGF5aW5nQ2xpZW50R2V0
UHJvY2Vzc0lkZW50aWZpZXIgc29mdExpbmtNUk5vd1BsYXlpbmdDbGllbnRHZXRQcm9jZXNzSWRl
bnRpZmllcgorCitTT0ZUX0xJTktfQ09OU1RBTlQoTWVkaWFSZW1vdGUsIGtNUk1lZGlhUmVtb3Rl
T3B0aW9uU2tpcEludGVydmFsLCBDRlN0cmluZ1JlZikKKyNkZWZpbmUga01STWVkaWFSZW1vdGVP
cHRpb25Ta2lwSW50ZXJ2YWwgZ2V0a01STWVkaWFSZW1vdGVPcHRpb25Ta2lwSW50ZXJ2YWwoKQor
CitTT0ZUX0xJTktfQ09OU1RBTlQoTWVkaWFSZW1vdGUsIGtNUk1lZGlhUmVtb3RlT3B0aW9uUGxh
eWJhY2tQb3NpdGlvbiwgQ0ZTdHJpbmdSZWYpCisjZGVmaW5lIGtNUk1lZGlhUmVtb3RlT3B0aW9u
UGxheWJhY2tQb3NpdGlvbiBnZXRrTVJNZWRpYVJlbW90ZU9wdGlvblBsYXliYWNrUG9zaXRpb24o
KQorCisjaWYgIVVTRShBUFBMRV9JTlRFUk5BTF9TREspCitAaW50ZXJmYWNlIE1SQ29tbWFuZElu
Zm8gOiBOU09iamVjdAorQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBNUk1lZGlhUmVt
b3RlQ29tbWFuZCBjb21tYW5kOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBnZXR0
ZXI9aXNFbmFibGVkKSBCT09MIGVuYWJsZWQ7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9u
bHksIG51bGxhYmxlLCBjb3B5KSBOU0RpY3Rpb25hcnkgKm9wdGlvbnM7CitAZW5kCisjZW5kaWYK
KworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitjbGFzcyBNZWRpYVNlc3Npb25UZXN0IDog
cHVibGljIHRlc3Rpbmc6OlRlc3QgeworcHVibGljOgorICAgIHZvaWQgU2V0VXAoKSBmaW5hbAor
ICAgIHsKKyAgICAgICAgX2NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgICAgICBbX2NvbmZpZ3VyYXRpb24gc2V0TWVkaWFU
eXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjazpXS0F1ZGlvdmlzdWFsTWVkaWFUeXBl
QXVkaW9dOworCisgICAgICAgIF93ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAzMDAsIDMwMCkgY29uZmlndXJhdGlv
bjpfY29uZmlndXJhdGlvbi5nZXQoKSBhZGRUb1dpbmRvdzpZRVNdKTsKKworICAgICAgICBXS1By
ZWZlcmVuY2VzICpwcmVmZXJlbmNlcyA9IFtfd2ViVmlldyBjb25maWd1cmF0aW9uXS5wcmVmZXJl
bmNlczsKKyAgICAgICAgcHJlZmVyZW5jZXMuX21lZGlhU2Vzc2lvbkVuYWJsZWQgPSBZRVM7CisK
KyAgICAgICAgX21lc3NhZ2VIYW5kbGVycyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdF0pOworICAgIH0KKworICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQorICAgIHsK
KyAgICAgICAgW193ZWJWaWV3IGNsZWFyTWVzc2FnZUhhbmRsZXJzOl9tZXNzYWdlSGFuZGxlcnMu
Z2V0KCldOworICAgIH0KKworICAgIFRlc3RXS1dlYlZpZXcqIHdlYlZpZXcoKSB7IHJldHVybiBf
d2ViVmlldy5nZXQoKTsgfQorCisgICAgcGlkX3Qgd2ViVmlld1BpZCgpIHsgcmV0dXJuIFtfd2Vi
VmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdOyB9CisKKyAgICBSZXRhaW5QdHI8TVJOb3dQbGF5
aW5nQ2xpZW50UmVmPiBnZXROb3dQbGF5aW5nQ2xpZW50KCkKKyAgICB7CisgICAgICAgIGJvb2wg
Z290Tm93UGxheWluZyA9IGZhbHNlOworICAgICAgICBSZXRhaW5QdHI8TVJOb3dQbGF5aW5nQ2xp
ZW50UmVmPiBub3dQbGF5aW5nQ2xpZW50OworICAgICAgICBNUk1lZGlhUmVtb3RlR2V0Tm93UGxh
eWluZ0NsaWVudChkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbJl0gKE1STm93UGxheWluZ0Ns
aWVudFJlZiBwbGF5ZXIsIENGRXJyb3JSZWYgZXJyb3IpIHsKKyAgICAgICAgICAgIGlmICghZXJy
b3IgJiYgcGxheWVyKQorICAgICAgICAgICAgICAgIG5vd1BsYXlpbmdDbGllbnQgPSBwbGF5ZXI7
CisgICAgICAgICAgICBnb3ROb3dQbGF5aW5nID0gdHJ1ZTsKKyAgICAgICAgfSk7CisgICAgICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZ290Tm93UGxheWluZyk7CisgICAgICAgIHJldHVy
biBub3dQbGF5aW5nQ2xpZW50OworICAgIH0KKworICAgIHBpZF90IGdldE5vd1BsYXlpbmdDbGll
bnRQaWQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE1STm93UGxheWluZ0NsaWVudEdldFByb2Nl
c3NJZGVudGlmaWVyKGdldE5vd1BsYXlpbmdDbGllbnQoKS5nZXQoKSk7CisgICAgfQorCisgICAg
dm9pZCBsb2FkUGFnZUFuZEJlY29tZU5vd1BsYXlpbmcoY29uc3QgU3RyaW5nJiBwYWdlTmFtZSkK
KyAgICB7CisgICAgICAgIFtfd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6
cGFnZU5hbWVdOworCisgICAgICAgIGJvb2wgY2FucGxheXRocm91Z2ggPSBmYWxzZTsKKyAgICAg
ICAgW3dlYlZpZXcoKSBwZXJmb3JtQWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOkAiY2FucGxheXRocm91
Z2ggZXZlbnQiIGFjdGlvbjpbJl0geworICAgICAgICAgICAgY2FucGxheXRocm91Z2ggPSB0cnVl
OworICAgICAgICB9XTsKKyAgICAgICAgcnVuU2NyaXB0V2l0aFVzZXJHZXN0dXJlKCJsb2FkKCki
KTsKKyAgICAgICAgVXRpbDo6cnVuKCZjYW5wbGF5dGhyb3VnaCk7CisKKyAgICAgICAgcGxheSgp
OworICAgICAgICBwYXVzZSgpOworICAgICAgICBBU1NFUlRfRVEod2ViVmlld1BpZCgpLCBnZXRO
b3dQbGF5aW5nQ2xpZW50UGlkKCkpOworICAgIH0KKworICAgIHZvaWQgcnVuU2NyaXB0V2l0aFVz
ZXJHZXN0dXJlKGNvbnN0IFN0cmluZyYgc2NyaXB0KQorICAgIHsKKyAgICAgICAgYm9vbCBjb21w
bGV0ZSA9IGZhbHNlOworICAgICAgICBbX3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OnNjcmlw
dCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkLCBOU0Vycm9yICopIHsgY29tcGxldGUgPSB0cnVl
OyB9XTsKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZjb21wbGV0ZSk7CisgICAg
fQorCisgICAgdm9pZCBwbGF5KCkKKyAgICB7CisgICAgICAgIGJvb2wgcGxheWluZyA9IGZhbHNl
OworICAgICAgICBbX3dlYlZpZXcgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAInBsYXkg
ZXZlbnQiIGFjdGlvbjpbJl0geyBwbGF5aW5nID0gdHJ1ZTsgfV07CisgICAgICAgIHJ1blNjcmlw
dFdpdGhVc2VyR2VzdHVyZSgiYXVkaW8ucGxheSgpIik7CisgICAgICAgIFV0aWw6OnJ1bigmcGxh
eWluZyk7CisgICAgfQorCisgICAgdm9pZCBwYXVzZSgpCisgICAgeworICAgICAgICBib29sIHBh
dXNlZCA9IGZhbHNlOworICAgICAgICBbX3dlYlZpZXcgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVz
c2FnZTpAInBhdXNlIGV2ZW50IiBhY3Rpb246WyZdIHsgcGF1c2VkID0gdHJ1ZTsgfV07CisgICAg
ICAgIHJ1blNjcmlwdFdpdGhVc2VyR2VzdHVyZSgiYXVkaW8ucGF1c2UoKSIpOworICAgICAgICBV
dGlsOjpydW4oJnBhdXNlZCk7CisgICAgfQorCisgICAgYm9vbCBzZW5kTWVkaWFSZW1vdGVDb21t
YW5kKE1STWVkaWFSZW1vdGVDb21tYW5kIGNvbW1hbmQsIENGRGljdGlvbmFyeVJlZiBvcHRpb25z
ID0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIGJvb2wgY29tcGxldGVkID0gZmFsc2U7CisgICAg
ICAgIGJvb2wgc3VjY2VzczsKKworICAgICAgICBNUk1lZGlhUmVtb3RlU2VuZENvbW1hbmRUb0Fw
cChjb21tYW5kLCBvcHRpb25zLCBOVUxMLCBOVUxMLCBzdGF0aWNfY2FzdDxNUlNlbmRDb21tYW5k
QXBwT3B0aW9ucz4oMCksIE5VTEwsIFsmXSAoTVJTZW5kQ29tbWFuZEVycm9yIGVycm9yLCBDRkFy
cmF5UmVmKSB7CisgICAgICAgICAgICBzdWNjZXNzID0gIWVycm9yOworICAgICAgICAgICAgY29t
cGxldGVkID0gdHJ1ZTsKKyAgICAgICAgfSk7CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmY29tcGxldGVkKTsKKworICAgICAgICByZXR1cm4gc3VjY2VzczsKKyAgICB9CisKKyAg
ICBib29sIHNlbmRNZWRpYVJlbW90ZVNlZWtDb21tYW5kKE1STWVkaWFSZW1vdGVDb21tYW5kIGNv
bW1hbmQsIGRvdWJsZSBpbnRlcnZhbCkKKyAgICB7CisgICAgICAgIENGU3RyaW5nUmVmIHNlZWtJ
bnRlcnZhbCA9IChjb21tYW5kID09IE1STWVkaWFSZW1vdGVDb21tYW5kU2Vla1RvUGxheWJhY2tQ
b3NpdGlvbikgPyBrTVJNZWRpYVJlbW90ZU9wdGlvblBsYXliYWNrUG9zaXRpb24gOiBrTVJNZWRp
YVJlbW90ZU9wdGlvblNraXBJbnRlcnZhbDsKKyAgICAgICAgTlNEaWN0aW9uYXJ5ICpvcHRpb25z
ID0gQHsoX19icmlkZ2UgTlNTdHJpbmcgKilzZWVrSW50ZXJ2YWwgOiBAKGludGVydmFsKX07Cisg
ICAgICAgIHJldHVybiBzZW5kTWVkaWFSZW1vdGVDb21tYW5kKGNvbW1hbmQsIChfX2JyaWRnZSBD
RkRpY3Rpb25hcnlSZWYpb3B0aW9ucyk7CisgICAgfQorCisgICAgdm9pZCBsaXN0ZW5Gb3JFdmVu
dE1lc3NhZ2VzKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxjb25zdCBjaGFyKj4gZXZlbnRzKQorICAg
IHsKKyAgICAgICAgZm9yIChhdXRvKiBldmVudCA6IGV2ZW50cykgeworICAgICAgICAgICAgYXV0
byBldmVudE1lc3NhZ2UgPSBtYWtlU3RyaW5nKGV2ZW50LCAiIGV2ZW50Iik7CisgICAgICAgICAg
ICBbX21lc3NhZ2VIYW5kbGVycyBhZGRPYmplY3Q6ZXZlbnRNZXNzYWdlXTsKKyAgICAgICAgICAg
IFt3ZWJWaWV3KCkgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpldmVudE1lc3NhZ2UgYWN0
aW9uOlt0aGlzLCBldmVudE1lc3NhZ2UgPSBXVEZNb3ZlKGV2ZW50TWVzc2FnZSldIHsKKyAgICAg
ICAgICAgICAgICBfZXZlbnRMaXN0ZW5lcnNDYWxsZWQuYWRkKGV2ZW50TWVzc2FnZSk7CisgICAg
ICAgICAgICB9XTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGJvb2wgZXZlbnRMaXN0ZW5lcldh
c0NhbGxlZChjb25zdCBTdHJpbmcmIGV2ZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIF9ldmVu
dExpc3RlbmVyc0NhbGxlZC5jb250YWlucyhtYWtlU3RyaW5nKGV2ZW50LCAiIGV2ZW50IikpOwor
ICAgIH0KKworICAgIHZvaWQgd2FpdEZvckV2ZW50TGlzdGVuZXJUb0JlQ2FsbGVkKGNvbnN0IFN0
cmluZyYgZXZlbnQpCisgICAgeworICAgICAgICBpbnQgdHJpZXMgPSAwOworICAgICAgICBkbyB7
CisgICAgICAgICAgICBpZiAoZXZlbnRMaXN0ZW5lcldhc0NhbGxlZChldmVudCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgVXRpbDo6c2xlZXAoMC4xKTsKKyAgICAgICAg
fSB3aGlsZSAoKyt0cmllcyA8PSA1MCk7CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IHZvaWQgbGlzdGVuRm9yU2Vzc2lvbkhhbmRsZXJNZXNzYWdlcyhzdGQ6OmluaXRpYWxpemVyX2xp
c3Q8Y29uc3QgY2hhcio+IGhhbmRsZXJzKQorICAgIHsKKyAgICAgICAgZm9yIChhdXRvKiBoYW5k
bGVyIDogaGFuZGxlcnMpIHsKKyAgICAgICAgICAgIGF1dG8gaGFuZGxlck1lc3NhZ2UgPSBtYWtl
U3RyaW5nKGhhbmRsZXIsICIgaGFuZGxlciIpOworICAgICAgICAgICAgW19tZXNzYWdlSGFuZGxl
cnMgYWRkT2JqZWN0OmhhbmRsZXJNZXNzYWdlXTsKKyAgICAgICAgICAgIFt3ZWJWaWV3KCkgcGVy
Zm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpoYW5kbGVyTWVzc2FnZSBhY3Rpb246W3RoaXMsIGhh
bmRsZXJNZXNzYWdlID0gV1RGTW92ZShoYW5kbGVyTWVzc2FnZSldIHsKKyAgICAgICAgICAgICAg
ICBfbWVkaWFTZXNzaW9uSGFuZGxlcnNDYWxsZWQuYWRkKGhhbmRsZXJNZXNzYWdlKTsKKyAgICAg
ICAgICAgIH1dOworICAgICAgICB9CisgICAgfQorCisgICAgYm9vbCBzZXNzaW9uSGFuZGxlcldh
c0NhbGxlZChjb25zdCBTdHJpbmcmIGhhbmRsZXIpCisgICAgeworICAgICAgICByZXR1cm4gX21l
ZGlhU2Vzc2lvbkhhbmRsZXJzQ2FsbGVkLmNvbnRhaW5zKG1ha2VTdHJpbmcoaGFuZGxlciwgIiBo
YW5kbGVyIikpOworICAgIH0KKworICAgIHZvaWQgd2FpdEZvclNlc3Npb25IYW5kbGVyVG9CZUNh
bGxlZChjb25zdCBTdHJpbmcmIGhhbmRsZXIpCisgICAgeworICAgICAgICBpbnQgdHJpZXMgPSAw
OworICAgICAgICBkbyB7CisgICAgICAgICAgICBpZiAoc2Vzc2lvbkhhbmRsZXJXYXNDYWxsZWQo
aGFuZGxlcikpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgVXRpbDo6c2xl
ZXAoMC4xKTsKKyAgICAgICAgfSB3aGlsZSAoKyt0cmllcyA8PSA1MCk7CisKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIFJldGFpblB0cjxOU0FycmF5PiBnZXRTdXBwb3J0ZWRDb21tYW5k
cygpCisgICAgeworICAgICAgICBib29sIGNvbXBsZXRlZCA9IGZhbHNlOworICAgICAgICBSZXRh
aW5QdHI8TlNBcnJheT4gcmVzdWx0OworCisgICAgICAgIE1STWVkaWFSZW1vdGVHZXRTdXBwb3J0
ZWRDb21tYW5kc0Zvck9yaWdpbihNUk1lZGlhUmVtb3RlR2V0TG9jYWxPcmlnaW4oKSwgZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSwgWyZdIChDRkFycmF5UmVmIGNvbW1hbmRzKSB7CisgICAgICAg
ICAgICByZXN1bHQgPSAoX19icmlkZ2UgTlNBcnJheSAqKWNvbW1hbmRzOworICAgICAgICAgICAg
Y29tcGxldGVkID0gdHJ1ZTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZjb21wbGV0ZWQpOworCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQor
Citwcml2YXRlOgorICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBfY29uZmln
dXJhdGlvbjsKKyAgICBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gX3dlYlZpZXc7CisKKyAgICBI
YXNoU2V0PFN0cmluZz4gX21lZGlhU2Vzc2lvbkhhbmRsZXJzQ2FsbGVkOworICAgIEhhc2hTZXQ8
U3RyaW5nPiBfZXZlbnRMaXN0ZW5lcnNDYWxsZWQ7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFy
cmF5PiBfbWVzc2FnZUhhbmRsZXJzOworfTsKKworVEVTVF9GKE1lZGlhU2Vzc2lvblRlc3QsIE9u
bHlPbmVIYW5kbGVyKQoreworICAgIGxvYWRQYWdlQW5kQmVjb21lTm93UGxheWluZygibWVkaWEt
cmVtb3RlIik7CisKKyAgICBbd2ViVmlldygpIG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6
QCJzZXRFbXB0eUFjdGlvbkhhbmRsZXJzKFsgJ3BsYXknIF0pIl07CisKKyAgICBsaXN0ZW5Gb3JT
ZXNzaW9uSGFuZGxlck1lc3NhZ2VzKHsgInBsYXkiLCAicGF1c2UiLCAic2Vla3RvIiwgInNlZWtm
b3J3YXJkIiwgInNlZWtiYWNrd2FyZCIsICJwcmV2aW91c3RyYWNrIiwgIm5leHR0cmFjayIgfSk7
CisgICAgbGlzdGVuRm9yRXZlbnRNZXNzYWdlcyh7ICJwbGF5IiwgInBhdXNlIiwgInNlZWtlZCIg
fSk7CisKKyAgICBzdGF0aWMgVmVjdG9yPE1STWVkaWFSZW1vdGVDb21tYW5kPiByZWdpc3RlcmVk
Q29tbWFuZHMgPSB7IE1STWVkaWFSZW1vdGVDb21tYW5kUGxheSB9OworICAgIGF1dG8gY3VycmVu
dENvbW1hbmRzID0gZ2V0U3VwcG9ydGVkQ29tbWFuZHMoKTsKKyAgICBmb3IgKE1SQ29tbWFuZElu
Zm8gKmNvbW1hbmQgaW4gY3VycmVudENvbW1hbmRzLmdldCgpKSB7CisgICAgICAgIGlmICghY29t
bWFuZC5lbmFibGVkKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICBB
U1NFUlRfVFJVRShyZWdpc3RlcmVkQ29tbWFuZHMuY29udGFpbnMoY29tbWFuZC5jb21tYW5kKSk7
CisgICAgfQorCisgICAgQVNTRVJUX1RSVUUoc2VuZE1lZGlhUmVtb3RlQ29tbWFuZChNUk1lZGlh
UmVtb3RlQ29tbWFuZFBsYXkpKTsKKyAgICB3YWl0Rm9yU2Vzc2lvbkhhbmRsZXJUb0JlQ2FsbGVk
KCJwbGF5Iik7CisgICAgQVNTRVJUX1RSVUUoc2Vzc2lvbkhhbmRsZXJXYXNDYWxsZWQoInBsYXki
KSk7CisgICAgQVNTRVJUX0ZBTFNFKGV2ZW50TGlzdGVuZXJXYXNDYWxsZWQoInBsYXkiKSk7CisK
KyAgICAvLyBUaGUgbWVkaWEgc2Vzc2lvbiBvbmx5IHJlZ2lzdGVyZWQgZm9yIFBsYXksIGJ1dCBu
byBvdGhlciBjb21tYW5kcyBzaG91bGQgcmVhY2ggSFRNTE1lZGlhRWxlbWVudC4KKyAgICBBU1NF
UlRfVFJVRShzZW5kTWVkaWFSZW1vdGVTZWVrQ29tbWFuZChNUk1lZGlhUmVtb3RlQ29tbWFuZFNr
aXBGb3J3YXJkLCAxKSk7CisgICAgQVNTRVJUX0ZBTFNFKHNlc3Npb25IYW5kbGVyV2FzQ2FsbGVk
KCJzZWVrZm9yd2FyZCIpKTsKKyAgICBBU1NFUlRfRkFMU0UoZXZlbnRMaXN0ZW5lcldhc0NhbGxl
ZCgic2Vla2VkIikpOworCisgICAgQVNTRVJUX1RSVUUoc2VuZE1lZGlhUmVtb3RlU2Vla0NvbW1h
bmQoTVJNZWRpYVJlbW90ZUNvbW1hbmRTa2lwQmFja3dhcmQsIDEwKSk7CisgICAgQVNTRVJUX0ZB
TFNFKHNlc3Npb25IYW5kbGVyV2FzQ2FsbGVkKCJzZWVrYmFja3dhcmQiKSk7CisgICAgQVNTRVJU
X0ZBTFNFKGV2ZW50TGlzdGVuZXJXYXNDYWxsZWQoInNlZWtlZCIpKTsKKworICAgIEFTU0VSVF9U
UlVFKHNlbmRNZWRpYVJlbW90ZVNlZWtDb21tYW5kKE1STWVkaWFSZW1vdGVDb21tYW5kU2Vla1Rv
UGxheWJhY2tQb3NpdGlvbiwgNikpOworICAgIEFTU0VSVF9GQUxTRShzZXNzaW9uSGFuZGxlcldh
c0NhbGxlZCgic2Vla3RvIikpOworICAgIEFTU0VSVF9GQUxTRShldmVudExpc3RlbmVyV2FzQ2Fs
bGVkKCJzZWVrZWQiKSk7CisKKyAgICBBU1NFUlRfVFJVRShzZW5kTWVkaWFSZW1vdGVDb21tYW5k
KE1STWVkaWFSZW1vdGVDb21tYW5kTmV4dFRyYWNrKSk7CisgICAgQVNTRVJUX0ZBTFNFKHNlc3Np
b25IYW5kbGVyV2FzQ2FsbGVkKCJuZXh0dHJhY2siKSk7CisKKyAgICBBU1NFUlRfVFJVRShzZW5k
TWVkaWFSZW1vdGVDb21tYW5kKE1STWVkaWFSZW1vdGVDb21tYW5kUHJldmlvdXNUcmFjaykpOwor
ICAgIEFTU0VSVF9GQUxTRShzZXNzaW9uSGFuZGxlcldhc0NhbGxlZCgicHJldmlvdXN0cmFjayIp
KTsKK30KKworVEVTVF9GKE1lZGlhU2Vzc2lvblRlc3QsIFJlbW90ZUNvbW1hbmRzKQoreworICAg
IGxvYWRQYWdlQW5kQmVjb21lTm93UGxheWluZygibWVkaWEtcmVtb3RlIik7CisKKyAgICBbd2Vi
VmlldygpIG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJzZXRFbXB0eUFjdGlvbkhhbmRs
ZXJzKFsgJ3BsYXknLCAncGF1c2UnLCAnc2Vla3RvJywgJ3NlZWtmb3J3YXJkJywgJ3NlZWtiYWNr
d2FyZCcsICdwcmV2aW91c3RyYWNrJywgJ25leHR0cmFjaycgXSkiXTsKKworICAgIGxpc3RlbkZv
clNlc3Npb25IYW5kbGVyTWVzc2FnZXMoeyAicGxheSIsICJwYXVzZSIsICJzZWVrdG8iLCAic2Vl
a2ZvcndhcmQiLCAic2Vla2JhY2t3YXJkIiwgInByZXZpb3VzdHJhY2siLCAibmV4dHRyYWNrIiB9
KTsKKyAgICBsaXN0ZW5Gb3JFdmVudE1lc3NhZ2VzKHsgInBsYXkiLCAicGF1c2UiLCAic2Vla2Vk
IiB9KTsKKworICAgIHN0YXRpYyBWZWN0b3I8TVJNZWRpYVJlbW90ZUNvbW1hbmQ+IHJlZ2lzdGVy
ZWRDb21tYW5kcyA9IHsgTVJNZWRpYVJlbW90ZUNvbW1hbmRQbGF5LCBNUk1lZGlhUmVtb3RlQ29t
bWFuZFBhdXNlLCBNUk1lZGlhUmVtb3RlQ29tbWFuZFNlZWtUb1BsYXliYWNrUG9zaXRpb24sIE1S
TWVkaWFSZW1vdGVDb21tYW5kU2tpcEZvcndhcmQsIE1STWVkaWFSZW1vdGVDb21tYW5kU2tpcEJh
Y2t3YXJkLCBNUk1lZGlhUmVtb3RlQ29tbWFuZFByZXZpb3VzVHJhY2ssIE1STWVkaWFSZW1vdGVD
b21tYW5kTmV4dFRyYWNrIH07CisgICAgYXV0byBjdXJyZW50Q29tbWFuZHMgPSBnZXRTdXBwb3J0
ZWRDb21tYW5kcygpOworICAgIGZvciAoTVJDb21tYW5kSW5mbyAqY29tbWFuZCBpbiBjdXJyZW50
Q29tbWFuZHMuZ2V0KCkpIHsKKyAgICAgICAgaWYgKCFjb21tYW5kLmVuYWJsZWQpCisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgCisgICAgICAgIEFTU0VSVF9UUlVFKHJlZ2lzdGVyZWRD
b21tYW5kcy5jb250YWlucyhjb21tYW5kLmNvbW1hbmQpKTsKKyAgICB9CisKKyAgICBBU1NFUlRf
VFJVRShzZW5kTWVkaWFSZW1vdGVDb21tYW5kKE1STWVkaWFSZW1vdGVDb21tYW5kUGxheSkpOwor
ICAgIHdhaXRGb3JTZXNzaW9uSGFuZGxlclRvQmVDYWxsZWQoInBsYXkiKTsKKyAgICBBU1NFUlRf
VFJVRShzZXNzaW9uSGFuZGxlcldhc0NhbGxlZCgicGxheSIpKTsKKyAgICBBU1NFUlRfRkFMU0Uo
ZXZlbnRMaXN0ZW5lcldhc0NhbGxlZCgicGxheSIpKTsKKworICAgIEFTU0VSVF9UUlVFKHNlbmRN
ZWRpYVJlbW90ZUNvbW1hbmQoTVJNZWRpYVJlbW90ZUNvbW1hbmRQYXVzZSkpOworICAgIHdhaXRG
b3JTZXNzaW9uSGFuZGxlclRvQmVDYWxsZWQoInBhdXNlIik7CisgICAgQVNTRVJUX1RSVUUoc2Vz
c2lvbkhhbmRsZXJXYXNDYWxsZWQoInBhdXNlIikpOworICAgIEFTU0VSVF9GQUxTRShldmVudExp
c3RlbmVyV2FzQ2FsbGVkKCJwYXVzZSIpKTsKKworICAgIEFTU0VSVF9UUlVFKHNlbmRNZWRpYVJl
bW90ZVNlZWtDb21tYW5kKE1STWVkaWFSZW1vdGVDb21tYW5kU2tpcEZvcndhcmQsIDEpKTsKKyAg
ICB3YWl0Rm9yU2Vzc2lvbkhhbmRsZXJUb0JlQ2FsbGVkKCJzZWVrZm9yd2FyZCIpOworICAgIEFT
U0VSVF9UUlVFKHNlc3Npb25IYW5kbGVyV2FzQ2FsbGVkKCJzZWVrZm9yd2FyZCIpKTsKKyAgICBB
U1NFUlRfRkFMU0UoZXZlbnRMaXN0ZW5lcldhc0NhbGxlZCgic2Vla2VkIikpOworCisgICAgQVNT
RVJUX1RSVUUoc2VuZE1lZGlhUmVtb3RlU2Vla0NvbW1hbmQoTVJNZWRpYVJlbW90ZUNvbW1hbmRT
a2lwQmFja3dhcmQsIDEwKSk7CisgICAgd2FpdEZvclNlc3Npb25IYW5kbGVyVG9CZUNhbGxlZCgi
c2Vla2JhY2t3YXJkIik7CisgICAgQVNTRVJUX1RSVUUoc2Vzc2lvbkhhbmRsZXJXYXNDYWxsZWQo
InNlZWtiYWNrd2FyZCIpKTsKKyAgICBBU1NFUlRfRkFMU0UoZXZlbnRMaXN0ZW5lcldhc0NhbGxl
ZCgic2Vla2VkIikpOworCisgICAgQVNTRVJUX1RSVUUoc2VuZE1lZGlhUmVtb3RlU2Vla0NvbW1h
bmQoTVJNZWRpYVJlbW90ZUNvbW1hbmRTZWVrVG9QbGF5YmFja1Bvc2l0aW9uLCA2KSk7CisgICAg
d2FpdEZvclNlc3Npb25IYW5kbGVyVG9CZUNhbGxlZCgic2Vla3RvIik7CisgICAgQVNTRVJUX1RS
VUUoc2Vzc2lvbkhhbmRsZXJXYXNDYWxsZWQoInNlZWt0byIpKTsKKyAgICBBU1NFUlRfRkFMU0Uo
ZXZlbnRMaXN0ZW5lcldhc0NhbGxlZCgic2Vla2VkIikpOworCisgICAgQVNTRVJUX1RSVUUoc2Vu
ZE1lZGlhUmVtb3RlQ29tbWFuZChNUk1lZGlhUmVtb3RlQ29tbWFuZE5leHRUcmFjaykpOworICAg
IHdhaXRGb3JTZXNzaW9uSGFuZGxlclRvQmVDYWxsZWQoIm5leHR0cmFjayIpOworICAgIEFTU0VS
VF9UUlVFKHNlc3Npb25IYW5kbGVyV2FzQ2FsbGVkKCJuZXh0dHJhY2siKSk7CisKKyAgICBBU1NF
UlRfVFJVRShzZW5kTWVkaWFSZW1vdGVDb21tYW5kKE1STWVkaWFSZW1vdGVDb21tYW5kUHJldmlv
dXNUcmFjaykpOworICAgIHdhaXRGb3JTZXNzaW9uSGFuZGxlclRvQmVDYWxsZWQoInByZXZpb3Vz
dHJhY2siKTsKKyAgICBBU1NFUlRfVFJVRShzZXNzaW9uSGFuZGxlcldhc0NhbGxlZCgicHJldmlv
dXN0cmFjayIpKTsKKworICAgIC8vIFVucmVnaXN0ZXIgYWN0aW9uIGhhbmRsZXJzLCBzdXBwb3J0
ZWQgY29tbWFuZHMgc2hvdWxkIGdvIHRvIEhUTUxNZWRpYUVsZW1lbnQuCisgICAgW3dlYlZpZXco
KSBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiY2xlYXJBY3Rpb25IYW5kbGVycygpIl07
CisKKyAgICBBU1NFUlRfVFJVRShzZW5kTWVkaWFSZW1vdGVDb21tYW5kKE1STWVkaWFSZW1vdGVD
b21tYW5kUGxheSkpOworICAgIHdhaXRGb3JFdmVudExpc3RlbmVyVG9CZUNhbGxlZCgicGxheSIp
OworICAgIEFTU0VSVF9UUlVFKGV2ZW50TGlzdGVuZXJXYXNDYWxsZWQoInBsYXkiKSk7CisKKyAg
ICBBU1NFUlRfVFJVRShzZW5kTWVkaWFSZW1vdGVDb21tYW5kKE1STWVkaWFSZW1vdGVDb21tYW5k
UGF1c2UpKTsKKyAgICB3YWl0Rm9yRXZlbnRMaXN0ZW5lclRvQmVDYWxsZWQoInBsYXkiKTsKKyAg
ICBBU1NFUlRfVFJVRShldmVudExpc3RlbmVyV2FzQ2FsbGVkKCJwYXVzZSIpKTsKKworICAgIEFT
U0VSVF9UUlVFKHNlbmRNZWRpYVJlbW90ZVNlZWtDb21tYW5kKE1STWVkaWFSZW1vdGVDb21tYW5k
U2tpcEZvcndhcmQsIDEpKTsKKyAgICB3YWl0Rm9yRXZlbnRMaXN0ZW5lclRvQmVDYWxsZWQoInNl
ZWtlZCIpOworICAgIEFTU0VSVF9UUlVFKGV2ZW50TGlzdGVuZXJXYXNDYWxsZWQoInNlZWtlZCIp
KTsKKworICAgIEFTU0VSVF9UUlVFKHNlbmRNZWRpYVJlbW90ZVNlZWtDb21tYW5kKE1STWVkaWFS
ZW1vdGVDb21tYW5kU2tpcEJhY2t3YXJkLCAxMCkpOworICAgIHdhaXRGb3JFdmVudExpc3RlbmVy
VG9CZUNhbGxlZCgic2Vla2VkIik7CisgICAgQVNTRVJUX1RSVUUoZXZlbnRMaXN0ZW5lcldhc0Nh
bGxlZCgic2Vla2VkIikpOworCisgICAgQVNTRVJUX1RSVUUoc2VuZE1lZGlhUmVtb3RlU2Vla0Nv
bW1hbmQoTVJNZWRpYVJlbW90ZUNvbW1hbmRTZWVrVG9QbGF5YmFja1Bvc2l0aW9uLCA2KSk7Cisg
ICAgd2FpdEZvckV2ZW50TGlzdGVuZXJUb0JlQ2FsbGVkKCJzZWVrZWQiKTsKKyAgICBBU1NFUlRf
VFJVRShldmVudExpc3RlbmVyV2FzQ2FsbGVkKCJzZWVrZWQiKSk7Cit9CisKK30KKworI2VuZGlm
IC8vIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKE1FRElBX1NFU1NJT04pCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL21lZGlhLXJlbW90ZS5odG1sIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9tZWRpYS1yZW1vdGUuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xYzk5M2M3Y2Q0MDFhZmYzMmNmMjMyZWRiYzg4M2VjZGM3OWJiMzVmCi0tLSAv
ZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9tZWRp
YS1yZW1vdGUuaHRtbApAQCAtMCwwICsxLDEzOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPHN0eWxlPgorICAgICNldmVudHNsb2cgeworICAgICAgICBmb250LXNpemU6IDEw
cHg7IAorICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtICgzMjBweCkpOworICAgICAgICBvdmVy
Zmxvdy15OiBzY3JvbGw7CisgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTQ3LCAxMjgs
IDEwOCwgMC4yNSk7CisgICAgfQorPC9zdHlsZT4KKyAgICA8c2NyaXB0PgorCisgICAgICAgIGxl
dCBwbGF5bGlzdCA9IHsKKyAgICAgICAgICAgIGN1cnJlbnQ6IDAsCisgICAgICAgICAgICBtZXRh
ZGF0YTogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdXJsOiAndmlk
ZW8td2l0aC1hdWRpby5tcDQnLAorICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ0JpcCBCb3Ag
V2l0aCBBdWRpbycsCisgICAgICAgICAgICAgICAgICAgIGFydGlzdDogJ1RoZSBCaXAgQm9wIEF1
dGhvcnMnLAorICAgICAgICAgICAgICAgICAgICBhbGJ1bTogJ1dlYktpdCBHcmVhdGVzdCBIaXRz
JywKKyAgICAgICAgICAgICAgICAgICAgYXJ0d29yazogWworCisgICAgICAgICAgICAgICAgICAg
IF0sCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIHVybDogJ3ZpZGVvLXdpdGhvdXQtYXVkaW8ubXA0JywKKyAgICAgICAgICAgICAgICAg
ICAgdGl0bGU6ICdCaXAgQm9wIFdpdGhvdXQgQXVkaW8nLAorICAgICAgICAgICAgICAgICAgICBh
cnRpc3Q6ICdUaGUgQmlwIEJvcCBBdXRob3JzJywKKyAgICAgICAgICAgICAgICAgICAgYWxidW06
ICdXZWJLaXQgT3JpZ2luYWwgVGVzdCBDb250ZW50JywKKyAgICAgICAgICAgICAgICAgICAgYXJ0
d29yazogWworCisgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgIF0sCisgICAgICAgIH07CisKKyAgICAgICAgZnVuY3Rpb24gc2V0TWV0YWRhdGEo
ZGF0YSkKKyAgICAgICAgeworICAgICAgICAgICAgbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5tZXRh
ZGF0YSA9IG5ldyBNZWRpYU1ldGFkYXRhKGRhdGEpOworICAgICAgICAgICAgcG9zdE1lc3NhZ2Uo
J3NldCBtZXRhZGF0YScpCisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzZXRQbGF5bGlz
dE1ldGFkYXRhKGluZGV4KQorICAgICAgICB7CisgICAgICAgICAgICBzZXRNZXRhZGF0YShwbGF5
bGlzdC5tZXRhZGF0YVtpbmRleF0pOworICAgICAgICAKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIGNsZWFyQWN0aW9uSGFuZGxlcnMoKQorICAgICAgICB7CisgICAgICAgICAgICBzZXRF
bXB0eUFjdGlvbkhhbmRsZXJzKFtdKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNl
dEVtcHR5QWN0aW9uSGFuZGxlcnMoaGFuZGxlcnMpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNv
bnN0IGFjdGlvbnMgPSB7CisgICAgICAgICAgICAgICAgJ3BsYXknIDogKCkgPT4geyBwb3N0TWVz
c2FnZSgncGxheSBoYW5kbGVyJyk7IH0sCisKKyAgICAgICAgICAgICAgICAncGF1c2UnIDogKCkg
PT4geyBwb3N0TWVzc2FnZSgncGF1c2UgaGFuZGxlcicpIH0sCisgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgJ3NlZWt0bycgOiAoZGV0YWlscykgPT4geyBwb3N0TWVzc2FnZSgnc2Vl
a3RvIGhhbmRsZXInKSB9LAorCisgICAgICAgICAgICAgICAgJ3NlZWtmb3J3YXJkJyA6IChkZXRh
aWxzKSA9PiB7IHBvc3RNZXNzYWdlKCdzZWVrZm9yd2FyZCBoYW5kbGVyJykgfSwKKworICAgICAg
ICAgICAgICAgICdzZWVrYmFja3dhcmQnIDogKGRldGFpbHMpID0+IHsgcG9zdE1lc3NhZ2UoJ3Nl
ZWtiYWNrd2FyZCBoYW5kbGVyJykgfSwgCisKKyAgICAgICAgICAgICAgICAncHJldmlvdXN0cmFj
aycgOiAoKSA9PiB7IHBvc3RNZXNzYWdlKCdwcmV2aW91c3RyYWNrIGhhbmRsZXInKSB9LCAKKwor
ICAgICAgICAgICAgICAgICduZXh0dHJhY2snIDogKCkgPT4geyBwb3N0TWVzc2FnZSgnbmV4dHRy
YWNrIGhhbmRsZXInKSB9LCAKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIE9iamVjdC5r
ZXlzKGFjdGlvbnMpLmZvckVhY2goYWN0aW9uID0+IHsgIG5hdmlnYXRvci5tZWRpYVNlc3Npb24u
c2V0QWN0aW9uSGFuZGxlcihhY3Rpb24sIG51bGwpOyB9KTsKKworICAgICAgICAgICAgaGFuZGxl
cnMuZm9yRWFjaChoYW5kbGVyID0+IHsKKyAgICAgICAgICAgICAgICBpZiAoIWFjdGlvbnNbaGFu
ZGxlcl0pIHsKKyAgICAgICAgICAgICAgICAgICAgbG9nKGBhc2tlZCB0byByZWdpc3RlciBoYW5k
bGVyIGZvciB1bmtub3duIGFjdGlvbiAnJHtoYW5kbGVyfSdgKTsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGxvZyhgcmVn
aXN0ZXJpbmcgJyR7aGFuZGxlcn0nIGhhbmRsZXJgKTsKKyAgICAgICAgICAgICAgICBuYXZpZ2F0
b3IubWVkaWFTZXNzaW9uLnNldEFjdGlvbkhhbmRsZXIoaGFuZGxlciwgYWN0aW9uc1toYW5kbGVy
XSk7IAorICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBwb3N0
TWVzc2FnZShtZXNzYWdlKQorICAgICAgICB7CisgICAgICAgICAgICBsb2coYCR7bWVzc2FnZX1g
KQorICAgICAgICAgICAgaWYgKHdpbmRvdy53ZWJraXQpCisgICAgICAgICAgICAgICAgd2luZG93
LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UobWVzc2FnZSk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBwb3N0RXZlbnQoZXZ0KSAKKyAgICAgICAg
eworICAgICAgICAgICAgcG9zdE1lc3NhZ2UoYCR7ZXZ0LnR5cGV9IGV2ZW50YCk7CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIGZ1bmN0aW9uIGxvYWQoKQorICAgICAgICB7CisgICAgICAg
ICAgICBsZXQgc3JjID0gcGxheWxpc3QubWV0YWRhdGFbMF0udXJsOworICAgICAgICAgICAgaWYg
KCF3aW5kb3cud2Via2l0KQorICAgICAgICAgICAgICAgIHNyYyA9IGAuLi9XZWJLaXRMZWdhY3kv
aW9zLyR7c3JjfWA7CisgICAgICAgICAgICBhdWRpby5zcmMgPSBzcmM7CisgICAgICAgICAgICBh
dWRpby5sb2FkKCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGZ1bmN0aW9uIGxvZyht
c2cpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxldCBldmVudExvZyA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdldmVudHNsb2cnKQorICAgICAgICAgICAgbGV0IG5vdGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgICAgIG5vdGUuaW5uZXJIVE1MID0gbXNnOwor
ICAgICAgICAgICAgZXZlbnRMb2cuaW5zZXJ0QmVmb3JlKG5vdGUsIGV2ZW50TG9nLmZpcnN0Q2hp
bGQpOworICAgICAgICB9CisKKyAgICAgICAgCisgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3Rl
bmVyKCJsb2FkIiwgZXZ0ID0+IHsKKyAgICAgICAgICAgIGF1ZGlvID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoJ2F1ZGlvJylbMF07CisgICAgICAgICAgICBhdWRpby5hZGRFdmVudExp
c3RlbmVyKCdjYW5wbGF5dGhyb3VnaCcsIHBvc3RFdmVudCk7CisgICAgICAgICAgICBhdWRpby5h
ZGRFdmVudExpc3RlbmVyKCdwbGF5JywgcG9zdEV2ZW50KTsKKyAgICAgICAgICAgIGF1ZGlvLmFk
ZEV2ZW50TGlzdGVuZXIoJ3BhdXNlJywgcG9zdEV2ZW50KTsKKyAgICAgICAgICAgIGF1ZGlvLmFk
ZEV2ZW50TGlzdGVuZXIoJ3NlZWtlZCcsIHBvc3RFdmVudCk7CisgICAgICAgIH0sIGZhbHNlKTsK
KworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPGF1ZGlvIGNvbnRyb2xzPiA8
L2F1ZGlvPgorICAgIDxicj4KKyAgICA8YnV0dG9uIG9uY2xpY2s9InNldEVtcHR5QWN0aW9uSGFu
ZGxlcnMoWydwbGF5JywncGF1c2UnLCdzZWVrdG8nXSkiPkVtcHR5IFBsYXksIFBhdXNlLCBTZWVr
VG88L2J1dHRvbj4KKyAgICA8YnI+CisgICAgPGJ1dHRvbiBvbmNsaWNrPSJzZXRFbXB0eUFjdGlv
bkhhbmRsZXJzKFsncGxheScsJ3BhdXNlJywnc2Vla2ZvcndhcmQnLCdzZWVrYmFja3dhcmQnXSki
PkVtcHR5IFBsYXksIFBhdXNlLCBTZWVrIEZvcndhcmQsIFNlZWsgQmFja3dhcmQ8L2J1dHRvbj4K
KyAgICA8YnI+CisgICAgPGJ1dHRvbiBvbmNsaWNrPSJsb2FkKCkiPkxvYWQ8L2J1dHRvbj4KKyAg
ICA8YnI+CisgICAgPGJ1dHRvbiBvbmNsaWNrPSJzZXRQbGF5bGlzdE1ldGFkYXRhKDApIj5TZXQg
TWV0YWRhdGEgMTwvYnV0dG9uPjxidXR0b24gb25jbGljaz0ic2V0UGxheWxpc3RNZXRhZGF0YSgx
KSI+U2V0IE1ldGFkYXRhIDI8L2J1dHRvbj4KKyAgICA8YnI+CisgICAgPGRpdiBpZD0nZXZlbnRz
bG9nJz48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="commit-queue"
          id="437612"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419392</attachid>
            <date>2021-02-05 05:13:38 -0800</date>
            <delta_ts>2021-02-05 10:33:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221431-20210205051337.patch</filename>
            <type>text/plain</type>
            <size>93951</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDY1NTU5N2Y2NWVlNjhi
MzU4NTk2MzFmZjU2MjljMzNiZmE0YTliOC4uY2M4OTA1ZGZkZWQwZTg0N2Q2MzEwZmFiNjUyMzg4
YThhMTc1ZmQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisyMDIxLTAyLTA0ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIENvbm5l
Y3QgTWVkaWFTZXNzaW9uIHdpdGggTWVkaWFSZW1vdGUgYW5kIE5vd1BsYXlpbmcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTQzMQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNzQwMDAzNjM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUm91dGUgYWxsIHJlbW90ZSBjb250cm9sIGNvbW1hbmRzIHRvIG5h
dmlnYXRvci5tZWRpYVNlc3Npb24gd2hlbiBpdCBoYXMgYW55IAorICAgICAgICByZWdpc3RlcmVk
IGFjdGlvbiBoYW5kbGVycywgYW5kIHBhc3MgbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5tZXRhZGF0
YSB0byBOb3dQbGF5aW5nLgorCisgICAgICAgIFRlc3RlZCBieSBuZXcgQVBJIHRlc3RzIGluIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTWVkaWFTZXNzaW9uLm1tLgorCisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFJbWFnZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFJbWFnZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
SW1hZ2U6OmRlY29kZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRh
ZGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYU1ldGFkYXRhOjpzZXRUaXRsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYU1ldGFkYXRhOjpzZXRBcnRpc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFNZXRhZGF0YTo6c2V0QWxidW0pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFN
ZXRhZGF0YTo6c2V0QXJ0d29yayk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVk
aWFNZXRhZGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFNZXRhZGF0YTo6dGl0bGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFNZXRhZGF0YTo6YXJ0aXN0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhTWV0YWRhdGE6OmFsYnVtIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhTWV0YWRhdGE6OmFydHdvcmsgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFNZXRhZGF0YTo6bWV0YWRhdGEgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
ZXNzaW9uL01lZGlhTWV0YWRhdGFJbml0Lmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYU1ldGFk
YXRhSW5pdDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhTWV0YWRhdGFJ
bml0OjpkZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpuZXh0TG9nSWRlbnRpZmllcik6CisgICAgICAgIChX
ZWJDb3JlOjpsb2dDaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6OmxvZ0NsYXNzTmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUNvbW1hbmRGb3JNZWRpYVNlc3Npb25BY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uOjpNZWRpYVNlc3Npb24pOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTZXNzaW9uOjpzZXRNZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVNlc3Npb246OnNldFBsYXliYWNrU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
ZXNzaW9uOjpzZXRBY3Rpb25IYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lv
bjo6c2V0UG9zaXRpb25TdGF0ZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVk
aWFTZXNzaW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb246Omhhc0FjdGl2ZUFj
dGlvbkhhbmRsZXJzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6bG9n
Z2VyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6bG9nSWRlbnRpZmll
ciBjb25zdCk6CisgICAgICAgIChXVEY6OkxvZ0FyZ3VtZW50PFdlYkNvcmU6Ok1lZGlhU2Vzc2lv
blBsYXliYWNrU3RhdGU+Ojp0b1N0cmluZyk6CisgICAgICAgIChXVEY6OkxvZ0FyZ3VtZW50PFdl
YkNvcmU6Ok1lZGlhU2Vzc2lvbkFjdGlvbj46OnRvU3RyaW5nKToKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmRpZFJlY2VpdmVS
ZW1vdGVDb250cm9sQ29tbWFuZCk6CisgICAgICAgICogaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OmRpZFJlY2VpdmVS
ZW1vdGVDb250cm9sQ29tbWFuZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNz
aW9uOjpub3dQbGF5aW5nSW5mbyBjb25zdCk6CisgICAgICAgICogaHRtbC9NZWRpYUVsZW1lbnRT
ZXNzaW9uLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3Rl
Q29tbWFuZExpc3RlbmVyOjpzY2hlZHVsZVN1cHBvcnRlZENvbW1hbmRzVXBkYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6YWRkU3VwcG9ydGVkQ29tbWFuZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVDb21tYW5kTGlzdGVuZXI6OnJlbW92ZVN1cHBvcnRl
ZENvbW1hbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmg6CisgICAgICAgIChXZWJD
b3JlOjpOb3dQbGF5aW5nSW5mbzo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9Q
bGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RW51bWVy
YXRpb25Ub1N0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNl
c3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6
YWRkU3VwcG9ydGVkQ29tbWFuZCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXI6OnJlbW92ZVN1cHBvcnRlZENvbW1hbmQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2NoZWR1bGVTZXNzaW9uU3RhdHVzVXBk
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2Vzc2lv
bkNhblByb2R1Y2VBdWRpb0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9u
TWFuYWdlckNvY29hOjphZGRTdXBwb3J0ZWRDb21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6cmVtb3ZlU3VwcG9ydGVkQ29tbWFuZCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJbmZvKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvTWVkaWFSZW1vdGVTb2Z0TGluay5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL01lZGlhUmVtb3RlU29mdExpbmsuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om1lZGlhUmVt
b3RlQ29tbWFuZEZvclBsYXRmb3JtQ29tbWFuZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVD
b21tYW5kTGlzdGVuZXJNYWM6OmRlZmF1bHRDb21tYW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpp
c1NlZWtDb21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lck1h
Yzo6dXBkYXRlU3VwcG9ydGVkQ29tbWFuZHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlQ29t
bWFuZExpc3RlbmVyTWFjOjpSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMpOgorCiAyMDIxLTAyLTA0
ICBKdWxpYW4gR29uemFsZXogIDxqdWxpYW5fYV9nb256YWxlekBhcHBsZS5jb20+CiAKICAgICAg
ICAgTnVsbCBkZXJlZmVyZW5jZSBpbiBEb2N1bWVudExvYWRlcjo6Y29tbWl0RGF0YSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFM
L0NoYW5nZUxvZwppbmRleCAwOWIxMGNhMTI3OWQ5YjgxNTY2ZGE4ZmZhMmUwMWU0NWQ1MGI3YmZh
Li5hNmY2YzJjZmQwYjVjMTFjZTcwZTEyOTc3OGZjMjEwZGUxMWU1MjQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0wMi0wNCAgRXJpYyBDYXJsc29uICA8ZXJpYy5j
YXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWFjXSBDb25uZWN0IE1lZGlhU2Vzc2lvbiB3
aXRoIE1lZGlhUmVtb3RlIGFuZCBOb3dQbGF5aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE0MzEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc0
MDAwMzYzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcGFsL3NwaS9tYWMvTWVkaWFSZW1vdGVTUEkuaDoKKwogMjAyMS0wMi0wMSAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIERpc2FibGUgaW50ZXJz
dGl0aWFsIGV2ZW50cyBvbiBBVlBsYXllckl0ZW0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDc5M2YzNGE3MzdlMzhl
YjZjMWMxOTI4NGIyYTQ3Y2EwNjQ5MzAyMjkuLmRhYWNmODY3OGRiMGIxYzI0NTEzMjZkMjQ2ODg1
MGY5MTViZDVhZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDItMDQgIEVyaWMg
Q2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW01hY10gQ29ubmVj
dCBNZWRpYVNlc3Npb24gd2l0aCBNZWRpYVJlbW90ZSBhbmQgTm93UGxheWluZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNDMxCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS83NDAwMDM2Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgYSBwcml2YXRlIHByZWZlcmVuY2Ugc28gdGhlIG5ldyBNZWRp
YVNlc3Npb24gQVBJIHRlc3QgY2FuIGVuYWJsZSB0aGUgZmVhdHVyZS4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbToKKyAgICAgICAgKC1bV0tQcmVmZXJl
bmNlcyBfbWVkaWFTZXNzaW9uRW5hYmxlZF0pOgorICAgICAgICAoLVtXS1ByZWZlcmVuY2VzIF9z
ZXRNZWRpYVNlc3Npb25FbmFibGVkOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tQcmVmZXJlbmNlc1ByaXZhdGUuaDoKKwogMjAyMS0wMi0wNCAgSnVsaWFuIEdvbnphbGV6ICA8
anVsaWFuX2FfZ29uemFsZXpAYXBwbGUuY29tPgogCiAgICAgICAgIE51bGwgZGVyZWZlcmVuY2Ug
aW4gRG9jdW1lbnRMb2FkZXI6OmNvbW1pdERhdGEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNlc3Npb24vTWVkaWFJbWFnZS5oCmluZGV4IGFmMTE5NWVhZDBmYjIwMGYyYjVh
YWFhZjA2Yjc4MGMyNjFlMmRhZGQuLjQ5MzI0MDBhMDJmODc2OWQxOTQ4OWNkMzhhMmRhODAzYTQ4
MWMyNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01l
ZGlhSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRp
YUltYWdlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzMsOCArMzMsMzMgQEAgc3RydWN0IE1lZGlhSW1hZ2UgewogICAgIFN0cmluZyBz
cmM7CiAgICAgU3RyaW5nIHNpemVzOwogICAgIFN0cmluZyB0eXBlOworCisgICAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxNZWRpYUltYWdlPiBkZWNvZGUoRGVjb2Rl
ciYpOwogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gaW5saW5lIHZvaWQgTWVkaWFJbWFn
ZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBzcmMg
PDwgc2l6ZXMgPDwgdHlwZTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIE9w
dGlvbmFsPE1lZGlhSW1hZ2U+IE1lZGlhSW1hZ2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
eworICAgIFN0cmluZyBzcmM7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzcmMpKQorICAgICAg
ICByZXR1cm4geyB9OworCisgICAgU3RyaW5nIHNpemVzOworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoc2l6ZXMpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgU3RyaW5nIHR5cGU7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZSh0eXBlKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJl
dHVybiBNZWRpYUltYWdlIHsgV1RGTW92ZShzcmMpLCBXVEZNb3ZlKHNpemVzKSwgV1RGTW92ZSh0
eXBlKSB9OworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU0VTU0lPTikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5j
cHAKaW5kZXggYTZmNDQ5YzQyNjBmY2ZiN2NhNDZjMDZkMTk4ZWM3ZTY1NjI4MWQ5ZC4uZjZmZjMx
ZmIwOGRkNDk4MWEzYmNlOTAzOTJiZGJkMmNkYTVmY2RiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjQsMjUgKzY0
LDI4IEBAIHZvaWQgTWVkaWFNZXRhZGF0YTo6cmVzZXRNZWRpYVNlc3Npb24oKQogCiB2b2lkIE1l
ZGlhTWV0YWRhdGE6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7Ci0gICAgaWYgKG1f
dGl0bGUgPT0gdGl0bGUpCisgICAgaWYgKG1fbWV0YWRhdGEudGl0bGUgPT0gdGl0bGUpCiAgICAg
ICAgIHJldHVybjsKLSAgICBtX3RpdGxlID0gdGl0bGU7CisKKyAgICBtX21ldGFkYXRhLnRpdGxl
ID0gdGl0bGU7CiAgICAgbWV0YWRhdGFVcGRhdGVkKCk7CiB9CiAKIHZvaWQgTWVkaWFNZXRhZGF0
YTo6c2V0QXJ0aXN0KGNvbnN0IFN0cmluZyYgYXJ0aXN0KQogewotICAgIGlmIChtX2FydGlzdCA9
PSBhcnRpc3QpCisgICAgaWYgKG1fbWV0YWRhdGEuYXJ0aXN0ID09IGFydGlzdCkKICAgICAgICAg
cmV0dXJuOwotICAgIG1fYXJ0aXN0ID0gYXJ0aXN0OworCisgICAgbV9tZXRhZGF0YS5hcnRpc3Qg
PSBhcnRpc3Q7CiAgICAgbWV0YWRhdGFVcGRhdGVkKCk7CiB9CiAKIHZvaWQgTWVkaWFNZXRhZGF0
YTo6c2V0QWxidW0oY29uc3QgU3RyaW5nJiBhbGJ1bSkKIHsKLSAgICBpZiAobV9hbGJ1bSA9PSBh
bGJ1bSkKKyAgICBpZiAobV9tZXRhZGF0YS5hbGJ1bSA9PSBhbGJ1bSkKICAgICAgICAgcmV0dXJu
OwotICAgIG1fYWxidW0gPSBhbGJ1bTsKKworICAgIG1fbWV0YWRhdGEuYWxidW0gPSBhbGJ1bTsK
ICAgICBtZXRhZGF0YVVwZGF0ZWQoKTsKIH0KIApAQCAtOTcsNyArMTAwLDcgQEAgRXhjZXB0aW9u
T3I8dm9pZD4gTWVkaWFNZXRhZGF0YTo6c2V0QXJ0d29yayhTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBWZWMKICAgICAgICAgcmVzb2x2ZWRBcnR3b3JrLnVuY2hlY2tlZEFwcGVuZChN
ZWRpYUltYWdlIHsgcmVzb2x2ZWRTcmMuc3RyaW5nKCksIGltYWdlLnNpemVzLCBpbWFnZS50eXBl
IH0pOwogICAgIH0KIAotICAgIG1fYXJ0d29yayA9IFdURk1vdmUocmVzb2x2ZWRBcnR3b3JrKTsK
KyAgICBtX21ldGFkYXRhLmFydHdvcmsgPSBXVEZNb3ZlKHJlc29sdmVkQXJ0d29yayk7CiAgICAg
bWV0YWRhdGFVcGRhdGVkKCk7CiAgICAgcmV0dXJuIHsgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuaAppbmRleCAyNjRlZWNj
YTk1MGIyMmVhNDUzYjcxZTQyZGZhODA0NjBhOTc2YmNhLi4zMGUwOTNkNmQyN2RkYjc0MTUyODFl
ZThiNWQxMDA0ZWZjZmFhNWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShN
RURJQV9TRVNTSU9OKQogCisjaW5jbHVkZSAiTWVkaWFNZXRhZGF0YUluaXQuaCIKICNpbmNsdWRl
ICJNZWRpYVNlc3Npb24uaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CkBAIC0zNCwxMCArMzUsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIERvY3VtZW50OwotY2xhc3MgTWVkaWFTZXNzaW9uOwogc3RydWN0IE1lZGlhSW1hZ2U7
Ci1zdHJ1Y3QgTWVkaWFNZXRhZGF0YUluaXQ7CisKK3VzaW5nIE1lZGlhU2Vzc2lvbk1ldGFkYXRh
ID0gTWVkaWFNZXRhZGF0YUluaXQ7CiAKIGNsYXNzIE1lZGlhTWV0YWRhdGEgOiBwdWJsaWMgUmVm
Q291bnRlZDxNZWRpYU1ldGFkYXRhPiB7CiBwdWJsaWM6CkBAIC00NywyNyArNDcsMjYgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0TWVkaWFTZXNzaW9uKE1lZGlhU2Vzc2lvbiYpOwogICAgIHZvaWQg
cmVzZXRNZWRpYVNlc3Npb24oKTsKIAotICAgIGNvbnN0IFN0cmluZyYgdGl0bGUoKSBjb25zdCB7
IHJldHVybiBtX3RpdGxlOyB9CisgICAgY29uc3QgU3RyaW5nJiB0aXRsZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbWV0YWRhdGEudGl0bGU7IH0KICAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZyYp
OwogCi0gICAgY29uc3QgU3RyaW5nJiBhcnRpc3QoKSBjb25zdCB7IHJldHVybiBtX2FydGlzdDsg
fQorICAgIGNvbnN0IFN0cmluZyYgYXJ0aXN0KCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5h
cnRpc3Q7IH0KICAgICB2b2lkIHNldEFydGlzdChjb25zdCBTdHJpbmcmKTsKIAotICAgIGNvbnN0
IFN0cmluZyYgYWxidW0oKSBjb25zdCB7IHJldHVybiBtX2FsYnVtOyB9CisgICAgY29uc3QgU3Ry
aW5nJiBhbGJ1bSgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRhdGEuYWxidW07IH0KICAgICB2b2lk
IHNldEFsYnVtKGNvbnN0IFN0cmluZyYpOwogCi0gICAgY29uc3QgVmVjdG9yPE1lZGlhSW1hZ2U+
JiBhcnR3b3JrKCkgY29uc3QgeyByZXR1cm4gbV9hcnR3b3JrOyB9CisgICAgY29uc3QgVmVjdG9y
PE1lZGlhSW1hZ2U+JiBhcnR3b3JrKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5hcnR3b3Jr
OyB9CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0QXJ0d29yayhTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiwgVmVjdG9yPE1lZGlhSW1hZ2U+JiYpOwogCisgICAgY29uc3QgTWVkaWFTZXNzaW9uTWV0
YWRhdGEmIG1ldGFkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YTsgfQorCiBwcml2YXRl
OgogICAgIE1lZGlhTWV0YWRhdGEoKTsKICAgICB2b2lkIG1ldGFkYXRhVXBkYXRlZCgpOwogCiAg
ICAgV2Vha1B0cjxNZWRpYVNlc3Npb24+IG1fc2Vzc2lvbjsKLSAgICBTdHJpbmcgbV90aXRsZTsK
LSAgICBTdHJpbmcgbV9hcnRpc3Q7Ci0gICAgU3RyaW5nIG1fYWxidW07Ci0gICAgVmVjdG9yPE1l
ZGlhSW1hZ2U+IG1fYXJ0d29yazsKKyAgICBNZWRpYVNlc3Npb25NZXRhZGF0YSBtX21ldGFkYXRh
OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Np
b24vTWVkaWFNZXRhZGF0YUluaXQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNz
aW9uL01lZGlhTWV0YWRhdGFJbml0LmgKaW5kZXggMDEyZWMyZDA5NWY5M2JiZmUyOGEzOGQ2M2Fh
ZWE0MjEyNmFiNTZlNS4uNjY5ZGVmZmEyZDY5NDA4NWYwOGYxMGRmMWI5MTZlZjQ0ZTg4NWUwZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRh
ZGF0YUluaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRp
YU1ldGFkYXRhSW5pdC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTM2LDggKzM2LDM3IEBAIHN0cnVjdCBNZWRpYU1ldGFkYXRhSW5pdCB7
CiAgICAgU3RyaW5nIGFydGlzdDsKICAgICBTdHJpbmcgYWxidW07CiAgICAgVmVjdG9yPE1lZGlh
SW1hZ2U+IGFydHdvcms7CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29k
ZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9w
dGlvbmFsPE1lZGlhTWV0YWRhdGFJbml0PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAordGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gaW5saW5lIHZvaWQgTWVkaWFNZXRhZGF0YUluaXQ6OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgdGl0bGUgPDwgYXJ0aXN0
IDw8IGFsYnVtIDw8IGFydHdvcms7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGlu
ZSBPcHRpb25hbDxNZWRpYU1ldGFkYXRhSW5pdD4gTWVkaWFNZXRhZGF0YUluaXQ6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFN0cmluZyB0aXRsZTsKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHRpdGxlKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIFN0cmluZyBhcnRpc3Q7
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhcnRpc3QpKQorICAgICAgICByZXR1cm4geyB9Owor
CisgICAgU3RyaW5nIGFsYnVtOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWxidW0pKQorICAg
ICAgICByZXR1cm4geyB9OworCisgICAgVmVjdG9yPE1lZGlhSW1hZ2U+IGFydHdvcms7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShhcnR3b3JrKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAg
IHJldHVybiBNZWRpYU1ldGFkYXRhSW5pdCB7IFdURk1vdmUodGl0bGUpLCBXVEZNb3ZlKGFydGlz
dCksIFdURk1vdmUoYWxidW0pLCBXVEZNb3ZlKGFydHdvcmspIH07Cit9CisKIH0KIAogI2VuZGlm
IC8vIEVOQUJMRShNRURJQV9TRVNTSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAKaW5kZXggMWFiNjIyNDgzMmVlZmExMjky
ZjEzODYxM2I0MWYwNzcwOTk2MjNjZS4uYTNiNWE5MGYwNDdkZjdlODlhMzc1NTU3MDRiYzNmZWU3
NWVlMTIwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24v
TWVkaWFTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lv
bi9NZWRpYVNlc3Npb24uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDExICsyOCw1MyBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NF
U1NJT04pCiAKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFNZXRhZGF0YS5o
IgogI2luY2x1ZGUgIk5hdmlnYXRvci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBjb25zdCB2b2lkKiBu
ZXh0TG9nSWRlbnRpZmllcigpCit7CisgICAgc3RhdGljIHVpbnQ2NF90IGxvZ0lkZW50aWZpZXIg
PSBjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpOworICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PGNvbnN0IHZvaWQqPigrK2xvZ0lkZW50aWZpZXIpOworfQorCitzdGF0aWMgV1RGTG9n
Q2hhbm5lbCYgbG9nQ2hhbm5lbCgpIHsgcmV0dXJuIExvZ01lZGlhOyB9CitzdGF0aWMgY29uc3Qg
Y2hhciogbG9nQ2xhc3NOYW1lKCkgeyByZXR1cm4gIk1lZGlhU2Vzc2lvbiI7IH0KKworc3RhdGlj
IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgcGxhdGZvcm1D
b21tYW5kRm9yTWVkaWFTZXNzaW9uQWN0aW9uKE1lZGlhU2Vzc2lvbkFjdGlvbiBhY3Rpb24pCit7
CisgICAgc3RhdGljIGNvbnN0IGF1dG8gY29tbWFuZE1hcCA9IG1ha2VOZXZlckRlc3Ryb3llZChb
XSB7CisgICAgICAgIHN0cnVjdCBNYXBFbnRyeSB7CisgICAgICAgICAgICBNZWRpYVNlc3Npb25B
Y3Rpb24gYWN0aW9uOworICAgICAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNv
bnRyb2xDb21tYW5kVHlwZSBjb21tYW5kOworICAgICAgICB9OworICAgICAgICBzdGF0aWMgY29u
c3QgTWFwRW50cnkgZW50cmllc1tdID0geworICAgICAgICAgICAgeyBNZWRpYVNlc3Npb25BY3Rp
b246OlBsYXksIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5Q29tbWFuZCB9LAorICAgICAgICAg
ICAgeyBNZWRpYVNlc3Npb25BY3Rpb246OlBhdXNlLCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGF1
c2VDb21tYW5kIH0sCisgICAgICAgICAgICB7IE1lZGlhU2Vzc2lvbkFjdGlvbjo6U2Vla2Zvcndh
cmQsIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTa2lwRm9yd2FyZENvbW1hbmQgfSwKKyAgICAgICAg
ICAgIHsgTWVkaWFTZXNzaW9uQWN0aW9uOjpTZWVrYmFja3dhcmQsIFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpTa2lwQmFja3dhcmRDb21tYW5kIH0sCisgICAgICAgICAgICB7IE1lZGlhU2Vzc2lvbkFj
dGlvbjo6UHJldmlvdXN0cmFjaywgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5leHRUcmFja0NvbW1h
bmQgfSwKKyAgICAgICAgICAgIHsgTWVkaWFTZXNzaW9uQWN0aW9uOjpOZXh0dHJhY2ssIFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpQcmV2aW91c1RyYWNrQ29tbWFuZCB9LAorICAgICAgICAgICAgeyBN
ZWRpYVNlc3Npb25BY3Rpb246OlN0b3AsIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTdG9wQ29tbWFu
ZCB9LAorICAgICAgICAgICAgeyBNZWRpYVNlc3Npb25BY3Rpb246OlNlZWt0bywgUGxhdGZvcm1N
ZWRpYVNlc3Npb246OlNlZWtUb1BsYXliYWNrUG9zaXRpb25Db21tYW5kIH0sCisgICAgICAgIH07
CisKKyAgICAgICAgSGFzaE1hcDxNZWRpYVNlc3Npb25BY3Rpb24sIFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIFdURjo6SW50SGFzaDxNZWRpYVNlc3Npb25B
Y3Rpb24+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPE1lZGlhU2Vzc2lvbkFjdGlvbj4+IG1h
cDsKKyAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IGVudHJpZXMpCisgICAgICAgICAgICBtYXAu
YWRkKGVudHJ5LmFjdGlvbiwgZW50cnkuY29tbWFuZCk7CisgICAgICAgIHJldHVybiBtYXA7Cisg
ICAgfSgpKTsKKworICAgIGF1dG8gaXQgPSBjb21tYW5kTWFwLmdldCgpLmZpbmQoYWN0aW9uKTsK
KyAgICBpZiAoaXQgIT0gY29tbWFuZE1hcC5nZXQoKS5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGl0
LT52YWx1ZTsKKworICAgIHJldHVybiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9Db21tYW5kOwor
fQorCiBSZWY8TWVkaWFTZXNzaW9uPiBNZWRpYVNlc3Npb246OmNyZWF0ZShOYXZpZ2F0b3ImIG5h
dmlnYXRvcikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVNlc3Npb24obmF2aWdh
dG9yKSk7CkBAIC00MSwxMiArODMsMTggQEAgUmVmPE1lZGlhU2Vzc2lvbj4gTWVkaWFTZXNzaW9u
OjpjcmVhdGUoTmF2aWdhdG9yJiBuYXZpZ2F0b3IpCiBNZWRpYVNlc3Npb246Ok1lZGlhU2Vzc2lv
bihOYXZpZ2F0b3ImIG5hdmlnYXRvcikKICAgICA6IG1fbmF2aWdhdG9yKG1ha2VXZWFrUHRyKG5h
dmlnYXRvcikpCiB7CisgICAgbV9sb2dnZXIgPSBtYWtlUmVmUHRyKERvY3VtZW50OjpzaGFyZWRM
b2dnZXIoKSk7CisgICAgbV9sb2dJZGVudGlmaWVyID0gbmV4dExvZ0lkZW50aWZpZXIoKTsKKwor
ICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CiB9CiAKIE1lZGlhU2Vzc2lvbjo6fk1lZGlh
U2Vzc2lvbigpID0gZGVmYXVsdDsKIAogdm9pZCBNZWRpYVNlc3Npb246OnNldE1ldGFkYXRhKFJl
ZlB0cjxNZWRpYU1ldGFkYXRhPiYmIG1ldGFkYXRhKQogeworICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUik7CisKICAgICBpZiAobV9tZXRhZGF0YSkKICAgICAgICAgbV9tZXRhZGF0YS0+cmVz
ZXRNZWRpYVNlc3Npb24oKTsKICAgICBtX21ldGFkYXRhID0gV1RGTW92ZShtZXRhZGF0YSk7CkBA
IC02MCw2ICsxMDgsOCBAQCB2b2lkIE1lZGlhU2Vzc2lvbjo6c2V0UGxheWJhY2tTdGF0ZShNZWRp
YVNlc3Npb25QbGF5YmFja1N0YXRlIHN0YXRlKQogICAgIGlmIChtX3BsYXliYWNrU3RhdGUgPT0g
c3RhdGUpCiAgICAgICAgIHJldHVybjsKIAorICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwg
c3RhdGUpOworCiAgICAgYXV0byBjdXJyZW50UG9zaXRpb24gPSB0aGlzLT5jdXJyZW50UG9zaXRp
b24oKTsKICAgICBpZiAobV9wb3NpdGlvblN0YXRlICYmIGN1cnJlbnRQb3NpdGlvbikgewogICAg
ICAgICBtX3Bvc2l0aW9uU3RhdGUtPnBvc2l0aW9uID0gKmN1cnJlbnRQb3NpdGlvbjsKQEAgLTcw
LDEwICsxMjAsMTggQEAgdm9pZCBNZWRpYVNlc3Npb246OnNldFBsYXliYWNrU3RhdGUoTWVkaWFT
ZXNzaW9uUGxheWJhY2tTdGF0ZSBzdGF0ZSkKIAogdm9pZCBNZWRpYVNlc3Npb246OnNldEFjdGlv
bkhhbmRsZXIoTWVkaWFTZXNzaW9uQWN0aW9uIGFjdGlvbiwgUmVmUHRyPE1lZGlhU2Vzc2lvbkFj
dGlvbkhhbmRsZXI+JiYgaGFuZGxlcikKIHsKLSAgICBpZiAoaGFuZGxlcikKKyAgICBpZiAoaGFu
ZGxlcikgeworICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJhZGRpbmcgIiwgYWN0
aW9uKTsKICAgICAgICAgbV9hY3Rpb25IYW5kbGVycy5zZXQoYWN0aW9uLCBoYW5kbGVyKTsKLSAg
ICBlbHNlCi0gICAgICAgIG1fYWN0aW9uSGFuZGxlcnMucmVtb3ZlKGFjdGlvbik7CisgICAgICAg
IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmFkZFN1cHBvcnRl
ZENvbW1hbmQocGxhdGZvcm1Db21tYW5kRm9yTWVkaWFTZXNzaW9uQWN0aW9uKGFjdGlvbikpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChtX2FjdGlvbkhhbmRsZXJzLmNvbnRhaW5zKGFjdGlv
bikpIHsKKyAgICAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInJlbW92aW5nICIs
IGFjdGlvbik7CisgICAgICAgICAgICBtX2FjdGlvbkhhbmRsZXJzLnJlbW92ZShhY3Rpb24pOwor
ICAgICAgICB9CisgICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFu
YWdlcigpLnJlbW92ZVN1cHBvcnRlZENvbW1hbmQocGxhdGZvcm1Db21tYW5kRm9yTWVkaWFTZXNz
aW9uQWN0aW9uKGFjdGlvbikpOworICAgIH0KKyAgICAKICAgICBhY3Rpb25IYW5kbGVyc1VwZGF0
ZWQoKTsKIH0KIApAQCAtODksNiArMTQ3LDggQEAgUmVmUHRyPE1lZGlhU2Vzc2lvbkFjdGlvbkhh
bmRsZXI+IE1lZGlhU2Vzc2lvbjo6aGFuZGxlckZvckFjdGlvbihNZWRpYVNlc3Npb25BY3QKIAog
RXhjZXB0aW9uT3I8dm9pZD4gTWVkaWFTZXNzaW9uOjpzZXRQb3NpdGlvblN0YXRlKE9wdGlvbmFs
PE1lZGlhUG9zaXRpb25TdGF0ZT4mJiBzdGF0ZSkKIHsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5U
SUZJRVIpOworCiAgICAgaWYgKCFzdGF0ZSkgewogICAgICAgICBtX3Bvc2l0aW9uU3RhdGUgPSBX
VEY6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5oCmluZGV4IDNmNjRmM2IwMjQ2ODRl
NGY3ZWM2NDQ4N2I0MTdmNWVkMTczYTc5MDkuLjRmNGJlNDc3MjY0NDA4NmI3N2Q2MWQ5ZjViMDgy
M2ExNWQwNTA1NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNz
aW9uL01lZGlhU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNz
aW9uL01lZGlhU2Vzc2lvbi5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDEwICsyNywxNCBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NF
U1NJT04pCiAKKyNpbmNsdWRlICJKU01lZGlhUG9zaXRpb25TdGF0ZS5oIgorI2luY2x1ZGUgIkpT
TWVkaWFTZXNzaW9uQWN0aW9uLmgiCisjaW5jbHVkZSAiSlNNZWRpYVNlc3Npb25QbGF5YmFja1N0
YXRlLmgiCiAjaW5jbHVkZSAiTWVkaWFQb3NpdGlvblN0YXRlLmgiCiAjaW5jbHVkZSAiTWVkaWFT
ZXNzaW9uQWN0aW9uLmgiCiAjaW5jbHVkZSAiTWVkaWFTZXNzaW9uQWN0aW9uSGFuZGxlci5oIgog
I2luY2x1ZGUgIk1lZGlhU2Vzc2lvblBsYXliYWNrU3RhdGUuaCIKKyNpbmNsdWRlIDx3dGYvTG9n
Z2VyLmg+CiAjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KICNpbmNsdWRlIDx3dGYvT3B0
aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CkBAIC01NywxMyArNjEsMTggQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPGRvdWJsZT4gY3VycmVudFBvc2l0
aW9uKCkgY29uc3Q7CiAKICAgICB2b2lkIG1ldGFkYXRhVXBkYXRlZCgpOworCiAgICAgdm9pZCBh
Y3Rpb25IYW5kbGVyc1VwZGF0ZWQoKTsKICAgICBib29sIGhhc0FjdGlvbkhhbmRsZXIoTWVkaWFT
ZXNzaW9uQWN0aW9uKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8TWVkaWFTZXNz
aW9uQWN0aW9uSGFuZGxlcj4gaGFuZGxlckZvckFjdGlvbihNZWRpYVNlc3Npb25BY3Rpb24pIGNv
bnN0OworICAgIGJvb2wgaGFzQWN0aXZlQWN0aW9uSGFuZGxlcnMoKSBjb25zdCB7IHJldHVybiAh
bV9hY3Rpb25IYW5kbGVycy5pc0VtcHR5KCk7IH0KIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBN
ZWRpYVNlc3Npb24oTmF2aWdhdG9yJik7CiAKKyAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNv
bnN0IHsgcmV0dXJuICptX2xvZ2dlci5nZXQoKTsgfQorICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7IH0KKwogICAgIFdlYWtQdHI8
TmF2aWdhdG9yPiBtX25hdmlnYXRvcjsKICAgICBSZWZQdHI8TWVkaWFNZXRhZGF0YT4gbV9tZXRh
ZGF0YTsKICAgICBNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRlIG1fcGxheWJhY2tTdGF0ZSB7IE1l
ZGlhU2Vzc2lvblBsYXliYWNrU3RhdGU6Ok5vbmUgfTsKQEAgLTcxLDYgKzgwLDIwIEBAIHByaXZh
dGU6CiAgICAgT3B0aW9uYWw8ZG91YmxlPiBtX2xhc3RSZXBvcnRlZFBvc2l0aW9uOwogICAgIE1v
bm90b25pY1RpbWUgbV90aW1lQXRMYXN0UG9zaXRpb25VcGRhdGU7CiAgICAgSGFzaE1hcDxNZWRp
YVNlc3Npb25BY3Rpb24sIFJlZlB0cjxNZWRpYVNlc3Npb25BY3Rpb25IYW5kbGVyPiwgV1RGOjpJ
bnRIYXNoPE1lZGlhU2Vzc2lvbkFjdGlvbj4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8TWVk
aWFTZXNzaW9uQWN0aW9uPj4gbV9hY3Rpb25IYW5kbGVyczsKKyAgICBSZWZQdHI8Y29uc3QgTG9n
Z2VyPiBtX2xvZ2dlcjsKKyAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7Cit9OworCit9
CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBMb2dBcmd1bWVudDxXZWJD
b3JlOjpNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRlPiB7CisgICAgc3RhdGljIFN0cmluZyB0b1N0
cmluZyhXZWJDb3JlOjpNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRlIHN0YXRlKSB7IHJldHVybiBj
b252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhzdGF0ZSk7IH0KK307CisKK3RlbXBsYXRlPD4gc3Ry
dWN0IExvZ0FyZ3VtZW50PFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkFjdGlvbj4geworICAgIHN0YXRp
YyBTdHJpbmcgdG9TdHJpbmcoV2ViQ29yZTo6TWVkaWFTZXNzaW9uQWN0aW9uIGFjdGlvbikgeyBy
ZXR1cm4gY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoYWN0aW9uKTsgfQogfTsKIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL01lZGlhUmVtb3RlU1BJLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvTWVkaWFSZW1vdGVTUEkuaAppbmRleCA2
NTE1YzBkNzZmMDVkYTAwNjE4MGEyYTU3NTEzZWYyZTY0NWM4MWU0Li4wZmI3YmI0ZjcwMDI3ODU3
NGIzNjRkZGI1MjUwMDAwYjg1NGU3ZTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3NwaS9tYWMvTWVkaWFSZW1vdGVTUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L3NwaS9tYWMvTWVkaWFSZW1vdGVTUEkuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05Miw2ICs5Miw4IEBAIGVudW0gewogdHlwZWRlZiB1
aW50MzJfdCBNUk5vd1BsYXlpbmdDbGllbnRWaXNpYmlsaXR5OwogCiB0eXBlZGVmIHVpbnQzMl90
IE1STWVkaWFSZW1vdGVFcnJvcjsKK3R5cGVkZWYgdWludDMyX3QgTVJTZW5kQ29tbWFuZEFwcE9w
dGlvbnM7Cit0eXBlZGVmIHVpbnQzMl90IE1SU2VuZENvbW1hbmRFcnJvcjsKIHR5cGVkZWYgc3Ry
dWN0IF9NUk9yaWdpbiAqTVJPcmlnaW5SZWY7CiB0eXBlZGVmIHN0cnVjdCBfTVJNZWRpYVJlbW90
ZUNvbW1hbmRJbmZvICpNUk1lZGlhUmVtb3RlQ29tbWFuZEluZm9SZWY7CiB0eXBlZGVmIHZvaWQg
Kk1STm93UGxheWluZ0NsaWVudFJlZjsKQEAgLTEwMyw4ICsxMDUsMTAgQEAgV1RGX0VYVEVSTl9D
X0JFR0lOCiAKIHZvaWQqIE1STWVkaWFSZW1vdGVBZGRBc3luY0NvbW1hbmRIYW5kbGVyQmxvY2so
TVJNZWRpYVJlbW90ZUFzeW5jQ29tbWFuZEhhbmRsZXJCbG9jayk7CiB2b2lkIE1STWVkaWFSZW1v
dGVSZW1vdmVDb21tYW5kSGFuZGxlckJsb2NrKHZvaWQgKm9ic2VydmVyKTsKLXZvaWQgTVJNZWRp
YVJlbW90ZVNldFN1cHBvcnRlZENvbW1hbmRzKENGQXJyYXlSZWYgY29tbWFuZHMsIE1ST3JpZ2lu
UmVmLCBkaXNwYXRjaF9xdWV1ZV90IHJlcGx5USwgdm9pZCheY29tcGxldGlvbikoTVJNZWRpYVJl
bW90ZUVycm9yIGVycikpOwordm9pZCBNUk1lZGlhUmVtb3RlU2V0U3VwcG9ydGVkQ29tbWFuZHMo
Q0ZBcnJheVJlZiwgTVJPcmlnaW5SZWYsIGRpc3BhdGNoX3F1ZXVlX3QsIHZvaWQoXmNvbXBsZXRp
b24pKE1STWVkaWFSZW1vdGVFcnJvcikpOwordm9pZCBNUk1lZGlhUmVtb3RlR2V0U3VwcG9ydGVk
Q29tbWFuZHNGb3JPcmlnaW4oTVJPcmlnaW5SZWYsIGRpc3BhdGNoX3F1ZXVlX3QsIHZvaWQoXmNv
bXBsZXRpb24pKENGQXJyYXlSZWYpKTsKIHZvaWQgTVJNZWRpYVJlbW90ZVNldE5vd1BsYXlpbmdW
aXNpYmlsaXR5KE1ST3JpZ2luUmVmLCBNUk5vd1BsYXlpbmdDbGllbnRWaXNpYmlsaXR5KTsKK0Jv
b2xlYW4gTVJNZWRpYVJlbW90ZVNlbmRDb21tYW5kVG9BcHAoTVJNZWRpYVJlbW90ZUNvbW1hbmQs
IENGRGljdGlvbmFyeVJlZiwgTVJPcmlnaW5SZWYsIENGU3RyaW5nUmVmLCBNUlNlbmRDb21tYW5k
QXBwT3B0aW9ucywgZGlzcGF0Y2hfcXVldWVfdCwgdm9pZCheY29tcGxldGlvbikoTVJTZW5kQ29t
bWFuZEVycm9yLCBDRkFycmF5UmVmKSk7CiAKICNwcmFnbWEgbWFyayAtIE1ST3JpZ2luCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBmYTZjMjlmNGI0YmFmZjQxYjcwOGYyMjBiNzYwZmM5MmVlNDJkMGExLi5iZDNiYzE2MGQ4YmFm
NDdiNDE2MjI4ODA3NzY1NjAyYjVkMmI0NDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzksNiArMTM5LDEwIEBACiAJCTA3
N0FGMTQzMThGNEIxQkIwMDAxRUQ2MSAvKiBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzdBRjE0MTE4
RjRCMUJCMDAwMUVENjEgLyogU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1hYy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3N0I2NDEzMUI5NEYx
MkUwMDNFOUFENSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc3QjY0MTExQjk0RjEyRTAwM0U5
QUQ1IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDc3QjY0MTcxQjk1RjcwMzAwM0U5QUQ1
IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwNzdCNjQxNTFCOTVGNzAzMDAzRTlBRDUgLyogTWVkaWFQbGF5
YmFja1RhcmdldE1vY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQkwNzgyODk0ODI1QzIzRkU1MDBBN0JBMDMgLyogTWVkaWFNZXRhZGF0YS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0REREVBMkQyNTM4
Q0UwNDAwQTEzMDBDIC8qIE1lZGlhTWV0YWRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwNzgyODk0QTI1QzM2RkNGMDBBN0JBMDMgLyogTWVk
aWFTZXNzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRERERUEyMzI1MzhDRDgwMDBBMTMwMEMgLyogTWVkaWFTZXNzaW9uLmggKi87IH07CisJCTA3
ODI4OTRCMjVDMzZGRUQwMEE3QkEwMyAvKiBNZWRpYUltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRERERUEzMjI1MzhDRTM1MDBBMTMwMEMgLyog
TWVkaWFJbWFnZS5oICovOyB9OworCQkwNzgyODk0QzI1QzM3MDBCMDBBN0JBMDMgLyogTWVkaWFN
ZXRhZGF0YUluaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENERERFQTMwMjUzOENFMUUwMEExMzAwQyAvKiBNZWRpYU1ldGFkYXRhSW5pdC5oICovOyB9
OwogCQkwNzgzMjI4NTE4MDEzRUQ4MDA5OTlFMEMgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc4MzIyODMx
ODAxM0VEODAwOTk5RTBDIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaCAqLzsgfTsKIAkJMDc4
NDYzNDMxNDVCMTUxQTAwQTU4REYxIC8qIEpTVHJhY2tFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc4NDYzNDExNDVCMTUxQTAwQTU4REYxIC8q
IEpTVHJhY2tFdmVudC5oICovOyB9OwogCQkwNzg0NjM4NTE0NUIxQjhFMDBBNThERjEgLyogSlNU
cmFja0N1c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDc4NDYzODQxNDVCMUI4RTAwQTU4REYxIC8qIEpTVHJhY2tDdXN0b20uaCAqLzsgfTsKQEAg
LTMzNzAyLDEwICszMzcwNiwxMyBAQAogCQkJCUU0NDYxM0FEMENENjMzMTAwMEZBREE3NSAvKiBN
ZWRpYUVycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk0RTE5NTkyMjBBMzlEQUJBMDAyMjBGRTUg
LyogTWVkaWFGZWF0dXJlTmFtZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3QTZEMUVDMTQ5MTEz
NzcwMDA1MUQwQyAvKiBNZWRpYUZyYWdtZW50VVJJUGFyc2VyLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkwNzgyODk0QjI1QzM2RkVEMDBBN0JBMDMgLyogTWVkaWFJbWFnZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQ0RGNEI3MUExRTAxRDNEMDAwRTIzNUEyIC8qIE1lZGlhS2V5U2Vzc2lvblR5cGUuaWRs
IGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RGNEI3MjgxRTAzQzU3MzAwRTIzNUEyIC8qIE1lZGlhS2V5
c1JlcXVpcmVtZW50LmlkbCBpbiBIZWFkZXJzICovLAogCQkJCUNERjRCNzE4MUUwMUNCOTEwMEUy
MzVBMiAvKiBNZWRpYUtleXNSZXN0cmljdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RUE4
MDBFMEExOTUxNkUwMEE4RUY1RiAvKiBNZWRpYUxpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3
ODI4OTQ4MjVDMjNGRTUwMEE3QkEwMyAvKiBNZWRpYU1ldGFkYXRhLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwNzgyODk0QzI1QzM3MDBCMDBBN0JBMDMgLyogTWVkaWFNZXRhZGF0YUluaXQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTVFQkI4OTMxMUM3Nzc3RkYwMEM2NUQ0MSAvKiBNZWRpYVBheWxvYWQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTA3RTNERkQxMUE5RTc4NjUwMDc2NENBOCAvKiBNZWRpYVBs
YXliYWNrVGFyZ2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzkyMTY1NTFBQTU2MEFBMDBBM0Mw
NDkgLyogTWVkaWFQbGF5YmFja1RhcmdldENsaWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMzc0
Niw2ICszMzc1Myw3IEBACiAJCQkJMUIxMjREOEQxRDM4MEI3MDAwRUNERkIwIC8qIE1lZGlhU2Ft
cGxlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RCRUFFQUQxOUQ5MkI2QzAwQkVCQTg4
IC8qIE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTdE
Mjc1RTFFQUM1Nzk4MDBCRjAxRTcgLyogTWVkaWFTZWxlY3Rpb25PcHRpb24uaCBpbiBIZWFkZXJz
ICovLAorCQkJCTA3ODI4OTRBMjVDMzZGQ0YwMEE3QkEwMyAvKiBNZWRpYVNlc3Npb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxNkVDQUU1MjVCNThDQzQwMEIzNERBNSAvKiBNZWRpYVNlc3Npb25H
cm91cElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQTk1OTNGMjQxMkJBRTAwMDkx
MEVFRiAvKiBNZWRpYVNlc3Npb25IZWxwZXJJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNDQ2
MEEyMjQxMjk5NDUwMDgxNEJFNyAvKiBNZWRpYVNlc3Npb25JZGVudGlmaWVyLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGE2YTU0
YTYxMTQ1NWU0YmZhOTllODZmNjAzYzUyOTBkZjcwMGQxMDkuLjE1MjY2OTIzN2QzZWMwNGVlNzU4
NGVkYjE5NTMwNDVlZDk2YWZkNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTc1MDUsNiArNzUwNSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlk
UmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vCiAg
ICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBjb21tYW5kKTsKIAogICAgIFVzZXJHZXN0dXJl
SW5kaWNhdG9yIHJlbW90ZUNvbnRyb2xVc2VyR2VzdHVyZShQcm9jZXNzaW5nVXNlckdlc3R1cmUs
ICZkb2N1bWVudCgpKTsKKyAgICBkb3VibGUgb2Zmc2V0ID0gMTA7CiAgICAgc3dpdGNoIChjb21t
YW5kKSB7CiAgICAgY2FzZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheUNvbW1hbmQ6CiAgICAg
ICAgIHBsYXkoKTsKQEAgLTc1MjYsNiArNzUyNywxNiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVt
bwogICAgIGNhc2UgUGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZFNlZWtpbmdGb3J3YXJkQ29tbWFu
ZDoKICAgICAgICAgZW5kU2Nhbm5pbmcoKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEZvcndhcmRDb21tYW5kOgorICAgICAgICBpZiAoYXJndW1l
bnQpCisgICAgICAgICAgICBvZmZzZXQgPSBhcmd1bWVudC0+YXNEb3VibGU7CisgICAgICAgIGhh
bmRsZVNlZWtUb1BsYXliYWNrUG9zaXRpb24ob2Zmc2V0KTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEJhY2t3YXJkQ29tbWFuZDoKKyAgICAgICAg
aWYgKGFyZ3VtZW50KQorICAgICAgICAgICAgb2Zmc2V0ID0gYXJndW1lbnQtPmFzRG91YmxlOwor
ICAgICAgICBoYW5kbGVTZWVrVG9QbGF5YmFja1Bvc2l0aW9uKDAgLSBvZmZzZXQpOworICAgICAg
ICBicmVhazsKICAgICBjYXNlIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTZWVrVG9QbGF5YmFja1Bv
c2l0aW9uQ29tbWFuZDoKICAgICAgICAgQVNTRVJUKGFyZ3VtZW50KTsKICAgICAgICAgaWYgKGFy
Z3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNz
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKaW5k
ZXggNThkNDJlY2U0MTI2ZDljNmIzNDE4ODBjMGRhNzAzM2E0OTBjZTA1Yy4uOGRiYWUyYWM1MjMw
MDkyN2Y3YzVlM2FlNTEyMjMzZjNmYWEyMTg3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01l
ZGlhRWxlbWVudFNlc3Npb24uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTU0LDYgKzU0LDEyIEBACiAjaW5jbHVkZSAiU291cmNlQnVm
ZmVyLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCisjaWYgRU5BQkxF
KE1FRElBX1NFU1NJT04pCisjaW5jbHVkZSAiTWVkaWFNZXRhZGF0YS5oIgorI2luY2x1ZGUgIk1l
ZGlhU2Vzc2lvbi5oIgorI2luY2x1ZGUgIk5hdmlnYXRvck1lZGlhU2Vzc2lvbi5oIgorI2VuZGlm
CisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgIkF1ZGlvU2Vzc2lvbi5oIgog
I2luY2x1ZGUgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgpAQCAtMTAyMSw2ICsxMDI3LDcw
IEBAIGJvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6YWxsb3dzUGxheWJhY2tDb250cm9sc0ZvckF1
dG9wbGF5aW5nQXVkaW8oKSBjb25zdAogICAgIHJldHVybiBwYWdlICYmIHBhZ2UtPmFsbG93c1Bs
YXliYWNrQ29udHJvbHNGb3JBdXRvcGxheWluZ0F1ZGlvKCk7CiB9CiAKKyNpZiBFTkFCTEUoTUVE
SUFfU0VTU0lPTikKK3ZvaWQgTWVkaWFFbGVtZW50U2Vzc2lvbjo6ZGlkUmVjZWl2ZVJlbW90ZUNv
bnRyb2xDb21tYW5kKFJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21tYW5kVHlwZSwgY29uc3Qg
UmVtb3RlQ29tbWFuZEFyZ3VtZW50KiBhcmd1bWVudCkKK3sKKyAgICBhdXRvKiB3aW5kb3cgPSBt
X2VsZW1lbnQuZG9jdW1lbnQoKS5kb21XaW5kb3coKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gd2lu
ZG93ID8gJk5hdmlnYXRvck1lZGlhU2Vzc2lvbjo6bWVkaWFTZXNzaW9uKHdpbmRvdy0+bmF2aWdh
dG9yKCkpIDogbnVsbHB0cjsKKyAgICBpZiAoIXNlc3Npb24gfHwgIXNlc3Npb24tPmhhc0FjdGl2
ZUFjdGlvbkhhbmRsZXJzKCkpIHsKKyAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OmRpZFJl
Y2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChjb21tYW5kVHlwZSwgYXJndW1lbnQpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgTWVkaWFTZXNzaW9uQWN0aW9uRGV0YWlscyBhY3Rpb25E
ZXRhaWxzOworICAgIHN3aXRjaCAoY29tbWFuZFR5cGUpIHsKKyAgICBjYXNlIE5vQ29tbWFuZDoK
KyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgUGxheUNvbW1hbmQ6CisgICAgICAgIGFjdGlvbkRl
dGFpbHMuYWN0aW9uID0gTWVkaWFTZXNzaW9uQWN0aW9uOjpQbGF5OworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFBhdXNlQ29tbWFuZDoKKyAgICAgICAgYWN0aW9uRGV0YWlscy5hY3Rpb24gPSBN
ZWRpYVNlc3Npb25BY3Rpb246OlBhdXNlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0b3BD
b21tYW5kOgorICAgICAgICBhY3Rpb25EZXRhaWxzLmFjdGlvbiA9IE1lZGlhU2Vzc2lvbkFjdGlv
bjo6U3RvcDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUb2dnbGVQbGF5UGF1c2VDb21tYW5k
OgorICAgICAgICBhY3Rpb25EZXRhaWxzLmFjdGlvbiA9IG1fZWxlbWVudC5wYXVzZWQoKSA/IE1l
ZGlhU2Vzc2lvbkFjdGlvbjo6UGxheSA6IE1lZGlhU2Vzc2lvbkFjdGlvbjo6UGF1c2U7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgU2Vla1RvUGxheWJhY2tQb3NpdGlvbkNvbW1hbmQ6CisgICAg
ICAgIEFTU0VSVChhcmd1bWVudCk7CisgICAgICAgIGlmICghYXJndW1lbnQpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIGFjdGlvbkRldGFpbHMuYWN0aW9uID0gTWVkaWFTZXNzaW9uQWN0
aW9uOjpTZWVrdG87CisgICAgICAgIGFjdGlvbkRldGFpbHMuc2Vla1RpbWUgPSBhcmd1bWVudC0+
YXNEb3VibGU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2tpcEZvcndhcmRDb21tYW5kOgor
ICAgICAgICBpZiAoYXJndW1lbnQpCisgICAgICAgICAgICBhY3Rpb25EZXRhaWxzLnNlZWtPZmZz
ZXQgPSBhcmd1bWVudC0+YXNEb3VibGU7CisgICAgICAgIGFjdGlvbkRldGFpbHMuYWN0aW9uID0g
TWVkaWFTZXNzaW9uQWN0aW9uOjpTZWVrZm9yd2FyZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBTa2lwQmFja3dhcmRDb21tYW5kOgorICAgICAgICBpZiAoYXJndW1lbnQpCisgICAgICAgICAg
ICBhY3Rpb25EZXRhaWxzLnNlZWtPZmZzZXQgPSBhcmd1bWVudC0+YXNEb3VibGU7CisgICAgICAg
IGFjdGlvbkRldGFpbHMuYWN0aW9uID0gTWVkaWFTZXNzaW9uQWN0aW9uOjpTZWVrYmFja3dhcmQ7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTmV4dFRyYWNrQ29tbWFuZDoKKyAgICAgICAgYWN0
aW9uRGV0YWlscy5hY3Rpb24gPSBNZWRpYVNlc3Npb25BY3Rpb246Ok5leHR0cmFjazsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBQcmV2aW91c1RyYWNrQ29tbWFuZDoKKyAgICAgICAgYWN0aW9u
RGV0YWlscy5hY3Rpb24gPSBNZWRpYVNlc3Npb25BY3Rpb246OlByZXZpb3VzdHJhY2s7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQmVnaW5TZWVraW5nQmFja3dhcmRDb21tYW5kOgorICAgIGNh
c2UgRW5kU2Vla2luZ0JhY2t3YXJkQ29tbWFuZDoKKyAgICBjYXNlIEJlZ2luU2Vla2luZ0Zvcndh
cmRDb21tYW5kOgorICAgIGNhc2UgRW5kU2Vla2luZ0ZvcndhcmRDb21tYW5kOgorICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIAorICAgIGlm
IChhdXRvIGhhbmRsZXIgPSBzZXNzaW9uLT5oYW5kbGVyRm9yQWN0aW9uKGFjdGlvbkRldGFpbHMu
YWN0aW9uKSkKKyAgICAgICAgaGFuZGxlci0+aGFuZGxlRXZlbnQoYWN0aW9uRGV0YWlscyk7Cisg
ICAgZWxzZQorICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJJZ25vcmluZyBjb21t
YW5kLCBubyBhY3Rpb24gaGFuZGxlciByZWdpc3RlcmVkIGZvciAiLCBhY3Rpb25EZXRhaWxzLmFj
dGlvbik7Cit9CisjZW5kaWYKKwogT3B0aW9uYWw8Tm93UGxheWluZ0luZm8+IE1lZGlhRWxlbWVu
dFNlc3Npb246Om5vd1BsYXlpbmdJbmZvKCkgY29uc3QKIHsKICAgICBhdXRvKiBwYWdlID0gbV9l
bGVtZW50LmRvY3VtZW50KCkucGFnZSgpOwpAQCAtMTAzMiw3ICsxMTAyLDIyIEBAIE9wdGlvbmFs
PE5vd1BsYXlpbmdJbmZvPiBNZWRpYUVsZW1lbnRTZXNzaW9uOjpub3dQbGF5aW5nSW5mbygpIGNv
bnN0CiAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKGN1cnJlbnRUaW1lKSB8fCAhc3VwcG9ydHNTZWVr
aW5nKQogICAgICAgICBjdXJyZW50VGltZSA9IE1lZGlhUGxheWVyOjppbnZhbGlkVGltZSgpOwog
Ci0gICAgcmV0dXJuIE5vd1BsYXlpbmdJbmZvIHsgbV9lbGVtZW50Lm1lZGlhU2Vzc2lvblRpdGxl
KCksIG1fZWxlbWVudC5zb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIoKSwgZHVyYXRpb24sIGN1
cnJlbnRUaW1lLCBzdXBwb3J0c1NlZWtpbmcsIG1fZWxlbWVudC5tZWRpYVNlc3Npb25VbmlxdWVJ
ZGVudGlmaWVyKCksIGlzUGxheWluZywgYWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0
eSB9OworICAgIFN0cmluZyB0aXRsZTsKKyAgICBTdHJpbmcgYXJ0aXN0OworICAgIFN0cmluZyBh
bGJ1bTsKKyNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKKyAgICBhdXRvKiB3aW5kb3cgPSBtX2Vs
ZW1lbnQuZG9jdW1lbnQoKS5kb21XaW5kb3coKTsKKyAgICBhdXRvKiBzZXNzaW9uTWV0YWRhdGEg
PSB3aW5kb3cgPyBOYXZpZ2F0b3JNZWRpYVNlc3Npb246Om1lZGlhU2Vzc2lvbih3aW5kb3ctPm5h
dmlnYXRvcigpKS5tZXRhZGF0YSgpIDogbnVsbHB0cjsKKyAgICBpZiAoc2Vzc2lvbk1ldGFkYXRh
KSB7CisgICAgICAgIHRpdGxlID0gc2Vzc2lvbk1ldGFkYXRhLT50aXRsZSgpOworICAgICAgICBh
cnRpc3QgPSBzZXNzaW9uTWV0YWRhdGEtPmFydGlzdCgpOworICAgICAgICBhbGJ1bSA9IHNlc3Np
b25NZXRhZGF0YS0+YWxidW0oKTsKKyAgICB9IGVsc2UKKyNlbHNlCisgICAgICAgIHRpdGxlID0g
bV9lbGVtZW50Lm1lZGlhU2Vzc2lvblRpdGxlKCk7CisjZW5kaWYKKworICAgIHJldHVybiBOb3dQ
bGF5aW5nSW5mbyB7IFdURk1vdmUodGl0bGUpLCBXVEZNb3ZlKGFydGlzdCksIFdURk1vdmUoYWxi
dW0pLCBtX2VsZW1lbnQuc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKCksIGR1cmF0aW9uLCBj
dXJyZW50VGltZSwgc3VwcG9ydHNTZWVraW5nLCBtX2VsZW1lbnQubWVkaWFTZXNzaW9uVW5pcXVl
SWRlbnRpZmllcigpLCBpc1BsYXlpbmcsIGFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxp
dHkgfTsKIH0KIAogdm9pZCBNZWRpYUVsZW1lbnRTZXNzaW9uOjp1cGRhdGVNZWRpYVVzYWdlSWZD
aGFuZ2VkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vz
c2lvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmgKaW5kZXgg
MWFiNDYyZjQ0NjFhNDRmY2NlY2VkOWZiZDEyM2I2ZTc1MmI3NzQyMy4uZDcxZTRkYmI0ZjAzYzQz
NmVmMzRlYzk0Y2VlNDcwMmFlYTJhMDFiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9NZWRpYUVsZW1lbnRTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVs
ZW1lbnRTZXNzaW9uLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0
LTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE0LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0xNzQsNiArMTc0LDEwIEBAIHB1YmxpYzoKICAgICBjb25zdCBj
aGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiTWVkaWFFbGVtZW50U2Vz
c2lvbiI7IH0KICNlbmRpZgogCisjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCisgICAgdm9pZCBk
aWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUmVtb3RlQ29udHJvbENvbW1hbmRUeXBlLCBj
b25zdCBSZW1vdGVDb21tYW5kQXJndW1lbnQqID0gbnVsbHB0cikgZmluYWw7CisjZW5kaWYKKwog
cHJpdmF0ZToKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCA2NzAxYTJkZTA3NDAyODQzNWE0YmY3MzZiZmI2ZmYy
OWEwNDhmZGI1Li4xYWQ0M2ZlNTM2YWQzY2FjYmQyYzRlN2UwNGIxNTAyNjdlOWU4YjAxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTEwMSw3ICsxMDEsNiBAQCBjbGFzcyBIVE1M
TWVkaWFFbGVtZW50OwogY2xhc3MgSFRNTFZpZGVvRWxlbWVudDsKIGNsYXNzIEhpdFRlc3RSZXN1
bHQ7CiBjbGFzcyBJbnRSZWN0OwotY2xhc3MgTWVkaWFTZXNzaW9uTWV0YWRhdGE7CiBjbGFzcyBO
YXZpZ2F0aW9uQWN0aW9uOwogY2xhc3MgTm9kZTsKIGNsYXNzIFBhZ2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmNwcAppbmRleCBhZjM0ZDUw
ZDNhNWE4YTY1ZTViYzk1ZTg3NzUzMWE3YWJmNDQ3OTY3Li41YjJhOTFmMmM1YjQ4MGZmZjVjZDg0
MjI5NjMxMjI1ODQ4NTE1Y2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9S
ZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Jl
bW90ZUNvbW1hbmRMaXN0ZW5lci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsNCArMzcsMjUgQEAgc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZUNvbW1hbmRMaXN0ZW5lcj4gUmVtb3RlQ29tbWFuZExpc3RlbmVyOjpjcmVhdGUoUmVtb3Rl
Q29tbWEKIAogI2VuZGlmCiAKK3ZvaWQgUmVtb3RlQ29tbWFuZExpc3RlbmVyOjpzY2hlZHVsZVN1
cHBvcnRlZENvbW1hbmRzVXBkYXRlKCkKK3sKKyAgICBpZiAoIW1fdXBkYXRlQ29tbWFuZHNUYXNr
Lmhhc1BlbmRpbmdUYXNrKCkpIHsKKyAgICAgICAgbV91cGRhdGVDb21tYW5kc1Rhc2suc2NoZWR1
bGVUYXNrKFt0aGlzXSAoKSAgeworICAgICAgICAgICAgdXBkYXRlU3VwcG9ydGVkQ29tbWFuZHMo
KTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCit2b2lkIFJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6
YWRkU3VwcG9ydGVkQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENv
bW1hbmRUeXBlIGNvbW1hbmQpCit7CisgICAgbV9yZWdpc3RlcmVkQ29tbWFuZHMuYWRkKGNvbW1h
bmQpOworICAgIHNjaGVkdWxlU3VwcG9ydGVkQ29tbWFuZHNVcGRhdGUoKTsKK30KKwordm9pZCBS
ZW1vdGVDb21tYW5kTGlzdGVuZXI6OnJlbW92ZVN1cHBvcnRlZENvbW1hbmQoUGxhdGZvcm1NZWRp
YVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21tYW5kKQoreworICAgIG1fcmVn
aXN0ZXJlZENvbW1hbmRzLnJlbW92ZShjb21tYW5kKTsKKyAgICBzY2hlZHVsZVN1cHBvcnRlZENv
bW1hbmRzVXBkYXRlKCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVt
b3RlQ29tbWFuZExpc3RlbmVyLmgKaW5kZXggMmI0MzRhZWY2ZTc1ZWEzNTBjODg4NWYwZWVmNzBj
NTk2ZTAxMWU5Ny4uNjdhY2JhYTg2NGQxMTZiZjAyMzExYjE0MzQ4ODAzNGJhMDZjOTZiZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYs
NiArMjYsNyBAQAogI2lmbmRlZiBSZW1vdGVDb21tYW5kTGlzdGVuZXJfaAogI2RlZmluZSBSZW1v
dGVDb21tYW5kTGlzdGVuZXJfaAogCisjaW5jbHVkZSAiRGVmZXJyYWJsZVRhc2suaCIKICNpbmNs
dWRlICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00
NSwxMiArNDYsMjAgQEAgcHVibGljOgogICAgIFJlbW90ZUNvbW1hbmRMaXN0ZW5lcihSZW1vdGVD
b21tYW5kTGlzdGVuZXJDbGllbnQmIGNsaWVudCkgOiBtX2NsaWVudChjbGllbnQpIHsgfQogICAg
IHZpcnR1YWwgflJlbW90ZUNvbW1hbmRMaXN0ZW5lcigpID0gZGVmYXVsdDsKIAorICAgIHZvaWQg
YWRkU3VwcG9ydGVkQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENv
bW1hbmRUeXBlKTsKKyAgICB2b2lkIHJlbW92ZVN1cHBvcnRlZENvbW1hbmQoUGxhdGZvcm1NZWRp
YVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSk7CiAgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZVN1cHBvcnRlZENvbW1hbmRzKCkgeyB9CisgICAgdm9pZCBzY2hlZHVsZVN1cHBvcnRlZENv
bW1hbmRzVXBkYXRlKCk7CiAKICAgICBSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQmIGNsaWVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CiAKIHByb3RlY3RlZDoKICAgICBSZW1vdGVD
b21tYW5kTGlzdGVuZXJDbGllbnQmIG1fY2xpZW50OworCisgICAgdXNpbmcgUmVtb3RlQ29tbWFu
ZHNTZXQgPSBIYXNoU2V0PFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFu
ZFR5cGUsIFdURjo6SW50SGFzaDxQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENv
bW1hbmRUeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlPj47CisgICAgUmVtb3RlQ29tbWFuZHNTZXQgbV9y
ZWdpc3RlcmVkQ29tbWFuZHM7CisKKyAgICBEZWZlcnJhYmxlVGFzazxUaW1lcj4gbV91cGRhdGVD
b21tYW5kc1Rhc2s7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Tm93UGxheWluZ0luZm8uaAppbmRleCA2N2U5MWUyMmRmOGYwMGRiNDQ1ODJlOTgwZmI2MjJhOGEw
Nzg5MGU1Li43NTQ4MjdhYTYwZjI5NTA3ZGUzMTdhYmRjNzcyN2YxYTE4ZjRkYmYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmgKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsNiArMzIs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBOb3dQbGF5aW5nSW5mbyB7CiAgICAg
U3RyaW5nIHRpdGxlOworICAgIFN0cmluZyBhcnRpc3Q7CisgICAgU3RyaW5nIGFsYnVtOwogICAg
IFN0cmluZyBzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXI7CiAgICAgZG91YmxlIGR1cmF0aW9u
IHsgMCB9OwogICAgIGRvdWJsZSBjdXJyZW50VGltZSB7IDAgfTsKQEAgLTU1LDYgKzU3LDE0IEBA
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGluZSBPcHRpb25hbDxOb3dQbGF5aW5nSW5mbz4g
Tm93UGxheWluZ0luZm86OmRlY29kZShECiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0aXRsZSkp
CiAgICAgICAgIHJldHVybiB7IH07CiAKKyAgICBTdHJpbmcgYXJ0aXN0OworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoYXJ0aXN0KSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIFN0cmluZyBh
bGJ1bTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFsYnVtKSkKKyAgICAgICAgcmV0dXJuIHsg
fTsKKwogICAgIFN0cmluZyBzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXI7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIpKQogICAgICAgICByZXR1
cm4geyB9OwpAQCAtODMsNyArOTMsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUg
T3B0aW9uYWw8Tm93UGxheWluZ0luZm8+IE5vd1BsYXlpbmdJbmZvOjpkZWNvZGUoRAogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoYWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSkpCiAg
ICAgICAgIHJldHVybiB7IH07CiAKLSAgICByZXR1cm4gTm93UGxheWluZ0luZm8geyBXVEZNb3Zl
KHRpdGxlKSwgV1RGTW92ZShzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIpLCBkdXJhdGlvbiwg
Y3VycmVudFRpbWUsIHN1cHBvcnRzU2Vla2luZywgdW5pcXVlSWRlbnRpZmllciwgaXNQbGF5aW5n
LCBhbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5IH07CisgICAgcmV0dXJuIE5vd1Bs
YXlpbmdJbmZvIHsgV1RGTW92ZSh0aXRsZSksIFdURk1vdmUoYXJ0aXN0KSwgV1RGTW92ZShhbGJ1
bSksIFdURk1vdmUoc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKSwgZHVyYXRpb24sIGN1cnJl
bnRUaW1lLCBzdXBwb3J0c1NlZWtpbmcsIHVuaXF1ZUlkZW50aWZpZXIsIGlzUGxheWluZywgYWxs
b3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSB9OwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9y
bU1lZGlhU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9y
bU1lZGlhU2Vzc2lvbi5jcHAKaW5kZXggOTI2OWFkMzkzZTYyMDU5MWM4MGI0MjE4ZjU5ODQ0NTlm
ZWY5ZmJhMy4uNDM3YzZkMGE1MTY2NDU5MGE0NjliYWQxYmI1ODIyYzE5ODJlMTk0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNz
aW9uLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTkzLDYgKzkzLDEwIEBAIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0
cmluZyhQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlCiAgICAg
ICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJCZWdpblNlZWtpbmdGb3J3YXJkQ29tbWFuZCIp
LAogICAgICAgICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiRW5kU2Vla2luZ0ZvcndhcmRDb21t
YW5kIiksCiAgICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJTZWVrVG9QbGF5YmFja1Bv
c2l0aW9uQ29tbWFuZCIpLAorICAgICAgICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiU2tpcEZv
cndhcmRDb21tYW5kIiksCisgICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJTa2lwQmFj
a3dhcmRDb21tYW5kIiksCisgICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJOZXh0VHJh
Y2tDb21tYW5kIiksCisgICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJQcmV2aW91c1Ry
YWNrQ29tbWFuZCIpLAogICAgIH07CiAgICAgc3RhdGljX2Fzc2VydCghc3RhdGljX2Nhc3Q8c2l6
ZV90PihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9Db21tYW5kKSwgIlBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpOb0NvbW1hbmQgaXMgbm90IDAgYXMgZXhwZWN0ZWQiKTsKICAgICBzdGF0aWNfYXNzZXJ0
KHN0YXRpY19jYXN0PHNpemVfdD4oUGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXlDb21tYW5kKSA9
PSAxLCAiUGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXlDb21tYW5kIGlzIG5vdCAxIGFzIGV4cGVj
dGVkIik7CkBAIC0xMDQsNiArMTA4LDEwIEBAIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0
cmluZyhQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlCiAgICAg
c3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpC
ZWdpblNlZWtpbmdGb3J3YXJkQ29tbWFuZCkgPT0gNywgIlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpC
ZWdpblNlZWtpbmdGb3J3YXJkQ29tbWFuZCBpcyBub3QgNyBhcyBleHBlY3RlZCIpOwogICAgIHN0
YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW5k
U2Vla2luZ0ZvcndhcmRDb21tYW5kKSA9PSA4LCAiUGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZFNl
ZWtpbmdGb3J3YXJkQ29tbWFuZCBpcyBub3QgOCBhcyBleHBlY3RlZCIpOwogICAgIHN0YXRpY19h
c3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2Vla1RvUGxh
eWJhY2tQb3NpdGlvbkNvbW1hbmQpID09IDksICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2Vla1Rv
UGxheWJhY2tQb3NpdGlvbkNvbW1hbmQgaXMgbm90IDkgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0
aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oUGxhdGZvcm1NZWRpYVNlc3Npb246OlNraXBG
b3J3YXJkQ29tbWFuZCkgPT0gMTAsICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEZvcndhcmRD
b21tYW5kIGlzIG5vdCAxMCBhcyBleHBlY3RlZCIpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGlj
X2Nhc3Q8c2l6ZV90PihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEJhY2t3YXJkQ29tbWFuZCkg
PT0gMTEsICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEJhY2t3YXJkQ29tbWFuZCBpcyBub3Qg
MTEgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4o
UGxhdGZvcm1NZWRpYVNlc3Npb246Ok5leHRUcmFja0NvbW1hbmQpID09IDEyLCAiUGxhdGZvcm1N
ZWRpYVNlc3Npb246Ok5leHRUcmFja0NvbW1hbmQgaXMgbm90IDEyIGFzIGV4cGVjdGVkIik7Cisg
ICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpQcmV2aW91c1RyYWNrQ29tbWFuZCkgPT0gMTMsICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UHJl
dmlvdXNUcmFja0NvbW1hbmQgaXMgbm90IDEzIGFzIGV4cGVjdGVkIik7CiAgICAgQVNTRVJUKHN0
YXRpY19jYXN0PHNpemVfdD4oY29tbWFuZCkgPCBXVEZfQVJSQVlfTEVOR1RIKHZhbHVlcykpOwog
ICAgIHJldHVybiB2YWx1ZXNbc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb21tYW5kKV07CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lv
bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24u
aAppbmRleCBjOTgxMjEzZDVlOTA3NmU0MmViOTBkYjRmM2ExMTU2YjUyZjRiNjI2Li5kOTUyZmE5
NWIzZjI3MzcwZTYwYjRjNjkxMmU5NTFhNWQ2OGQwZGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzAsOSAr
MTMwLDEzIEBAIHB1YmxpYzoKICAgICAgICAgQmVnaW5TZWVraW5nRm9yd2FyZENvbW1hbmQsCiAg
ICAgICAgIEVuZFNlZWtpbmdGb3J3YXJkQ29tbWFuZCwKICAgICAgICAgU2Vla1RvUGxheWJhY2tQ
b3NpdGlvbkNvbW1hbmQsCisgICAgICAgIFNraXBGb3J3YXJkQ29tbWFuZCwKKyAgICAgICAgU2tp
cEJhY2t3YXJkQ29tbWFuZCwKKyAgICAgICAgTmV4dFRyYWNrQ29tbWFuZCwKKyAgICAgICAgUHJl
dmlvdXNUcmFja0NvbW1hbmQsCiAgICAgfTsKICAgICBib29sIGNhblJlY2VpdmVSZW1vdGVDb250
cm9sQ29tbWFuZHMoKSBjb25zdDsKLSAgICB2b2lkIGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29t
bWFuZChSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIGNvbnN0IFJlbW90ZUNvbW1hbmRBcmd1bWVu
dCogYXJndW1lbnQgPSBudWxscHRyKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlbW90
ZUNvbnRyb2xDb21tYW5kKFJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgY29uc3QgUmVtb3RlQ29t
bWFuZEFyZ3VtZW50KiA9IG51bGxwdHIpOwogICAgIGJvb2wgc3VwcG9ydHNTZWVraW5nKCkgY29u
c3Q7CiAKICAgICBlbnVtIERpc3BsYXlUeXBlIDogdWludDhfdCB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdl
ci5oCmluZGV4IDFmY2IzMzQyNGYwYjU1ZmQyMjA5YjYzNGNlZGRlZTgzOWM0ZDdlZDYuLjIzZGQ5
OWM2ZGVmMmZmNGRhZWY4N2EwNTA5OGI3NzVhODA3ZGNhMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdl
ci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMTUyLDYgKzE1Miw5IEBAIHB1YmxpYzoKICAgICBib29sIGlzSW50ZXJydXB0ZWQo
KSBjb25zdCB7IHJldHVybiBtX2ludGVycnVwdGVkOyB9CiAgICAgYm9vbCBoYXNOb1Nlc3Npb24o
KSBjb25zdDsKIAorICAgIHZpcnR1YWwgdm9pZCBhZGRTdXBwb3J0ZWRDb21tYW5kKFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUpIHsgfTsKKyAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlU3VwcG9ydGVkQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3Rl
Q29udHJvbENvbW1hbmRUeXBlKSB7IH07CisKIHByb3RlY3RlZDoKICAgICBmcmllbmQgY2xhc3Mg
UGxhdGZvcm1NZWRpYVNlc3Npb247CiAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNl
c3Npb25NYW5hZ2VyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29h
L01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5oCmluZGV4IDQxYmEyZDUwYzhhYTZhYWJhOTk2Mjc1
OTVlZTA0MmRlNDZiNzJhMmUuLmQ5ZTM3YWE4MzdkNjU4YTk3MmU2YmI0MzI2NmM2Y2RkNjBkZmE5
NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg0LDYgKzg0LDkgQEAgcHJvdGVjdGVk
OgogCiAgICAgR2VuZXJpY1Rhc2tRdWV1ZTxUaW1lcj4mIHRhc2tRdWV1ZSgpIHsgcmV0dXJuIG1f
dGFza1F1ZXVlOyB9CiAKKyAgICB2b2lkIGFkZFN1cHBvcnRlZENvbW1hbmQoUGxhdGZvcm1NZWRp
YVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSkgZmluYWw7CisgICAgdm9pZCByZW1v
dmVTdXBwb3J0ZWRDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29t
bWFuZFR5cGUpIGZpbmFsOworCiBwcml2YXRlOgogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAog
ICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJN
ZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EiOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0K
aW5kZXggMDZmZmZlNzA0NDZlODFiYzExYmVlNmUzZTlkM2E4NjZiZjkyNzdjNy4uZDM0ZmM5MGQ3
YWE4YjY0MDgwNzlhMzE0ODhhYjAyZjgwYjdmMjg5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJD
b2NvYS5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTE1Myw2ICsxNTMsOSBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2Nv
YTo6cHJlcGFyZVRvU2VuZFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KCkKIHZvaWQgTWVkaWFT
ZXNzaW9uTWFuYWdlckNvY29hOjpzY2hlZHVsZVNlc3Npb25TdGF0dXNVcGRhdGUoKQogewogICAg
IG1fdGFza1F1ZXVlLmVucXVldWVUYXNrKFt0aGlzXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgaWYg
KG1fcmVtb3RlQ29tbWFuZExpc3RlbmVyKQorICAgICAgICAgICAgbV9yZW1vdGVDb21tYW5kTGlz
dGVuZXItPnVwZGF0ZVN1cHBvcnRlZENvbW1hbmRzKCk7CisKICAgICAgICAgdXBkYXRlTm93UGxh
eWluZ0luZm8oKTsKIAogICAgICAgICBmb3JFYWNoU2Vzc2lvbihbXSAoYXV0byYgc2Vzc2lvbikg
ewpAQCAtMjMyLDEwICsyMzUsMjMgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OmNs
aWVudENoYXJhY3RlcmlzdGljc0NoYW5nZWQoUGxhdGZvcm1NZWRpYVNlc3Npb24KIAogdm9pZCBN
ZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNlc3Npb25DYW5Qcm9kdWNlQXVkaW9DaGFuZ2VkKCkK
IHsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwogICAgIFBsYXRmb3JtTWVkaWFTZXNz
aW9uTWFuYWdlcjo6c2Vzc2lvbkNhblByb2R1Y2VBdWRpb0NoYW5nZWQoKTsKICAgICBzY2hlZHVs
ZVNlc3Npb25TdGF0dXNVcGRhdGUoKTsKIH0KIAordm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyQ29j
b2E6OmFkZFN1cHBvcnRlZENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRy
b2xDb21tYW5kVHlwZSBjb21tYW5kKQoreworICAgIGlmIChtX3JlbW90ZUNvbW1hbmRMaXN0ZW5l
cikKKyAgICAgICAgbV9yZW1vdGVDb21tYW5kTGlzdGVuZXItPmFkZFN1cHBvcnRlZENvbW1hbmQo
Y29tbWFuZCk7Cit9CisKK3ZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpyZW1vdmVTdXBw
b3J0ZWRDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5
cGUgY29tbWFuZCkKK3sKKyAgICBpZiAobV9yZW1vdGVDb21tYW5kTGlzdGVuZXIpCisgICAgICAg
IG1fcmVtb3RlQ29tbWFuZExpc3RlbmVyLT5yZW1vdmVTdXBwb3J0ZWRDb21tYW5kKGNvbW1hbmQp
OworfQorCiB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6Y2xlYXJOb3dQbGF5aW5nSW5m
bygpCiB7CiAgICAgaWYgKGNhbkxvYWRfTWVkaWFSZW1vdGVfTVJNZWRpYVJlbW90ZVNldE5vd1Bs
YXlpbmdWaXNpYmlsaXR5KCkpCkBAIC0yNjAsNiArMjc2LDEyIEBAIHZvaWQgTWVkaWFTZXNzaW9u
TWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyhib29sIHNldEFzTm93UGxheWluZ0FwcGxp
Y2F0aW9uCiAKICAgICBhdXRvIGluZm8gPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFi
bGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgNCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tz
LCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogCisgICAgaWYgKCFub3dQbGF5
aW5nSW5mby5hcnRpc3QuaXNFbXB0eSgpKQorICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShp
bmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0aXN0LCBub3dQbGF5aW5n
SW5mby5hcnRpc3QuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisKKyAgICBpZiAoIW5vd1BsYXlp
bmdJbmZvLmFsYnVtLmlzRW1wdHkoKSkKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5m
by5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FsYnVtLCBub3dQbGF5aW5nSW5m
by5hbGJ1bS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKwogICAgIGlmICghbm93UGxheWluZ0lu
Zm8udGl0bGUuaXNFbXB0eSgpKQogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdl
dCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvVGl0bGUsIG5vd1BsYXlpbmdJbmZvLnRp
dGxlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvTWVkaWFSZW1vdGVTb2Z0TGluay5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL01lZGlhUmVtb3RlU29mdExpbmsuaAppbmRleCA4YjVjZDIzZmIwMmFhMjY0NjYw
ZWRmMzgxNGU3N2ZiODYyZmQ1MGM4Li4wYWU4M2RkMDIyOTlhMmY5NmIyMTc3NDgyYjNjNzcyYmI2
OTBkMDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTWVkaWFSZW1v
dGVTb2Z0TGluay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9NZWRpYVJlbW90
ZVNvZnRMaW5rLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNTgsNiArNTgsMTQgQEAgU09GVF9MSU5LX0ZVTkNUSU9OX01BWV9GQUlMX0ZP
Ul9IRUFERVIoV2ViQ29yZSwgTWVkaWFSZW1vdGUsIE1STWVkaWFSZW1vdGVTZXRQYXIKICNkZWZp
bmUgTVJNZWRpYVJlbW90ZVNldFBhcmVudEFwcGxpY2F0aW9uIHNvZnRMaW5rX01lZGlhUmVtb3Rl
X01STWVkaWFSZW1vdGVTZXRQYXJlbnRBcHBsaWNhdGlvbgogU09GVF9MSU5LX0NPTlNUQU5UX0ZP
Ul9IRUFERVIoV2ViQ29yZSwgTWVkaWFSZW1vdGUsIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0lu
Zm9UaXRsZSwgQ0ZTdHJpbmdSZWYpOwogI2RlZmluZSBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJ
bmZvVGl0bGUgZ2V0X01lZGlhUmVtb3RlX2tNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9UaXRs
ZSgpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihXZWJDb3JlLCBNZWRpYVJlbW90ZSwg
a01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydGlzdCwgQ0ZTdHJpbmdSZWYpOworI2RlZmlu
ZSBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0aXN0IGdldF9NZWRpYVJlbW90ZV9rTVJN
ZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0aXN0KCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1Jf
SEVBREVSKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZv
QWxidW0sIENGU3RyaW5nUmVmKTsKKyNkZWZpbmUga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5m
b0FsYnVtIGdldF9NZWRpYVJlbW90ZV9rTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQWxidW0o
KQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoV2ViQ29yZSwgTWVkaWFSZW1vdGUsIGtN
Uk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrRGF0YSwgQ0ZTdHJpbmdSZWYpOworI2Rl
ZmluZSBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya0RhdGEgZ2V0X01lZGlhUmVt
b3RlX2tNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrRGF0YSgpCitTT0ZUX0xJTktf
Q09OU1RBTlRfRk9SX0hFQURFUihXZWJDb3JlLCBNZWRpYVJlbW90ZSwga01STWVkaWFSZW1vdGVO
b3dQbGF5aW5nSW5mb0FydHdvcmtNSU1FVHlwZSwgQ0ZTdHJpbmdSZWYpOworI2RlZmluZSBrTVJN
ZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya01JTUVUeXBlIGdldF9NZWRpYVJlbW90ZV9r
TVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya01JTUVUeXBlKCkKIFNPRlRfTElOS19D
T05TVEFOVF9GT1JfSEVBREVSKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU5v
d1BsYXlpbmdJbmZvRHVyYXRpb24sIENGU3RyaW5nUmVmKTsKICNkZWZpbmUga01STWVkaWFSZW1v
dGVOb3dQbGF5aW5nSW5mb0R1cmF0aW9uIGdldF9NZWRpYVJlbW90ZV9rTVJNZWRpYVJlbW90ZU5v
d1BsYXlpbmdJbmZvRHVyYXRpb24oKQogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoV2Vi
Q29yZSwgTWVkaWFSZW1vdGUsIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9FbGFwc2VkVGlt
ZSwgQ0ZTdHJpbmdSZWYpOwpAQCAtNjgsNiArNzYsOCBAQCBTT0ZUX0xJTktfQ09OU1RBTlRfRk9S
X0hFQURFUihXZWJDb3JlLCBNZWRpYVJlbW90ZSwga01STWVkaWFSZW1vdGVPcHRpb25QbGF5YmFj
awogI2RlZmluZSBrTVJNZWRpYVJlbW90ZU9wdGlvblBsYXliYWNrUG9zaXRpb24gZ2V0X01lZGlh
UmVtb3RlX2tNUk1lZGlhUmVtb3RlT3B0aW9uUGxheWJhY2tQb3NpdGlvbigpCiBTT0ZUX0xJTktf
Q09OU1RBTlRfRk9SX0hFQURFUihXZWJDb3JlLCBNZWRpYVJlbW90ZSwga01STWVkaWFSZW1vdGVO
b3dQbGF5aW5nSW5mb1VuaXF1ZUlkZW50aWZpZXIsIENGU3RyaW5nUmVmKTsKICNkZWZpbmUga01S
TWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb1VuaXF1ZUlkZW50aWZpZXIgZ2V0X01lZGlhUmVtb3Rl
X2tNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9VbmlxdWVJZGVudGlmaWVyKCkKK1NPRlRfTElO
S19DT05TVEFOVF9GT1JfSEVBREVSKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90
ZU9wdGlvblNraXBJbnRlcnZhbCwgQ0ZTdHJpbmdSZWYpOworI2RlZmluZSBrTVJNZWRpYVJlbW90
ZU9wdGlvblNraXBJbnRlcnZhbCBnZXRfTWVkaWFSZW1vdGVfa01STWVkaWFSZW1vdGVPcHRpb25T
a2lwSW50ZXJ2YWwoKQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIFNPRlRfTElOS19GVU5D
VElPTl9GT1JfSEVBREVSKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBNUk1lZGlhUmVtb3RlQ29weVBp
Y2thYmxlUm91dGVzLCBDRkFycmF5UmVmLCAoKSwgKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvTWVkaWFSZW1vdGVTb2Z0TGluay5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9NZWRpYVJlbW90ZVNvZnRMaW5rLm1tCmluZGV4IDg0ZGFjYjg1MWY4Y2Y2
YzFiZDY2N2E5NmU3YmMwOWY3MzkyZjlkNTQuLjczZTdiMjBkOWJmNTUyNzA0N2FjMzgxMTUyMDA2
ZjNlODUyMTVlMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9NZWRp
YVJlbW90ZVNvZnRMaW5rLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9NZWRp
YVJlbW90ZVNvZnRMaW5rLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC00NCwxMSArNDQsMTYgQEAgU09GVF9MSU5LX0ZVTkNUSU9OX0ZP
Ul9TT1VSQ0UoV2ViQ29yZSwgTWVkaWFSZW1vdGUsIE1STWVkaWFSZW1vdGVTZXROb3dQbGF5aW5n
SW4KIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBN
Uk1lZGlhUmVtb3RlU2V0Tm93UGxheWluZ0FwcGxpY2F0aW9uUGxheWJhY2tTdGF0ZUZvck9yaWdp
biwgdm9pZCwgKE1ST3JpZ2luUmVmIG9yaWdpbiwgTVJQbGF5YmFja1N0YXRlIHBsYXliYWNrU3Rh
dGUsIGRpc3BhdGNoX3F1ZXVlX3QgcmVwbHlRLCB2b2lkKF5jb21wbGV0aW9uKShNUk1lZGlhUmVt
b3RlRXJyb3IpKSwgKG9yaWdpbiwgcGxheWJhY2tTdGF0ZSwgcmVwbHlRLCBjb21wbGV0aW9uKSkK
IFNPRlRfTElOS19GVU5DVElPTl9NQVlfRkFJTF9GT1JfU09VUkNFKFdlYkNvcmUsIE1lZGlhUmVt
b3RlLCBNUk1lZGlhUmVtb3RlU2V0UGFyZW50QXBwbGljYXRpb24sIHZvaWQsIChNUk9yaWdpblJl
ZiBvcmlnaW4sIENGU3RyaW5nUmVmIHBhcmVudEFwcERpc3BsYXlJRCksIChvcmlnaW4sIHBhcmVu
dEFwcERpc3BsYXlJRCkpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShXZWJDb3JlLCBN
ZWRpYVJlbW90ZSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb1RpdGxlLCBDRlN0cmluZ1Jl
Zik7CitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShXZWJDb3JlLCBNZWRpYVJlbW90ZSwg
a01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydGlzdCwgQ0ZTdHJpbmdSZWYpOworU09GVF9M
SU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgTWVkaWFSZW1vdGUsIGtNUk1lZGlhUmVt
b3RlTm93UGxheWluZ0luZm9BbGJ1bSwgQ0ZTdHJpbmdSZWYpOworU09GVF9MSU5LX0NPTlNUQU5U
X0ZPUl9TT1VSQ0UoV2ViQ29yZSwgTWVkaWFSZW1vdGUsIGtNUk1lZGlhUmVtb3RlTm93UGxheWlu
Z0luZm9BcnR3b3JrRGF0YSwgQ0ZTdHJpbmdSZWYpOworU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9T
T1VSQ0UoV2ViQ29yZSwgTWVkaWFSZW1vdGUsIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9B
cnR3b3JrTUlNRVR5cGUsIENGU3RyaW5nUmVmKTsKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09V
UkNFKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRHVy
YXRpb24sIENGU3RyaW5nUmVmKTsKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFdlYkNv
cmUsIE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRWxhcHNlZFRpbWUs
IENGU3RyaW5nUmVmKTsKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFdlYkNvcmUsIE1l
ZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvUGxheWJhY2tSYXRlLCBDRlN0
cmluZ1JlZik7CiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShXZWJDb3JlLCBNZWRpYVJl
bW90ZSwga01STWVkaWFSZW1vdGVPcHRpb25QbGF5YmFja1Bvc2l0aW9uLCBDRlN0cmluZ1JlZik7
CiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShXZWJDb3JlLCBNZWRpYVJlbW90ZSwga01S
TWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb1VuaXF1ZUlkZW50aWZpZXIsIENGU3RyaW5nUmVmKTsK
K1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBrTVJN
ZWRpYVJlbW90ZU9wdGlvblNraXBJbnRlcnZhbCwgQ0ZTdHJpbmdSZWYpOwogCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIE1l
ZGlhUmVtb3RlLCBNUk1lZGlhUmVtb3RlQ29weVBpY2thYmxlUm91dGVzLCBDRkFycmF5UmVmLCAo
KSwgKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1JlbW90ZUNv
bW1hbmRMaXN0ZW5lck1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1JlbW90ZUNv
bW1hbmRMaXN0ZW5lck1hYy5oCmluZGV4IDk0YTQyZTE5MTcxYjJkY2I5ZmU5YjkwZjFkNThjMjNj
OWY3OGEyM2IuLmI3MWNhZDg2ODE4ODg0ZDk5NGFmYWVlODM4MjY5Yzk1ZjcxZGNjNjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9SZW1vdGVDb21tYW5kTGlzdGVuZXJN
YWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUmVtb3RlQ29tbWFuZExpc3Rl
bmVyTWFjLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzksOSArMzksMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflJlbW90ZUNvbW1h
bmRMaXN0ZW5lck1hYygpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCB1cGRhdGVTdXBwb3J0ZWRD
b21tYW5kcygpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVkQ29tbWFuZHMoKSBm
aW5hbDsKIAogICAgIHZvaWQqIG1fY29tbWFuZEhhbmRsZXIgeyBudWxscHRyIH07CisKKyAgICBj
b25zdCBSZW1vdGVDb21tYW5kc1NldCYgZGVmYXVsdENvbW1hbmRzKCk7CisgICAgUmVtb3RlQ29t
bWFuZHNTZXQgbV9jdXJyZW50Q29tbWFuZHM7CisgICAgYm9vbCBtX3N1cHBvcnRzU2Vla2luZyB7
IGZhbHNlIH07CiB9OwogICAgIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9SZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMubW0KaW5kZXggNGVhODM5MjA3MjcxODQ0
OGE4NjIyZmZlMmQzMjVjZjczNzEyNDYyOC4uZmFmNzUzZjg3YTQ0ZmYyMGZlZDgyOTNkN2MxNWIw
NWIzYTg3MDJjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1JlbW90
ZUNvbW1hbmRMaXN0ZW5lck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNSw0MiArMzUsMTAyIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorc3RhdGljIE9wdGlvbmFsPE1STWVkaWFSZW1vdGVDb21tYW5kPiBtZWRp
YVJlbW90ZUNvbW1hbmRGb3JQbGF0Zm9ybUNvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJl
bW90ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21tYW5kKQoreworICAgIHN0YXRpYyBjb25zdCBhdXRv
IGNvbW1hbmRNYXAgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgICAgICBzdHJ1Y3QgTWFw
RW50cnkgeworICAgICAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xD
b21tYW5kVHlwZSBwbGF0Zm9ybUNvbW1hbmQ7CisgICAgICAgICAgICBNUk1lZGlhUmVtb3RlQ29t
bWFuZCBtZWRpYVJlbW90ZUNvbW1hbmQ7CisgICAgICAgIH07CisgICAgICAgIHN0YXRpYyBjb25z
dCBNYXBFbnRyeSBlbnRyaWVzW10gPSB7CisgICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpQbGF5Q29tbWFuZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRQbGF5IH0sCisgICAgICAgICAg
ICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQYXVzZUNvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21t
YW5kUGF1c2UgfSwKKyAgICAgICAgICAgIHsgUGxhdGZvcm1NZWRpYVNlc3Npb246OlN0b3BDb21t
YW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZFN0b3AgfSwKKyAgICAgICAgICAgIHsgUGxhdGZvcm1N
ZWRpYVNlc3Npb246OlRvZ2dsZVBsYXlQYXVzZUNvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5k
VG9nZ2xlUGxheVBhdXNlIH0sCisgICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpC
ZWdpblNlZWtpbmdCYWNrd2FyZENvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kQmVnaW5SZXdp
bmQgfSwKKyAgICAgICAgICAgIHsgUGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZFNlZWtpbmdCYWNr
d2FyZENvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kRW5kUmV3aW5kIH0sCisgICAgICAgICAg
ICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpCZWdpblNlZWtpbmdGb3J3YXJkQ29tbWFuZCwgTVJN
ZWRpYVJlbW90ZUNvbW1hbmRCZWdpbkZhc3RGb3J3YXJkIH0sCisgICAgICAgICAgICB7IFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpFbmRTZWVraW5nRm9yd2FyZENvbW1hbmQsIE1STWVkaWFSZW1vdGVD
b21tYW5kRW5kRmFzdEZvcndhcmQgfSwKKyAgICAgICAgICAgIHsgUGxhdGZvcm1NZWRpYVNlc3Np
b246OlNlZWtUb1BsYXliYWNrUG9zaXRpb25Db21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZFNl
ZWtUb1BsYXliYWNrUG9zaXRpb24gfSwKKyAgICAgICAgICAgIHsgUGxhdGZvcm1NZWRpYVNlc3Np
b246OlNraXBGb3J3YXJkQ29tbWFuZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRTa2lwRm9yd2FyZCB9
LAorICAgICAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEJhY2t3YXJkQ29tbWFu
ZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRTa2lwQmFja3dhcmQgfSwKKyAgICAgICAgICAgIHsgUGxh
dGZvcm1NZWRpYVNlc3Npb246Ok5leHRUcmFja0NvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5k
TmV4dFRyYWNrIH0sCisgICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQcmV2aW91
c1RyYWNrQ29tbWFuZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRQcmV2aW91c1RyYWNrIH0sCisgICAg
ICAgIH07CisKKyAgICAgICAgSGFzaE1hcDxQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29u
dHJvbENvbW1hbmRUeXBlLCBNUk1lZGlhUmVtb3RlQ29tbWFuZCwgV1RGOjpJbnRIYXNoPFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGU+LCBXVEY6OlN0cm9uZ0Vu
dW1IYXNoVHJhaXRzPFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5
cGU+PiBtYXA7CisgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBlbnRyaWVzKQorICAgICAgICAg
ICAgbWFwLmFkZChlbnRyeS5wbGF0Zm9ybUNvbW1hbmQsIGVudHJ5Lm1lZGlhUmVtb3RlQ29tbWFu
ZCk7CisgICAgICAgIHJldHVybiBtYXA7CisgICAgfSgpKTsKKworICAgIGF1dG8gaXQgPSBjb21t
YW5kTWFwLmdldCgpLmZpbmQoY29tbWFuZCk7CisgICAgaWYgKGl0ICE9IGNvbW1hbmRNYXAuZ2V0
KCkuZW5kKCkpCisgICAgICAgIHJldHVybiB7IGl0LT52YWx1ZSB9OworCisgICAgcmV0dXJuIHsg
fTsKK30KKwogc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNvbW1hbmRMaXN0ZW5lcj4gUmVtb3RlQ29t
bWFuZExpc3RlbmVyOjpjcmVhdGUoUmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50JiBjbGllbnQp
CiB7CiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjPihjbGll
bnQpOwogfQogCitjb25zdCBSZW1vdGVDb21tYW5kTGlzdGVuZXI6OlJlbW90ZUNvbW1hbmRzU2V0
JiBSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWM6OmRlZmF1bHRDb21tYW5kcygpCit7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFJlbW90ZUNvbW1hbmRzU2V0PiBjb21tYW5kcyhzdGQ6OmluaXRp
YWxpemVyX2xpc3Q8UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlw
ZT4geworICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheUNvbW1hbmQsCisgICAgICAg
IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQYXVzZUNvbW1hbmQsCisgICAgICAgIFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpUb2dnbGVQbGF5UGF1c2VDb21tYW5kLAorICAgICAgICBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6QmVnaW5TZWVraW5nRm9yd2FyZENvbW1hbmQsCisgICAgICAgIFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpFbmRTZWVraW5nRm9yd2FyZENvbW1hbmQsCisgICAgICAgIFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpCZWdpblNlZWtpbmdCYWNrd2FyZENvbW1hbmQsCisgICAgICAgIFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpFbmRTZWVraW5nQmFja3dhcmRDb21tYW5kLAorICAgICAgICBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6U2Vla1RvUGxheWJhY2tQb3NpdGlvbkNvbW1hbmQsCisgICAgICAgIFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpTa2lwRm9yd2FyZENvbW1hbmQsCisgICAgICAgIFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpTa2lwQmFja3dhcmRDb21tYW5kLAorICAgIH0pOworCisgICAgcmV0dXJu
IGNvbW1hbmRzOworfQorCitzdGF0aWMgYm9vbCBpc1NlZWtDb21tYW5kKFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgY29tbWFuZCkKK3sKKyAgICByZXR1cm4g
Y29tbWFuZCA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2Vla1RvUGxheWJhY2tQb3NpdGlvbkNv
bW1hbmQKKyAgICAgICAgfHwgY29tbWFuZCA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEZv
cndhcmRDb21tYW5kCisgICAgICAgIHx8IGNvbW1hbmQgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246
OlNraXBCYWNrd2FyZENvbW1hbmQKKyAgICAgICAgfHwgY29tbWFuZCA9PSBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6QmVnaW5TZWVraW5nRm9yd2FyZENvbW1hbmQKKyAgICAgICAgfHwgY29tbWFuZCA9
PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QmVnaW5TZWVraW5nQmFja3dhcmRDb21tYW5kOworfQor
CiB2b2lkIFJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYzo6dXBkYXRlU3VwcG9ydGVkQ29tbWFuZHMo
KQogewogICAgIGlmICghaXNNZWRpYVJlbW90ZUZyYW1ld29ya0F2YWlsYWJsZSgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBzdGF0aWMgY29uc3QgTVJNZWRpYVJlbW90ZUNvbW1hbmQgc3VwcG9y
dGVkQ29tbWFuZHNbXSA9IHsKLSAgICAgICAgTVJNZWRpYVJlbW90ZUNvbW1hbmRQbGF5LAotICAg
ICAgICBNUk1lZGlhUmVtb3RlQ29tbWFuZFBhdXNlLAotICAgICAgICBNUk1lZGlhUmVtb3RlQ29t
bWFuZFRvZ2dsZVBsYXlQYXVzZSwKLSAgICAgICAgTVJNZWRpYVJlbW90ZUNvbW1hbmRCZWdpbkZh
c3RGb3J3YXJkLAotICAgICAgICBNUk1lZGlhUmVtb3RlQ29tbWFuZEVuZEZhc3RGb3J3YXJkLAot
ICAgICAgICBNUk1lZGlhUmVtb3RlQ29tbWFuZEJlZ2luUmV3aW5kLAotICAgICAgICBNUk1lZGlh
UmVtb3RlQ29tbWFuZEVuZFJld2luZCwKLSAgICAgICAgTVJNZWRpYVJlbW90ZUNvbW1hbmRTZWVr
VG9QbGF5YmFja1Bvc2l0aW9uLAotICAgIH07CisgICAgYXV0byYgc3VwcG9ydGVkQ29tbWFuZHMg
PSAhbV9yZWdpc3RlcmVkQ29tbWFuZHMuaXNFbXB0eSgpID8gbV9yZWdpc3RlcmVkQ29tbWFuZHMg
OiBkZWZhdWx0Q29tbWFuZHMoKTsKKyAgICBpZiAobV9zdXBwb3J0c1NlZWtpbmcgPT0gY2xpZW50
KCkuc3VwcG9ydHNTZWVraW5nKCkgJiYgbV9jdXJyZW50Q29tbWFuZHMgPT0gc3VwcG9ydGVkQ29t
bWFuZHMpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gY29tbWFuZEluZm9BcnJheSA9IGFk
b3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3VwcG9ydGVk
Q29tbWFuZHMuc2l6ZSgpLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CisgICAgZm9yIChhdXRv
IHBsYXRmb3JtQ29tbWFuZCA6IHN1cHBvcnRlZENvbW1hbmRzKSB7CisgICAgICAgIGlmIChpc1Nl
ZWtDb21tYW5kKHBsYXRmb3JtQ29tbWFuZCkgJiYgIWNsaWVudCgpLnN1cHBvcnRzU2Vla2luZygp
KQorICAgICAgICAgICAgY29udGludWU7CiAKLSAgICBhdXRvIGNvbW1hbmRJbmZvQXJyYXkgPSBh
ZG9wdENGKENGQXJyYXlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHNpemVvZihz
dXBwb3J0ZWRDb21tYW5kcykgLyBzaXplb2YoTVJNZWRpYVJlbW90ZUNvbW1hbmQpLCAma0NGVHlw
ZUFycmF5Q2FsbEJhY2tzKSk7CisgICAgICAgIGF1dG8gY29tbWFuZCA9IG1lZGlhUmVtb3RlQ29t
bWFuZEZvclBsYXRmb3JtQ29tbWFuZChwbGF0Zm9ybUNvbW1hbmQpOworICAgICAgICBBU1NFUlQo
Y29tbWFuZCk7CisgICAgICAgIGlmICghY29tbWFuZCkKKyAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgZm9yIChhdXRvIGNvbW1hbmQgOiBzdXBwb3J0ZWRDb21tYW5kcykgewogICAgICAgICBh
dXRvIGNvbW1hbmRJbmZvID0gYWRvcHRDRihNUk1lZGlhUmVtb3RlQ29tbWFuZEluZm9DcmVhdGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCkpOwotICAgICAgICBNUk1lZGlhUmVtb3RlQ29tbWFuZEluZm9T
ZXRDb21tYW5kKGNvbW1hbmRJbmZvLmdldCgpLCBjb21tYW5kKTsKKyAgICAgICAgTVJNZWRpYVJl
bW90ZUNvbW1hbmRJbmZvU2V0Q29tbWFuZChjb21tYW5kSW5mby5nZXQoKSwgY29tbWFuZC52YWx1
ZSgpKTsKICAgICAgICAgTVJNZWRpYVJlbW90ZUNvbW1hbmRJbmZvU2V0RW5hYmxlZChjb21tYW5k
SW5mby5nZXQoKSwgdHJ1ZSk7CiAgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShjb21tYW5kSW5m
b0FycmF5LmdldCgpLCBjb21tYW5kSW5mby5nZXQoKSk7CiAgICAgfQogCi0gICAgYXV0byBzZWVr
Q29tbWFuZEluZm8gPSBhZG9wdENGKE1STWVkaWFSZW1vdGVDb21tYW5kSW5mb0NyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0KSk7Ci0gICAgTVJNZWRpYVJlbW90ZUNvbW1hbmRJbmZvU2V0Q29tbWFu
ZChzZWVrQ29tbWFuZEluZm8uZ2V0KCksIE1STWVkaWFSZW1vdGVDb21tYW5kU2Vla1RvUGxheWJh
Y2tQb3NpdGlvbik7Ci0gICAgTVJNZWRpYVJlbW90ZUNvbW1hbmRJbmZvU2V0RW5hYmxlZChzZWVr
Q29tbWFuZEluZm8uZ2V0KCksIGNsaWVudCgpLnN1cHBvcnRzU2Vla2luZygpKTsKLSAgICBDRkFy
cmF5QXBwZW5kVmFsdWUoY29tbWFuZEluZm9BcnJheS5nZXQoKSwgc2Vla0NvbW1hbmRJbmZvLmdl
dCgpKTsKLQogICAgIE1STWVkaWFSZW1vdGVTZXRTdXBwb3J0ZWRDb21tYW5kcyhjb21tYW5kSW5m
b0FycmF5LmdldCgpLCBNUk1lZGlhUmVtb3RlR2V0TG9jYWxPcmlnaW4oKSwgbnVsbHB0ciwgbnVs
bHB0cik7CisgICAgbV9jdXJyZW50Q29tbWFuZHMgPSBzdXBwb3J0ZWRDb21tYW5kczsKKyAgICBt
X3N1cHBvcnRzU2Vla2luZyA9IGNsaWVudCgpLnN1cHBvcnRzU2Vla2luZygpOwogfQogCiBSZW1v
dGVDb21tYW5kTGlzdGVuZXJNYWM6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYyhSZW1vdGVDb21t
YW5kTGlzdGVuZXJDbGllbnQmIGNsaWVudCkKQEAgLTc5LDcgKzEzOSw3IEBAIFJlbW90ZUNvbW1h
bmRMaXN0ZW5lck1hYzo6UmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjKFJlbW90ZUNvbW1hbmRMaXN0
ZW5lckNsaWVudCYKICAgICBpZiAoIWlzTWVkaWFSZW1vdGVGcmFtZXdvcmtBdmFpbGFibGUoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgdXBkYXRlU3VwcG9ydGVkQ29tbWFuZHMoKTsKKyAgICBz
Y2hlZHVsZVN1cHBvcnRlZENvbW1hbmRzVXBkYXRlKCk7CiAKICAgICBhdXRvIHdlYWtUaGlzID0g
bWFrZVdlYWtQdHIoKnRoaXMpOwogICAgIG1fY29tbWFuZEhhbmRsZXIgPSBNUk1lZGlhUmVtb3Rl
QWRkQXN5bmNDb21tYW5kSGFuZGxlckJsb2NrKF4oTVJNZWRpYVJlbW90ZUNvbW1hbmQgY29tbWFu
ZCwgQ0ZEaWN0aW9uYXJ5UmVmIG9wdGlvbnMsIHZvaWQoXmNvbXBsZXRpb24pKENGQXJyYXlSZWYp
KSB7CkBAIC04OCw2ICsxNDgsNyBAQCBSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWM6OlJlbW90ZUNv
bW1hbmRMaXN0ZW5lck1hYyhSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQmCiAKICAgICAgICAg
UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBwbGF0Zm9ybUNv
bW1hbmQgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9Db21tYW5kIH07CiAgICAgICAgIFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb21tYW5kQXJndW1lbnQgYXJndW1lbnQgeyAwIH07Cisg
ICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb21tYW5kQXJndW1lbnQqIGFyZ3Vt
ZW50UHRyID0gbnVsbHB0cjsKICAgICAgICAgTVJNZWRpYVJlbW90ZUNvbW1hbmRIYW5kbGVyU3Rh
dHVzIHN0YXR1cyA9IE1STWVkaWFSZW1vdGVDb21tYW5kSGFuZGxlclN0YXR1c1N1Y2Nlc3M7CiAK
ICAgICAgICAgc3dpdGNoIChjb21tYW5kKSB7CkBAIC0xMjgsMTYgKzE4OSwzNyBAQCBSZW1vdGVD
b21tYW5kTGlzdGVuZXJNYWM6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYyhSZW1vdGVDb21tYW5k
TGlzdGVuZXJDbGllbnQmCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIENGTnVtYmVyR2V0
VmFsdWUocG9zaXRpb25SZWYsIGtDRk51bWJlckRvdWJsZVR5cGUsICZhcmd1bWVudC5hc0RvdWJs
ZSk7CisgICAgICAgICAgICBhcmd1bWVudFB0ciA9ICZhcmd1bWVudDsKICAgICAgICAgICAgIHBs
YXRmb3JtQ29tbWFuZCA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTZWVrVG9QbGF5YmFja1Bvc2l0
aW9uQ29tbWFuZDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2Ug
TVJNZWRpYVJlbW90ZUNvbW1hbmRTa2lwRm9yd2FyZDoKKyAgICAgICAgY2FzZSBNUk1lZGlhUmVt
b3RlQ29tbWFuZFNraXBCYWNrd2FyZDoKKyAgICAgICAgICAgIGlmICghY2xpZW50LnN1cHBvcnRz
U2Vla2luZygpKSB7CisgICAgICAgICAgICAgICAgc3RhdHVzID0gTVJNZWRpYVJlbW90ZUNvbW1h
bmRIYW5kbGVyU3RhdHVzQ29tbWFuZEZhaWxlZDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGF1dG8gcG9zaXRpb25SZWYgPSBzdGF0aWNf
Y2FzdDxDRk51bWJlclJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUob3B0aW9ucywga01STWVkaWFS
ZW1vdGVPcHRpb25Ta2lwSW50ZXJ2YWwpKSkgeworICAgICAgICAgICAgICAgIENGTnVtYmVyR2V0
VmFsdWUocG9zaXRpb25SZWYsIGtDRk51bWJlckRvdWJsZVR5cGUsICZhcmd1bWVudC5hc0RvdWJs
ZSk7CisgICAgICAgICAgICAgICAgYXJndW1lbnRQdHIgPSAmYXJndW1lbnQ7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHBsYXRmb3JtQ29tbWFuZCA9IChjb21tYW5kID09IE1STWVkaWFS
ZW1vdGVDb21tYW5kU2tpcEZvcndhcmQpID8gUGxhdGZvcm1NZWRpYVNlc3Npb246OlNraXBGb3J3
YXJkQ29tbWFuZCA6IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTa2lwQmFja3dhcmRDb21tYW5kOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTVJNZWRpYVJlbW90ZUNvbW1hbmROZXh0
VHJhY2s6CisgICAgICAgICAgICBwbGF0Zm9ybUNvbW1hbmQgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6TmV4dFRyYWNrQ29tbWFuZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1S
TWVkaWFSZW1vdGVDb21tYW5kUHJldmlvdXNUcmFjazoKKyAgICAgICAgICAgIHBsYXRmb3JtQ29t
bWFuZCA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQcmV2aW91c1RyYWNrQ29tbWFuZDsKKyAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgTE9HKE1lZGlhLCAi
UmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjOjpSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMgLSBjb21t
YW5kICV1IG5vdCBzdXBwb3J0ZWQhIiwgY29tbWFuZCk7CiAgICAgICAgICAgICBzdGF0dXMgPSBN
Uk1lZGlhUmVtb3RlQ29tbWFuZEhhbmRsZXJTdGF0dXNDb21tYW5kRmFpbGVkOwogICAgICAgICB9
OwogCiAgICAgICAgIGlmICh3ZWFrVGhpcyAmJiBzdGF0dXMgIT0gTVJNZWRpYVJlbW90ZUNvbW1h
bmRIYW5kbGVyU3RhdHVzQ29tbWFuZEZhaWxlZCkKLSAgICAgICAgICAgIHdlYWtUaGlzLT5tX2Ns
aWVudC5kaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQocGxhdGZvcm1Db21tYW5kLCAmYXJn
dW1lbnQpOworICAgICAgICAgICAgd2Vha1RoaXMtPm1fY2xpZW50LmRpZFJlY2VpdmVSZW1vdGVD
b250cm9sQ29tbWFuZChwbGF0Zm9ybUNvbW1hbmQsIGFyZ3VtZW50UHRyKTsKIAogICAgICAgICBj
b21wbGV0aW9uKChfX2JyaWRnZSBDRkFycmF5UmVmKUBbQChzdGF0dXMpXSk7CiAgICAgfSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNl
cy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1t
CmluZGV4IDYyZGNiMzA2YTg5OWNhOGJhNDI4NDkyZjkzNzYxMGY2OGE5ZmU0NTMuLjBjNzliZmZl
ZDViZWRjNzc5YTJjOTgxMjNmMjhlNzIzNjYwNTRjM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCkBAIC0xNDc5LDYgKzE0Nzks
MTYgQEAgc3RhdGljIFdlYkNvcmU6OkVkaXRhYmxlTGlua0JlaGF2aW9yIHRvRWRpdGFibGVMaW5r
QmVoYXZpb3IoX1dLRWRpdGFibGVMaW5rQmVoYXYKICAgICBfcHJlZmVyZW5jZXMtPnNldFBpdGNo
Q29ycmVjdGlvbkFsZ29yaXRobShwaXRjaENvcnJlY3Rpb25BbGdvcml0aG0pOwogfQogCistIChC
T09MKV9tZWRpYVNlc3Npb25FbmFibGVkCit7CisgICAgcmV0dXJuIF9wcmVmZXJlbmNlcy0+bWVk
aWFTZXNzaW9uRW5hYmxlZCgpOworfQorCistICh2b2lkKV9zZXRNZWRpYVNlc3Npb25FbmFibGVk
OihCT09MKW1lZGlhU2Vzc2lvbkVuYWJsZWQKK3sKKyAgICBfcHJlZmVyZW5jZXMtPnNldE1lZGlh
U2Vzc2lvbkVuYWJsZWQobWVkaWFTZXNzaW9uRW5hYmxlZCk7Cit9CisKIEBlbmQKIAogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1By
aXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2Vz
UHJpdmF0ZS5oCmluZGV4IGYwNjkxZmQ1NzUwNGYzY2E4MTFlNzRiMGQwYTM5ZTNkNzhhOGQ0MTEu
Ljc2NjY5NjAwOGZlMmJiNGFkM2ZmNjIxM2QyNWIzN2JmZmVkYzJiZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0
ZS5oCkBAIC0xNzAsNiArMTcwLDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLUGl0
Y2hDb3JyZWN0aW9uQWxnb3JpdGhtKSB7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9z
ZXRTcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQ6KSBCT09MIF9zcGVlY2hSZWNvZ25pdGlvbkVuYWJs
ZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFByaXZhdGVDbGlja01lYXN1cmVtZW50
RW5hYmxlZDopIEJPT0wgX3ByaXZhdGVDbGlja01lYXN1cmVtZW50RW5hYmxlZCBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChu
b25hdG9taWMsIHNldHRlcj1fc2V0UGl0Y2hDb3JyZWN0aW9uQWxnb3JpdGhtOikgX1dLUGl0Y2hD
b3JyZWN0aW9uQWxnb3JpdGhtIF9waXRjaENvcnJlY3Rpb25BbGdvcml0aG0gV0tfQVBJX0FWQUlM
QUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCBzZXR0ZXI9X3NldE1lZGlhU2Vzc2lvbkVuYWJsZWQ6KSBCT09MIF9tZWRpYVNlc3Np
b25FbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CiAKICNpZiAhVEFSR0VUX09TX0lQSE9ORQogQHByb3BlcnR5IChub25hdG9taWMsIHNl
dHRlcj1fc2V0V2ViR0xFbmFibGVkOikgQk9PTCBfd2ViR0xFbmFibGVkIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoMTAuMTMuNCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IGQ1YWUzMWZiZWNhMWM3YjkzNzllNGZjZWMzNzZlYzRiODE5NTVhZDQu
LjJmYjA0MTEyY2RjM2E4ODhkMGJiYzIwYjE4NWVjNjQxMTBlMmE4MTQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAy
MS0wMi0wNCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAg
ICBbTWFjXSBDb25uZWN0IE1lZGlhU2Vzc2lvbiB3aXRoIE1lZGlhUmVtb3RlIGFuZCBOb3dQbGF5
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE0
MzEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc0MDAwMzYzPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9NZWRpYVNlc3Npb24ubW06IEFkZGVkLgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6TWVkaWFTZXNzaW9uVGVzdDo6d2ViVmlldyk6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpNZWRpYVNlc3Npb25UZXN0Ojp3ZWJWaWV3UGlkKToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6Ok1lZGlhU2Vzc2lvblRlc3Q6OmdldE5vd1BsYXlpbmdDbGllbnQpOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uVGVzdDo6Z2V0Tm93UGxheWluZ0NsaWVudFBpZCk6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25UZXN0Ojpsb2FkUGFnZUFuZEJlY29t
ZU5vd1BsYXlpbmcpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uVGVzdDo6
cnVuU2NyaXB0V2l0aFVzZXJHZXN0dXJlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlh
U2Vzc2lvblRlc3Q6OnBsYXkpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9u
VGVzdDo6cGF1c2UpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uVGVzdDo6
c2VuZE1lZGlhUmVtb3RlQ29tbWFuZCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNl
c3Npb25UZXN0OjpzZW5kTWVkaWFSZW1vdGVTZWVrQ29tbWFuZCk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpNZWRpYVNlc3Npb25UZXN0OjpsaXN0ZW5Gb3JFdmVudE1lc3NhZ2VzKToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvblRlc3Q6OmV2ZW50TGlzdGVuZXJXYXNDYWxs
ZWQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uVGVzdDo6d2FpdEZvckV2
ZW50TGlzdGVuZXJUb0JlQ2FsbGVkKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vz
c2lvblRlc3Q6Omxpc3RlbkZvclNlc3Npb25IYW5kbGVyTWVzc2FnZXMpOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uVGVzdDo6c2Vzc2lvbkhhbmRsZXJXYXNDYWxsZWQpOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uVGVzdDo6d2FpdEZvclNlc3Npb25I
YW5kbGVyVG9CZUNhbGxlZCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25U
ZXN0OjpnZXRTdXBwb3J0ZWRDb21tYW5kcyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNU
X0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvbWVkaWEtcmVt
b3RlLmh0bWw6IEFkZGVkLgorCiAyMDIxLTAyLTA0ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJk
QGFwcGxlLmNvbT4KIAogICAgICAgICBbUHl0aG9uLTNdIENoYW5nZSBzaGViYW5nIGluIHRlc3Qt
d2Via2l0cHkgKFBhcnQtMSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNWM1OTdhNzFkMmVi
Mzg3ODYwN2RlMmFmZjNiZDJjODE3MzY4MzM2Yi4uMGI0OGU3ZWFlNWEyYmY4NmJkNjFiZDBkOTJi
MWFlZGVjNzIzMTk4ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU2LDYgKzU2LDggQEAK
IAkJMDc0OTk0NTIxRUE1MDM0QjAwMERBNDRFIC8qIGdldFVzZXJNZWRpYTIuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUJBRjRFMjI1
QUM5REI4MDBEODJGMzIgLyogZ2V0VXNlck1lZGlhMi5odG1sICovOyB9OwogCQkwNzZFNTA3RjFG
NDUxM0Q2MDA2RTlGNUEgLyogTG9nZ2luZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwNzZFNTA3RTFGNDUwMzFFMDA2RTlGNUEgLyogTG9nZ2luZy5j
cHAgKi87IH07CiAJCTA3N0E1QUYzMjMwNjM4QTYwMEE3MTA1QyAvKiBBY2Nlc3NpYmlsaXR5VGVz
dFBsdWdpbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3NDY2NDU4MjJGRjYzMDUwMEUzNDUxQSAvKiBBY2Nlc3NpYmlsaXR5VGVzdFBsdWdpbi5tbSAq
LzsgfTsKKwkJMDc5NDc0MEQyNUNBMEJERTAwQzU5N0VCIC8qIE1lZGlhU2Vzc2lvbi5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3OTQ3NDBDMjVDQTBC
REUwMEM1OTdFQiAvKiBNZWRpYVNlc3Npb24ubW0gKi87IH07CisJCTA3OTQ3NDJEMjVDQjMzRkQw
MEM1OTdFQiAvKiBtZWRpYS1yZW1vdGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzk0NzQyQzI1Q0IzM0IwMDBDNTk3RUIgLyogbWVk
aWEtcmVtb3RlLmh0bWwgKi87IH07CiAJCTA3OTlDMzQ5MUVCQTJEN0IwMDNCNzUzMiAvKiBVc2Vy
TWVkaWFEaXNhYmxlZC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3RURFRkFDMUVCOTQwMEMwMEQ0MzI5MiAvKiBVc2VyTWVkaWFEaXNhYmxlZC5tbSAq
LzsgfTsKIAkJMDc5OUMzNEIxRUJBMzMwMTAwM0I3NTMyIC8qIGRpc2FibGVHZXRVc2VyTWVkaWEu
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwNzk5QzM0QTFFQkEzMkY0MDAzQjc1MzIgLyogZGlzYWJsZUdldFVzZXJNZWRpYS5odG1sICov
OyB9OwogCQkwN0MwNDZDQTFFNDI2MkE4MDA3MjAxRTcgLyogQ0FSaW5nQnVmZmVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzA0NkM5MUU0MjU3
M0UwMDcyMDFFNyAvKiBDQVJpbmdCdWZmZXIuY3BwICovOyB9OwpAQCAtMTU1OSw2ICsxNTYxLDcg
QEAKIAkJCQlBRDU3QUMyMjFEQTc0NjZFMDBGRjFCREUgLyogbWFueS1pZnJhbWVzLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNzc3MkVDRTEyMkZFMDZDNjAwMDlBNzk5IC8qIG1hbnkt
c2FtZS1vcmlnaW4taWZyYW1lcy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUNEODM5
NERGMjMyQUY3QzAwMDE0OTQ5NSAvKiBtZWRpYS1sb2FkaW5nLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCisJCQkJMDc5NDc0MkQyNUNCMzNGRDAwQzU5N0VCIC8qIG1lZGlhLXJlbW90ZS5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUNEQTMxNTlBMUVENTQ4RjEwMDlGNjBEMyAvKiBN
ZWRpYVBsYXliYWNrU2xlZXBBc3NlcnRpb24uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJ
CQlDREM5NDQyRjFFRjIwNUQ2MDA1OUMzQzQgLyogbWVkaWFzdHJlYW10cmFjay1kZXRhY2hlZC5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUUxMjIwRENBMTU1QjI4QUEwMDEzRTJGQyAv
KiBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovLApAQCAtMTcyMiw2ICsxNzI1LDggQEAKIAkJMDc0OTJCM0ExREY4QUUy
RDAwNjMzREUxIC8qIEVudW1lcmF0ZU1lZGlhRGV2aWNlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBFbnVtZXJhdGVNZWRpYURldmljZXMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwNzY2REQxRjFBNUFENTIwMDAyM0UzQkIgLyogUGVuZGluZ0FQ
SVJlcXVlc3RVUkwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGVu
ZGluZ0FQSVJlcXVlc3RVUkwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzZF
NTA3RTFGNDUwMzFFMDA2RTlGNUEgLyogTG9nZ2luZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBMb2dnaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMDc5NDc0MEMyNUNBMEJERTAwQzU5N0VCIC8qIE1lZGlhU2Vzc2lvbi5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lZGlhU2Vzc2lvbi5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc5NDc0MkMyNUNCMzNCMDAwQzU5N0VCIC8qIG1lZGlhLXJl
bW90ZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIm1lZGlhLXJlbW90ZS5odG1s
Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc5OUMzNEExRUJBMzJGNDAwM0I3NTMy
IC8qIGRpc2FibGVHZXRVc2VyTWVkaWEuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9
IGRpc2FibGVHZXRVc2VyTWVkaWEuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MDdDMDQ2QzkxRTQyNTczRTAwNzIwMUU3IC8qIENBUmluZ0J1ZmZlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDQVJpbmdCdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwN0NDN0RGRDIyNjYzMzA4MDBFMzkxODEgLyogTWVkaWFCdWZmZXJp
bmdQb2xpY3kubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZWRp
YUJ1ZmZlcmluZ1BvbGljeS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMzNTks
NiArMzM2NCw3IEBACiAJCQkJOTVCNkIzQjYyNTFFQkYyRjAwRkM0MzgyIC8qIE1lZGlhRG9jdW1l
bnQubW0gKi8sCiAJCQkJQ0QwMzcwRTIyNEE0NEI3QTAwQkEzQ0FFIC8qIE1lZGlhTG9hZGluZy5t
bSAqLywKIAkJCQkwN0VGNzZENDI1NDBGQzA2MDA1M0VENTMgLyogTWVkaWFNdXRlZFN0YXRlLm1t
ICovLAorCQkJCTA3OTQ3NDBDMjVDQTBCREUwMEM1OTdFQiAvKiBNZWRpYVNlc3Npb24ubW0gKi8s
CiAJCQkJNTFCRTlFNjUyMzc2MDg5NTAwQjRFMTE3IC8qIE1lZGlhVHlwZS5tbSAqLywKIAkJCQk1
MTY1RkUwMzIwMUVFNjE3MDA5RjdFQzMgLyogTWVzc2FnZVBvcnRQcm92aWRlcnMubW0gKi8sCiAJ
CQkJNTFDRDFDNkExQjM4Q0UzNjAwMTQyQ0E1IC8qIE1vZGFsQWxlcnRzLm1tICovLApAQCAtMzky
Miw2ICszOTI4LDcgQEAKIAkJCQk0NkM1MTlFMzFEMzU2Mjk2MDBEQUE1MUEgLyogTG9jYWxTdG9y
YWdlTnVsbEVudHJpZXMubG9jYWxzdG9yYWdlICovLAogCQkJCTQ2QzUxOUU0MUQzNTYyOTYwMERB
QTUxQSAvKiBMb2NhbFN0b3JhZ2VOdWxsRW50cmllcy5sb2NhbHN0b3JhZ2Utc2htICovLAogCQkJ
CTdBNkEyQzcxMURDQ0ZCMDIwMEMwRDA4NSAvKiBMb2NhbFN0b3JhZ2VRdWlya0VuYWJsZWQuaHRt
bCAqLywKKwkJCQkwNzk0NzQyQzI1Q0IzM0IwMDBDNTk3RUIgLyogbWVkaWEtcmVtb3RlLmh0bWwg
Ki8sCiAJCQkJOUI1OUYxMjkyMDM0MDg1NDAwOUU2M0Q1IC8qIG1zby1saXN0LWNvbXBhdC1tb2Rl
Lmh0bWwgKi8sCiAJCQkJOUJDRDQxMTkyMDZENUVENzAwMUQ3MUJFIC8qIG1zby1saXN0LW9uLWg0
Lmh0bWwgKi8sCiAJCQkJOUJGMzU2Q0MyMDJENDRGMjAwRjcxMTYwIC8qIG1zby1saXN0Lmh0bWwg
Ki8sCkBAIC01MzgzLDYgKzUzOTAsNyBAQAogCQkJCUNEMDM3MEUzMjRBNDREOTYwMEJBM0NBRSAv
KiBNZWRpYUxvYWRpbmcubW0gaW4gU291cmNlcyAqLywKIAkJCQkwN0VGNzZENTI1NDBGQzA2MDA1
M0VENTMgLyogTWVkaWFNdXRlZFN0YXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBMzE1OTgx
RUQ1MzY1MTAwOUY2MEQzIC8qIE1lZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvbi5tbSBpbiBTb3Vy
Y2VzICovLAorCQkJCTA3OTQ3NDBEMjVDQTBCREUwMEM1OTdFQiAvKiBNZWRpYVNlc3Npb24ubW0g
aW4gU291cmNlcyAqLywKIAkJCQlDREM5NDQyRTFFRjFGQzA4MDA1OUMzQzQgLyogTWVkaWFTdHJl
YW1UcmFja0RldGFjaGVkLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFCRTlFNjYyMzc2MDg5RjAw
QjRFMTE3IC8qIE1lZGlhVHlwZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUM1MUE0MTFB
N0UwMDQ0N0M0QyAvKiBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0
ZS5tbSBpbiBTb3VyY2VzICovLApAQCAtNTQyMSw2ICs1NDI5LDcgQEAKIAkJCQlDMTA0QkMxRjI1
NDcyMzcxMDBDMDc4QzkgLyogT3ZlcnJpZGVBcHBsZUxhbmd1YWdlc1ByZWZlcmVuY2UubW0gaW4g
U291cmNlcyAqLywKIAkJCQlDRUJDQTEyRjFFM0E2NjAxMDBDNzMyOTMgLyogT3ZlcnJpZGVDb250
ZW50U2VjdXJpdHlQb2xpY3kubW0gaW4gU291cmNlcyAqLywKIAkJCQkyREEyNTg2RjIyNUM2N0RD
MDBCNDVDMUMgLyogT3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50cy5tbSBpbiBTb3VyY2VzICovLAor
CQkJCTk1M0FCQjM1MjVDMEQ2ODIwMDRDOEI3MyAvKiBQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29s
b3IubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NCNERBOTFDODNBRTczMDBDQzY5MTggLyogUGFn
ZUdyb3VwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjA3MUE0MTFBRTYwMDQ0N0M0QyAv
KiBQYWdlTG9hZEJhc2ljLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjA4MUE0MTFBRTYw
MDQ0N0M0QyAvKiBQYWdlTG9hZERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZUZvckZyYW1lLmNw
cCBpbiBTb3VyY2VzICovLApAQCAtNTQ2NCw3ICs1NDczLDYgQEAKIAkJCQk1MThDMTE1MzIwNUIw
NTA0MDAxRkY0QUUgLyogUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0gaW4gU291cmNlcyAqLywK
IAkJCQlGRUMyQTg1NjI0Q0VCNjVGMDBBREJDMzUgLyogUHJvcGVydHlTbG90LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTdDODNFMEMxMUQwQTY1MkYwMEZFQkNGMyAvKiBQcm92aXNpb25hbFVSTE5v
dENoYW5nZS5tbSBpbiBTb3VyY2VzICovLAotCQkJCTk1M0FCQjM1MjVDMEQ2ODIwMDRDOEI3MyAv
KiBQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IubW0gaW4gU291cmNlcyAqLywKIAkJCQk1Q0ZB
Q0Y2NTIyNkZEMkRDMDA1NkM3RDAgLyogUHJveHkubW0gaW4gU291cmNlcyAqLywKIAkJCQkwNDFB
MUUzNDIxNkZGREJDMDA3ODlFMEEgLyogUHVibGljU3VmZml4LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTdDODNFMEMyMUQwQTY1MzUwMEZFQkNGMyAvKiBRdWlja0xvb2subW0gaW4gU291cmNlcyAq
LywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTWVk
aWFTZXNzaW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9NZWRp
YVNlc3Npb24ubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWJjNjI5YzBkMTMxNjQ2YTY3OTFkY2RiMWRkYzdjNjZi
YTE1ZTA1ZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvTWVkaWFTZXNzaW9uLm1tCkBAIC0wLDAgKzEsMzgwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2ltcG9ydCAiY29uZmlnLmgiCisKKyNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShNRURJQV9T
RVNTSU9OKQorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdC5o
IgorI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5j
ZXNQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZh
dGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJL
aXQvV2ViVmlld1ByaXZhdGUuaD4KKyNpbXBvcnQgPHBhbC9zcGkvbWFjL01lZGlhUmVtb3RlU1BJ
Lmg+CisjaW1wb3J0IDx3dGYvRnVuY3Rpb24uaD4KKyNpbXBvcnQgPHd0Zi9IYXNoU2V0Lmg+Cisj
aW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5o
PgorI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CisKK1NPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SSyhNZWRpYVJlbW90ZSkKKwor
U09GVF9MSU5LKE1lZGlhUmVtb3RlLCBNUk1lZGlhUmVtb3RlU2VuZENvbW1hbmRUb0FwcCwgQm9v
bGVhbiwgKE1STWVkaWFSZW1vdGVDb21tYW5kIGNvbW1hbmQsIENGRGljdGlvbmFyeVJlZiBvcHRp
b25zLCBNUk9yaWdpblJlZiBvcmlnaW4sIENGU3RyaW5nUmVmIGFwcERpc3BsYXlJRCwgTVJTZW5k
Q29tbWFuZEFwcE9wdGlvbnMgYXBwT3B0aW9ucywgZGlzcGF0Y2hfcXVldWVfdCByZXBseVEsIHZv
aWQoXmNvbXBsZXRpb24pKE1SU2VuZENvbW1hbmRFcnJvciBlcnIsIENGQXJyYXlSZWYgaGFuZGxl
clJldHVyblN0YXR1c2VzKSksIChjb21tYW5kLCBvcHRpb25zLCBvcmlnaW4sIGFwcERpc3BsYXlJ
RCwgYXBwT3B0aW9ucywgcmVwbHlRLCBjb21wbGV0aW9uKSk7CisjZGVmaW5lIE1STWVkaWFSZW1v
dGVTZW5kQ29tbWFuZFRvQXBwIHNvZnRMaW5rTVJNZWRpYVJlbW90ZVNlbmRDb21tYW5kVG9BcHAK
KworU09GVF9MSU5LKE1lZGlhUmVtb3RlLCBNUk1lZGlhUmVtb3RlR2V0TG9jYWxPcmlnaW4sIE1S
T3JpZ2luUmVmLCAoKSwgKCkpOworI2RlZmluZSBNUk1lZGlhUmVtb3RlR2V0TG9jYWxPcmlnaW4g
c29mdExpbmtNUk1lZGlhUmVtb3RlR2V0TG9jYWxPcmlnaW4KKworU09GVF9MSU5LKE1lZGlhUmVt
b3RlLCBNUk1lZGlhUmVtb3RlR2V0U3VwcG9ydGVkQ29tbWFuZHNGb3JPcmlnaW4sIHZvaWQsIChN
Uk9yaWdpblJlZiBvcmlnaW4sIGRpc3BhdGNoX3F1ZXVlX3QgcXVldWUsIHZvaWQoXmNvbXBsZXRp
b24pKENGQXJyYXlSZWYgY29tbWFuZHMpKSwgKG9yaWdpbiwgcXVldWUsIGNvbXBsZXRpb24pKTsK
KyNkZWZpbmUgTVJNZWRpYVJlbW90ZUdldFN1cHBvcnRlZENvbW1hbmRzRm9yT3JpZ2luIHNvZnRM
aW5rTVJNZWRpYVJlbW90ZUdldFN1cHBvcnRlZENvbW1hbmRzRm9yT3JpZ2luCisKK1NPRlRfTElO
SyhNZWRpYVJlbW90ZSwgTVJNZWRpYVJlbW90ZUdldE5vd1BsYXlpbmdDbGllbnQsIHZvaWQsIChk
aXNwYXRjaF9xdWV1ZV90IHF1ZXVlLCB2b2lkKF5jb21wbGV0aW9uKShNUk5vd1BsYXlpbmdDbGll
bnRSZWYsIENGRXJyb3JSZWYpKSwgKHF1ZXVlLCBjb21wbGV0aW9uKSkKKyNkZWZpbmUgTVJNZWRp
YVJlbW90ZUdldE5vd1BsYXlpbmdDbGllbnQgc29mdExpbmtNUk1lZGlhUmVtb3RlR2V0Tm93UGxh
eWluZ0NsaWVudAorCitTT0ZUX0xJTksoTWVkaWFSZW1vdGUsIE1STm93UGxheWluZ0NsaWVudEdl
dFByb2Nlc3NJZGVudGlmaWVyLCBwaWRfdCwgKE1STm93UGxheWluZ0NsaWVudFJlZiBjbGllbnQp
LCAoY2xpZW50KSkKKyNkZWZpbmUgTVJOb3dQbGF5aW5nQ2xpZW50R2V0UHJvY2Vzc0lkZW50aWZp
ZXIgc29mdExpbmtNUk5vd1BsYXlpbmdDbGllbnRHZXRQcm9jZXNzSWRlbnRpZmllcgorCitTT0ZU
X0xJTktfQ09OU1RBTlQoTWVkaWFSZW1vdGUsIGtNUk1lZGlhUmVtb3RlT3B0aW9uU2tpcEludGVy
dmFsLCBDRlN0cmluZ1JlZikKKyNkZWZpbmUga01STWVkaWFSZW1vdGVPcHRpb25Ta2lwSW50ZXJ2
YWwgZ2V0a01STWVkaWFSZW1vdGVPcHRpb25Ta2lwSW50ZXJ2YWwoKQorCitTT0ZUX0xJTktfQ09O
U1RBTlQoTWVkaWFSZW1vdGUsIGtNUk1lZGlhUmVtb3RlT3B0aW9uUGxheWJhY2tQb3NpdGlvbiwg
Q0ZTdHJpbmdSZWYpCisjZGVmaW5lIGtNUk1lZGlhUmVtb3RlT3B0aW9uUGxheWJhY2tQb3NpdGlv
biBnZXRrTVJNZWRpYVJlbW90ZU9wdGlvblBsYXliYWNrUG9zaXRpb24oKQorCisjaWYgIVVTRShB
UFBMRV9JTlRFUk5BTF9TREspCitAaW50ZXJmYWNlIE1SQ29tbWFuZEluZm8gOiBOU09iamVjdAor
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBNUk1lZGlhUmVtb3RlQ29tbWFuZCBjb21t
YW5kOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBnZXR0ZXI9aXNFbmFibGVkKSBC
T09MIGVuYWJsZWQ7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIG51bGxhYmxlLCBj
b3B5KSBOU0RpY3Rpb25hcnkgKm9wdGlvbnM7CitAZW5kCisjZW5kaWYKKworbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkgeworCitjbGFzcyBNZWRpYVNlc3Npb25UZXN0IDogcHVibGljIHRlc3Rpbmc6
OlRlc3QgeworcHVibGljOgorICAgIHZvaWQgU2V0VXAoKSBmaW5hbAorICAgIHsKKyAgICAgICAg
X2NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOworICAgICAgICBbX2NvbmZpZ3VyYXRpb24gc2V0TWVkaWFUeXBlc1JlcXVpcmluZ1Vz
ZXJBY3Rpb25Gb3JQbGF5YmFjazpXS0F1ZGlvdmlzdWFsTWVkaWFUeXBlQXVkaW9dOworCisgICAg
ICAgIF93ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCAzMDAsIDMwMCkgY29uZmlndXJhdGlvbjpfY29uZmlndXJhdGlv
bi5nZXQoKSBhZGRUb1dpbmRvdzpZRVNdKTsKKworICAgICAgICBXS1ByZWZlcmVuY2VzICpwcmVm
ZXJlbmNlcyA9IFtfd2ViVmlldyBjb25maWd1cmF0aW9uXS5wcmVmZXJlbmNlczsKKyAgICAgICAg
cHJlZmVyZW5jZXMuX21lZGlhU2Vzc2lvbkVuYWJsZWQgPSBZRVM7CisKKyAgICAgICAgX21lc3Nh
Z2VIYW5kbGVycyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAg
IH0KKworICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgW193ZWJW
aWV3IGNsZWFyTWVzc2FnZUhhbmRsZXJzOl9tZXNzYWdlSGFuZGxlcnMuZ2V0KCldOworICAgIH0K
KworICAgIFRlc3RXS1dlYlZpZXcqIHdlYlZpZXcoKSB7IHJldHVybiBfd2ViVmlldy5nZXQoKTsg
fQorCisgICAgcGlkX3Qgd2ViVmlld1BpZCgpIHsgcmV0dXJuIFtfd2ViVmlldyBfd2ViUHJvY2Vz
c0lkZW50aWZpZXJdOyB9CisKKyAgICBSZXRhaW5QdHI8TVJOb3dQbGF5aW5nQ2xpZW50UmVmPiBn
ZXROb3dQbGF5aW5nQ2xpZW50KCkKKyAgICB7CisgICAgICAgIGJvb2wgZ290Tm93UGxheWluZyA9
IGZhbHNlOworICAgICAgICBSZXRhaW5QdHI8TVJOb3dQbGF5aW5nQ2xpZW50UmVmPiBub3dQbGF5
aW5nQ2xpZW50OworICAgICAgICBNUk1lZGlhUmVtb3RlR2V0Tm93UGxheWluZ0NsaWVudChkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbJl0gKE1STm93UGxheWluZ0NsaWVudFJlZiBwbGF5ZXIs
IENGRXJyb3JSZWYgZXJyb3IpIHsKKyAgICAgICAgICAgIGlmICghZXJyb3IgJiYgcGxheWVyKQor
ICAgICAgICAgICAgICAgIG5vd1BsYXlpbmdDbGllbnQgPSBwbGF5ZXI7CisgICAgICAgICAgICBn
b3ROb3dQbGF5aW5nID0gdHJ1ZTsKKyAgICAgICAgfSk7CisgICAgICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmZ290Tm93UGxheWluZyk7CisgICAgICAgIHJldHVybiBub3dQbGF5aW5nQ2xp
ZW50OworICAgIH0KKworICAgIHBpZF90IGdldE5vd1BsYXlpbmdDbGllbnRQaWQoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIE1STm93UGxheWluZ0NsaWVudEdldFByb2Nlc3NJZGVudGlmaWVyKGdl
dE5vd1BsYXlpbmdDbGllbnQoKS5nZXQoKSk7CisgICAgfQorCisgICAgdm9pZCBsb2FkUGFnZUFu
ZEJlY29tZU5vd1BsYXlpbmcoY29uc3QgU3RyaW5nJiBwYWdlTmFtZSkKKyAgICB7CisgICAgICAg
IFtfd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6cGFnZU5hbWVdOworCisg
ICAgICAgIGJvb2wgY2FucGxheXRocm91Z2ggPSBmYWxzZTsKKyAgICAgICAgW3dlYlZpZXcoKSBw
ZXJmb3JtQWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOkAiY2FucGxheXRocm91Z2ggZXZlbnQiIGFjdGlv
bjpbJl0geworICAgICAgICAgICAgY2FucGxheXRocm91Z2ggPSB0cnVlOworICAgICAgICB9XTsK
KyAgICAgICAgcnVuU2NyaXB0V2l0aFVzZXJHZXN0dXJlKCJsb2FkKCkiKTsKKyAgICAgICAgVXRp
bDo6cnVuKCZjYW5wbGF5dGhyb3VnaCk7CisKKyAgICAgICAgcGxheSgpOworICAgICAgICBwYXVz
ZSgpOworICAgICAgICBBU1NFUlRfRVEod2ViVmlld1BpZCgpLCBnZXROb3dQbGF5aW5nQ2xpZW50
UGlkKCkpOworICAgIH0KKworICAgIHZvaWQgcnVuU2NyaXB0V2l0aFVzZXJHZXN0dXJlKGNvbnN0
IFN0cmluZyYgc2NyaXB0KQorICAgIHsKKyAgICAgICAgYm9vbCBjb21wbGV0ZSA9IGZhbHNlOwor
ICAgICAgICBbX3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OnNjcmlwdCBjb21wbGV0aW9uSGFu
ZGxlcjpbJl0gKGlkLCBOU0Vycm9yICopIHsgY29tcGxldGUgPSB0cnVlOyB9XTsKKyAgICAgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZjb21wbGV0ZSk7CisgICAgfQorCisgICAgdm9pZCBw
bGF5KCkKKyAgICB7CisgICAgICAgIGJvb2wgcGxheWluZyA9IGZhbHNlOworICAgICAgICBbX3dl
YlZpZXcgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAInBsYXkgZXZlbnQiIGFjdGlvbjpb
Jl0geyBwbGF5aW5nID0gdHJ1ZTsgfV07CisgICAgICAgIHJ1blNjcmlwdFdpdGhVc2VyR2VzdHVy
ZSgiYXVkaW8ucGxheSgpIik7CisgICAgICAgIFV0aWw6OnJ1bigmcGxheWluZyk7CisgICAgfQor
CisgICAgdm9pZCBwYXVzZSgpCisgICAgeworICAgICAgICBib29sIHBhdXNlZCA9IGZhbHNlOwor
ICAgICAgICBbX3dlYlZpZXcgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAInBhdXNlIGV2
ZW50IiBhY3Rpb246WyZdIHsgcGF1c2VkID0gdHJ1ZTsgfV07CisgICAgICAgIHJ1blNjcmlwdFdp
dGhVc2VyR2VzdHVyZSgiYXVkaW8ucGF1c2UoKSIpOworICAgICAgICBVdGlsOjpydW4oJnBhdXNl
ZCk7CisgICAgfQorCisgICAgYm9vbCBzZW5kTWVkaWFSZW1vdGVDb21tYW5kKE1STWVkaWFSZW1v
dGVDb21tYW5kIGNvbW1hbmQsIENGRGljdGlvbmFyeVJlZiBvcHRpb25zID0gbnVsbHB0cikKKyAg
ICB7CisgICAgICAgIGJvb2wgY29tcGxldGVkID0gZmFsc2U7CisgICAgICAgIGJvb2wgc3VjY2Vz
czsKKworICAgICAgICBNUk1lZGlhUmVtb3RlU2VuZENvbW1hbmRUb0FwcChjb21tYW5kLCBvcHRp
b25zLCBOVUxMLCBOVUxMLCBzdGF0aWNfY2FzdDxNUlNlbmRDb21tYW5kQXBwT3B0aW9ucz4oMCks
IE5VTEwsIFsmXSAoTVJTZW5kQ29tbWFuZEVycm9yIGVycm9yLCBDRkFycmF5UmVmKSB7CisgICAg
ICAgICAgICBzdWNjZXNzID0gIWVycm9yOworICAgICAgICAgICAgY29tcGxldGVkID0gdHJ1ZTsK
KyAgICAgICAgfSk7CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmY29tcGxldGVk
KTsKKworICAgICAgICByZXR1cm4gc3VjY2VzczsKKyAgICB9CisKKyAgICBib29sIHNlbmRNZWRp
YVJlbW90ZVNlZWtDb21tYW5kKE1STWVkaWFSZW1vdGVDb21tYW5kIGNvbW1hbmQsIGRvdWJsZSBp
bnRlcnZhbCkKKyAgICB7CisgICAgICAgIENGU3RyaW5nUmVmIHNlZWtJbnRlcnZhbCA9IChjb21t
YW5kID09IE1STWVkaWFSZW1vdGVDb21tYW5kU2Vla1RvUGxheWJhY2tQb3NpdGlvbikgPyBrTVJN
ZWRpYVJlbW90ZU9wdGlvblBsYXliYWNrUG9zaXRpb24gOiBrTVJNZWRpYVJlbW90ZU9wdGlvblNr
aXBJbnRlcnZhbDsKKyAgICAgICAgTlNEaWN0aW9uYXJ5ICpvcHRpb25zID0gQHsoX19icmlkZ2Ug
TlNTdHJpbmcgKilzZWVrSW50ZXJ2YWwgOiBAKGludGVydmFsKX07CisgICAgICAgIHJldHVybiBz
ZW5kTWVkaWFSZW1vdGVDb21tYW5kKGNvbW1hbmQsIChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYp
b3B0aW9ucyk7CisgICAgfQorCisgICAgdm9pZCBsaXN0ZW5Gb3JFdmVudE1lc3NhZ2VzKHN0ZDo6
aW5pdGlhbGl6ZXJfbGlzdDxjb25zdCBjaGFyKj4gZXZlbnRzKQorICAgIHsKKyAgICAgICAgZm9y
IChhdXRvKiBldmVudCA6IGV2ZW50cykgeworICAgICAgICAgICAgYXV0byBldmVudE1lc3NhZ2Ug
PSBtYWtlU3RyaW5nKGV2ZW50LCAiIGV2ZW50Iik7CisgICAgICAgICAgICBbX21lc3NhZ2VIYW5k
bGVycyBhZGRPYmplY3Q6ZXZlbnRNZXNzYWdlXTsKKyAgICAgICAgICAgIFt3ZWJWaWV3KCkgcGVy
Zm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpldmVudE1lc3NhZ2UgYWN0aW9uOlt0aGlzLCBldmVu
dE1lc3NhZ2UgPSBXVEZNb3ZlKGV2ZW50TWVzc2FnZSldIHsKKyAgICAgICAgICAgICAgICBfZXZl
bnRMaXN0ZW5lcnNDYWxsZWQuYWRkKGV2ZW50TWVzc2FnZSk7CisgICAgICAgICAgICB9XTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGJvb2wgZXZlbnRMaXN0ZW5lcldhc0NhbGxlZChjb25zdCBT
dHJpbmcmIGV2ZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIF9ldmVudExpc3RlbmVyc0NhbGxl
ZC5jb250YWlucyhtYWtlU3RyaW5nKGV2ZW50LCAiIGV2ZW50IikpOworICAgIH0KKworICAgIHZv
aWQgd2FpdEZvckV2ZW50TGlzdGVuZXJUb0JlQ2FsbGVkKGNvbnN0IFN0cmluZyYgZXZlbnQpCisg
ICAgeworICAgICAgICBpbnQgdHJpZXMgPSAwOworICAgICAgICBkbyB7CisgICAgICAgICAgICBp
ZiAoZXZlbnRMaXN0ZW5lcldhc0NhbGxlZChldmVudCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgVXRpbDo6c2xlZXAoMC4xKTsKKyAgICAgICAgfSB3aGlsZSAoKyt0cmll
cyA8PSA1MCk7CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHZvaWQgbGlzdGVuRm9y
U2Vzc2lvbkhhbmRsZXJNZXNzYWdlcyhzdGQ6OmluaXRpYWxpemVyX2xpc3Q8Y29uc3QgY2hhcio+
IGhhbmRsZXJzKQorICAgIHsKKyAgICAgICAgZm9yIChhdXRvKiBoYW5kbGVyIDogaGFuZGxlcnMp
IHsKKyAgICAgICAgICAgIGF1dG8gaGFuZGxlck1lc3NhZ2UgPSBtYWtlU3RyaW5nKGhhbmRsZXIs
ICIgaGFuZGxlciIpOworICAgICAgICAgICAgW19tZXNzYWdlSGFuZGxlcnMgYWRkT2JqZWN0Omhh
bmRsZXJNZXNzYWdlXTsKKyAgICAgICAgICAgIFt3ZWJWaWV3KCkgcGVyZm9ybUFmdGVyUmVjZWl2
aW5nTWVzc2FnZTpoYW5kbGVyTWVzc2FnZSBhY3Rpb246W3RoaXMsIGhhbmRsZXJNZXNzYWdlID0g
V1RGTW92ZShoYW5kbGVyTWVzc2FnZSldIHsKKyAgICAgICAgICAgICAgICBfbWVkaWFTZXNzaW9u
SGFuZGxlcnNDYWxsZWQuYWRkKGhhbmRsZXJNZXNzYWdlKTsKKyAgICAgICAgICAgIH1dOworICAg
ICAgICB9CisgICAgfQorCisgICAgYm9vbCBzZXNzaW9uSGFuZGxlcldhc0NhbGxlZChjb25zdCBT
dHJpbmcmIGhhbmRsZXIpCisgICAgeworICAgICAgICByZXR1cm4gX21lZGlhU2Vzc2lvbkhhbmRs
ZXJzQ2FsbGVkLmNvbnRhaW5zKG1ha2VTdHJpbmcoaGFuZGxlciwgIiBoYW5kbGVyIikpOworICAg
IH0KKworICAgIHZvaWQgd2FpdEZvclNlc3Npb25IYW5kbGVyVG9CZUNhbGxlZChjb25zdCBTdHJp
bmcmIGhhbmRsZXIpCisgICAgeworICAgICAgICBpbnQgdHJpZXMgPSAwOworICAgICAgICBkbyB7
CisgICAgICAgICAgICBpZiAoc2Vzc2lvbkhhbmRsZXJXYXNDYWxsZWQoaGFuZGxlcikpCisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgVXRpbDo6c2xlZXAoMC4xKTsKKyAgICAg
ICAgfSB3aGlsZSAoKyt0cmllcyA8PSA1MCk7CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIFJldGFpblB0cjxOU0FycmF5PiBnZXRTdXBwb3J0ZWRDb21tYW5kcygpCisgICAgeworICAg
ICAgICBib29sIGNvbXBsZXRlZCA9IGZhbHNlOworICAgICAgICBSZXRhaW5QdHI8TlNBcnJheT4g
cmVzdWx0OworCisgICAgICAgIE1STWVkaWFSZW1vdGVHZXRTdXBwb3J0ZWRDb21tYW5kc0Zvck9y
aWdpbihNUk1lZGlhUmVtb3RlR2V0TG9jYWxPcmlnaW4oKSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVl
dWUoKSwgWyZdIChDRkFycmF5UmVmIGNvbW1hbmRzKSB7CisgICAgICAgICAgICByZXN1bHQgPSAo
X19icmlkZ2UgTlNBcnJheSAqKWNvbW1hbmRzOworICAgICAgICAgICAgY29tcGxldGVkID0gdHJ1
ZTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZjb21w
bGV0ZWQpOworCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCitwcml2YXRlOgorICAg
IFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBfY29uZmlndXJhdGlvbjsKKyAgICBS
ZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gX3dlYlZpZXc7CisKKyAgICBIYXNoU2V0PFN0cmluZz4g
X21lZGlhU2Vzc2lvbkhhbmRsZXJzQ2FsbGVkOworICAgIEhhc2hTZXQ8U3RyaW5nPiBfZXZlbnRM
aXN0ZW5lcnNDYWxsZWQ7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBfbWVzc2FnZUhh
bmRsZXJzOworfTsKKworVEVTVF9GKE1lZGlhU2Vzc2lvblRlc3QsIE9ubHlPbmVIYW5kbGVyKQor
eworICAgIGxvYWRQYWdlQW5kQmVjb21lTm93UGxheWluZygibWVkaWEtcmVtb3RlIik7CisKKyAg
ICBbd2ViVmlldygpIG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJzZXRFbXB0eUFjdGlv
bkhhbmRsZXJzKFsgJ3BsYXknIF0pIl07CisKKyAgICBsaXN0ZW5Gb3JTZXNzaW9uSGFuZGxlck1l
c3NhZ2VzKHsgInBsYXkiLCAicGF1c2UiLCAic2Vla3RvIiwgInNlZWtmb3J3YXJkIiwgInNlZWti
YWNrd2FyZCIsICJwcmV2aW91c3RyYWNrIiwgIm5leHR0cmFjayIgfSk7CisgICAgbGlzdGVuRm9y
RXZlbnRNZXNzYWdlcyh7ICJwbGF5IiwgInBhdXNlIiwgInNlZWtlZCIgfSk7CisKKyAgICBzdGF0
aWMgVmVjdG9yPE1STWVkaWFSZW1vdGVDb21tYW5kPiByZWdpc3RlcmVkQ29tbWFuZHMgPSB7IE1S
TWVkaWFSZW1vdGVDb21tYW5kUGxheSB9OworICAgIGF1dG8gY3VycmVudENvbW1hbmRzID0gZ2V0
U3VwcG9ydGVkQ29tbWFuZHMoKTsKKyAgICBmb3IgKE1SQ29tbWFuZEluZm8gKmNvbW1hbmQgaW4g
Y3VycmVudENvbW1hbmRzLmdldCgpKSB7CisgICAgICAgIGlmICghY29tbWFuZC5lbmFibGVkKQor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICBBU1NFUlRfVFJVRShyZWdp
c3RlcmVkQ29tbWFuZHMuY29udGFpbnMoY29tbWFuZC5jb21tYW5kKSk7CisgICAgfQorCisgICAg
QVNTRVJUX1RSVUUoc2VuZE1lZGlhUmVtb3RlQ29tbWFuZChNUk1lZGlhUmVtb3RlQ29tbWFuZFBs
YXkpKTsKKyAgICB3YWl0Rm9yU2Vzc2lvbkhhbmRsZXJUb0JlQ2FsbGVkKCJwbGF5Iik7CisgICAg
QVNTRVJUX1RSVUUoc2Vzc2lvbkhhbmRsZXJXYXNDYWxsZWQoInBsYXkiKSk7CisgICAgQVNTRVJU
X0ZBTFNFKGV2ZW50TGlzdGVuZXJXYXNDYWxsZWQoInBsYXkiKSk7CisKKyAgICAvLyBUaGUgbWVk
aWEgc2Vzc2lvbiBvbmx5IHJlZ2lzdGVyZWQgZm9yIFBsYXksIGJ1dCBubyBvdGhlciBjb21tYW5k
cyBzaG91bGQgcmVhY2ggSFRNTE1lZGlhRWxlbWVudC4KKyAgICBBU1NFUlRfVFJVRShzZW5kTWVk
aWFSZW1vdGVTZWVrQ29tbWFuZChNUk1lZGlhUmVtb3RlQ29tbWFuZFNraXBGb3J3YXJkLCAxKSk7
CisgICAgQVNTRVJUX0ZBTFNFKHNlc3Npb25IYW5kbGVyV2FzQ2FsbGVkKCJzZWVrZm9yd2FyZCIp
KTsKKyAgICBBU1NFUlRfRkFMU0UoZXZlbnRMaXN0ZW5lcldhc0NhbGxlZCgic2Vla2VkIikpOwor
CisgICAgQVNTRVJUX1RSVUUoc2VuZE1lZGlhUmVtb3RlU2Vla0NvbW1hbmQoTVJNZWRpYVJlbW90
ZUNvbW1hbmRTa2lwQmFja3dhcmQsIDEwKSk7CisgICAgQVNTRVJUX0ZBTFNFKHNlc3Npb25IYW5k
bGVyV2FzQ2FsbGVkKCJzZWVrYmFja3dhcmQiKSk7CisgICAgQVNTRVJUX0ZBTFNFKGV2ZW50TGlz
dGVuZXJXYXNDYWxsZWQoInNlZWtlZCIpKTsKKworICAgIEFTU0VSVF9UUlVFKHNlbmRNZWRpYVJl
bW90ZVNlZWtDb21tYW5kKE1STWVkaWFSZW1vdGVDb21tYW5kU2Vla1RvUGxheWJhY2tQb3NpdGlv
biwgNikpOworICAgIEFTU0VSVF9GQUxTRShzZXNzaW9uSGFuZGxlcldhc0NhbGxlZCgic2Vla3Rv
IikpOworICAgIEFTU0VSVF9GQUxTRShldmVudExpc3RlbmVyV2FzQ2FsbGVkKCJzZWVrZWQiKSk7
CisKKyAgICBBU1NFUlRfVFJVRShzZW5kTWVkaWFSZW1vdGVDb21tYW5kKE1STWVkaWFSZW1vdGVD
b21tYW5kTmV4dFRyYWNrKSk7CisgICAgQVNTRVJUX0ZBTFNFKHNlc3Npb25IYW5kbGVyV2FzQ2Fs
bGVkKCJuZXh0dHJhY2siKSk7CisKKyAgICBBU1NFUlRfVFJVRShzZW5kTWVkaWFSZW1vdGVDb21t
YW5kKE1STWVkaWFSZW1vdGVDb21tYW5kUHJldmlvdXNUcmFjaykpOworICAgIEFTU0VSVF9GQUxT
RShzZXNzaW9uSGFuZGxlcldhc0NhbGxlZCgicHJldmlvdXN0cmFjayIpKTsKK30KKworVEVTVF9G
KE1lZGlhU2Vzc2lvblRlc3QsIFJlbW90ZUNvbW1hbmRzKQoreworICAgIGxvYWRQYWdlQW5kQmVj
b21lTm93UGxheWluZygibWVkaWEtcmVtb3RlIik7CisKKyAgICBbd2ViVmlldygpIG9iamVjdEJ5
RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJzZXRFbXB0eUFjdGlvbkhhbmRsZXJzKFsgJ3BsYXknLCAn
cGF1c2UnLCAnc2Vla3RvJywgJ3NlZWtmb3J3YXJkJywgJ3NlZWtiYWNrd2FyZCcsICdwcmV2aW91
c3RyYWNrJywgJ25leHR0cmFjaycgXSkiXTsKKworICAgIGxpc3RlbkZvclNlc3Npb25IYW5kbGVy
TWVzc2FnZXMoeyAicGxheSIsICJwYXVzZSIsICJzZWVrdG8iLCAic2Vla2ZvcndhcmQiLCAic2Vl
a2JhY2t3YXJkIiwgInByZXZpb3VzdHJhY2siLCAibmV4dHRyYWNrIiB9KTsKKyAgICBsaXN0ZW5G
b3JFdmVudE1lc3NhZ2VzKHsgInBsYXkiLCAicGF1c2UiLCAic2Vla2VkIiB9KTsKKworICAgIHN0
YXRpYyBWZWN0b3I8TVJNZWRpYVJlbW90ZUNvbW1hbmQ+IHJlZ2lzdGVyZWRDb21tYW5kcyA9IHsg
TVJNZWRpYVJlbW90ZUNvbW1hbmRQbGF5LCBNUk1lZGlhUmVtb3RlQ29tbWFuZFBhdXNlLCBNUk1l
ZGlhUmVtb3RlQ29tbWFuZFNlZWtUb1BsYXliYWNrUG9zaXRpb24sIE1STWVkaWFSZW1vdGVDb21t
YW5kU2tpcEZvcndhcmQsIE1STWVkaWFSZW1vdGVDb21tYW5kU2tpcEJhY2t3YXJkLCBNUk1lZGlh
UmVtb3RlQ29tbWFuZFByZXZpb3VzVHJhY2ssIE1STWVkaWFSZW1vdGVDb21tYW5kTmV4dFRyYWNr
IH07CisgICAgYXV0byBjdXJyZW50Q29tbWFuZHMgPSBnZXRTdXBwb3J0ZWRDb21tYW5kcygpOwor
ICAgIGZvciAoTVJDb21tYW5kSW5mbyAqY29tbWFuZCBpbiBjdXJyZW50Q29tbWFuZHMuZ2V0KCkp
IHsKKyAgICAgICAgaWYgKCFjb21tYW5kLmVuYWJsZWQpCisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgCisgICAgICAgIEFTU0VSVF9UUlVFKHJlZ2lzdGVyZWRDb21tYW5kcy5jb250YWlu
cyhjb21tYW5kLmNvbW1hbmQpKTsKKyAgICB9CisKKyAgICBBU1NFUlRfVFJVRShzZW5kTWVkaWFS
ZW1vdGVDb21tYW5kKE1STWVkaWFSZW1vdGVDb21tYW5kUGxheSkpOworICAgIHdhaXRGb3JTZXNz
aW9uSGFuZGxlclRvQmVDYWxsZWQoInBsYXkiKTsKKyAgICBBU1NFUlRfVFJVRShzZXNzaW9uSGFu
ZGxlcldhc0NhbGxlZCgicGxheSIpKTsKKyAgICBBU1NFUlRfRkFMU0UoZXZlbnRMaXN0ZW5lcldh
c0NhbGxlZCgicGxheSIpKTsKKworICAgIEFTU0VSVF9UUlVFKHNlbmRNZWRpYVJlbW90ZUNvbW1h
bmQoTVJNZWRpYVJlbW90ZUNvbW1hbmRQYXVzZSkpOworICAgIHdhaXRGb3JTZXNzaW9uSGFuZGxl
clRvQmVDYWxsZWQoInBhdXNlIik7CisgICAgQVNTRVJUX1RSVUUoc2Vzc2lvbkhhbmRsZXJXYXND
YWxsZWQoInBhdXNlIikpOworICAgIEFTU0VSVF9GQUxTRShldmVudExpc3RlbmVyV2FzQ2FsbGVk
KCJwYXVzZSIpKTsKKworICAgIEFTU0VSVF9UUlVFKHNlbmRNZWRpYVJlbW90ZVNlZWtDb21tYW5k
KE1STWVkaWFSZW1vdGVDb21tYW5kU2tpcEZvcndhcmQsIDEpKTsKKyAgICB3YWl0Rm9yU2Vzc2lv
bkhhbmRsZXJUb0JlQ2FsbGVkKCJzZWVrZm9yd2FyZCIpOworICAgIEFTU0VSVF9UUlVFKHNlc3Np
b25IYW5kbGVyV2FzQ2FsbGVkKCJzZWVrZm9yd2FyZCIpKTsKKyAgICBBU1NFUlRfRkFMU0UoZXZl
bnRMaXN0ZW5lcldhc0NhbGxlZCgic2Vla2VkIikpOworCisgICAgQVNTRVJUX1RSVUUoc2VuZE1l
ZGlhUmVtb3RlU2Vla0NvbW1hbmQoTVJNZWRpYVJlbW90ZUNvbW1hbmRTa2lwQmFja3dhcmQsIDEw
KSk7CisgICAgd2FpdEZvclNlc3Npb25IYW5kbGVyVG9CZUNhbGxlZCgic2Vla2JhY2t3YXJkIik7
CisgICAgQVNTRVJUX1RSVUUoc2Vzc2lvbkhhbmRsZXJXYXNDYWxsZWQoInNlZWtiYWNrd2FyZCIp
KTsKKyAgICBBU1NFUlRfRkFMU0UoZXZlbnRMaXN0ZW5lcldhc0NhbGxlZCgic2Vla2VkIikpOwor
CisgICAgQVNTRVJUX1RSVUUoc2VuZE1lZGlhUmVtb3RlU2Vla0NvbW1hbmQoTVJNZWRpYVJlbW90
ZUNvbW1hbmRTZWVrVG9QbGF5YmFja1Bvc2l0aW9uLCA2KSk7CisgICAgd2FpdEZvclNlc3Npb25I
YW5kbGVyVG9CZUNhbGxlZCgic2Vla3RvIik7CisgICAgQVNTRVJUX1RSVUUoc2Vzc2lvbkhhbmRs
ZXJXYXNDYWxsZWQoInNlZWt0byIpKTsKKyAgICBBU1NFUlRfRkFMU0UoZXZlbnRMaXN0ZW5lcldh
c0NhbGxlZCgic2Vla2VkIikpOworCisgICAgQVNTRVJUX1RSVUUoc2VuZE1lZGlhUmVtb3RlQ29t
bWFuZChNUk1lZGlhUmVtb3RlQ29tbWFuZE5leHRUcmFjaykpOworICAgIHdhaXRGb3JTZXNzaW9u
SGFuZGxlclRvQmVDYWxsZWQoIm5leHR0cmFjayIpOworICAgIEFTU0VSVF9UUlVFKHNlc3Npb25I
YW5kbGVyV2FzQ2FsbGVkKCJuZXh0dHJhY2siKSk7CisKKyAgICBBU1NFUlRfVFJVRShzZW5kTWVk
aWFSZW1vdGVDb21tYW5kKE1STWVkaWFSZW1vdGVDb21tYW5kUHJldmlvdXNUcmFjaykpOworICAg
IHdhaXRGb3JTZXNzaW9uSGFuZGxlclRvQmVDYWxsZWQoInByZXZpb3VzdHJhY2siKTsKKyAgICBB
U1NFUlRfVFJVRShzZXNzaW9uSGFuZGxlcldhc0NhbGxlZCgicHJldmlvdXN0cmFjayIpKTsKKwor
ICAgIC8vIFVucmVnaXN0ZXIgYWN0aW9uIGhhbmRsZXJzLCBzdXBwb3J0ZWQgY29tbWFuZHMgc2hv
dWxkIGdvIHRvIEhUTUxNZWRpYUVsZW1lbnQuCisgICAgW3dlYlZpZXcoKSBvYmplY3RCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OkAiY2xlYXJBY3Rpb25IYW5kbGVycygpIl07CisKKyAgICBBU1NFUlRf
VFJVRShzZW5kTWVkaWFSZW1vdGVDb21tYW5kKE1STWVkaWFSZW1vdGVDb21tYW5kUGxheSkpOwor
ICAgIHdhaXRGb3JFdmVudExpc3RlbmVyVG9CZUNhbGxlZCgicGxheSIpOworICAgIEFTU0VSVF9U
UlVFKGV2ZW50TGlzdGVuZXJXYXNDYWxsZWQoInBsYXkiKSk7CisKKyAgICBBU1NFUlRfVFJVRShz
ZW5kTWVkaWFSZW1vdGVDb21tYW5kKE1STWVkaWFSZW1vdGVDb21tYW5kUGF1c2UpKTsKKyAgICB3
YWl0Rm9yRXZlbnRMaXN0ZW5lclRvQmVDYWxsZWQoInBsYXkiKTsKKyAgICBBU1NFUlRfVFJVRShl
dmVudExpc3RlbmVyV2FzQ2FsbGVkKCJwYXVzZSIpKTsKKworICAgIEFTU0VSVF9UUlVFKHNlbmRN
ZWRpYVJlbW90ZVNlZWtDb21tYW5kKE1STWVkaWFSZW1vdGVDb21tYW5kU2tpcEZvcndhcmQsIDEp
KTsKKyAgICB3YWl0Rm9yRXZlbnRMaXN0ZW5lclRvQmVDYWxsZWQoInNlZWtlZCIpOworICAgIEFT
U0VSVF9UUlVFKGV2ZW50TGlzdGVuZXJXYXNDYWxsZWQoInNlZWtlZCIpKTsKKworICAgIEFTU0VS
VF9UUlVFKHNlbmRNZWRpYVJlbW90ZVNlZWtDb21tYW5kKE1STWVkaWFSZW1vdGVDb21tYW5kU2tp
cEJhY2t3YXJkLCAxMCkpOworICAgIHdhaXRGb3JFdmVudExpc3RlbmVyVG9CZUNhbGxlZCgic2Vl
a2VkIik7CisgICAgQVNTRVJUX1RSVUUoZXZlbnRMaXN0ZW5lcldhc0NhbGxlZCgic2Vla2VkIikp
OworCisgICAgQVNTRVJUX1RSVUUoc2VuZE1lZGlhUmVtb3RlU2Vla0NvbW1hbmQoTVJNZWRpYVJl
bW90ZUNvbW1hbmRTZWVrVG9QbGF5YmFja1Bvc2l0aW9uLCA2KSk7CisgICAgd2FpdEZvckV2ZW50
TGlzdGVuZXJUb0JlQ2FsbGVkKCJzZWVrZWQiKTsKKyAgICBBU1NFUlRfVFJVRShldmVudExpc3Rl
bmVyV2FzQ2FsbGVkKCJzZWVrZWQiKSk7Cit9CisKK30KKworI2VuZGlmIC8vIFBMQVRGT1JNKE1B
QykgJiYgRU5BQkxFKE1FRElBX1NFU1NJT04pCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL21lZGlhLXJlbW90ZS5odG1sIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9tZWRpYS1yZW1vdGUuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYzk5
M2M3Y2Q0MDFhZmYzMmNmMjMyZWRiYzg4M2VjZGM3OWJiMzVmCi0tLSAvZGV2L251bGwKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9tZWRpYS1yZW1vdGUuaHRtbApA
QCAtMCwwICsxLDEzOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxl
PgorICAgICNldmVudHNsb2cgeworICAgICAgICBmb250LXNpemU6IDEwcHg7IAorICAgICAgICBo
ZWlnaHQ6IGNhbGMoMTAwJSAtICgzMjBweCkpOworICAgICAgICBvdmVyZmxvdy15OiBzY3JvbGw7
CisgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTQ3LCAxMjgsIDEwOCwgMC4yNSk7Cisg
ICAgfQorPC9zdHlsZT4KKyAgICA8c2NyaXB0PgorCisgICAgICAgIGxldCBwbGF5bGlzdCA9IHsK
KyAgICAgICAgICAgIGN1cnJlbnQ6IDAsCisgICAgICAgICAgICBtZXRhZGF0YTogWworICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdXJsOiAndmlkZW8td2l0aC1hdWRpby5t
cDQnLAorICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ0JpcCBCb3AgV2l0aCBBdWRpbycsCisg
ICAgICAgICAgICAgICAgICAgIGFydGlzdDogJ1RoZSBCaXAgQm9wIEF1dGhvcnMnLAorICAgICAg
ICAgICAgICAgICAgICBhbGJ1bTogJ1dlYktpdCBHcmVhdGVzdCBIaXRzJywKKyAgICAgICAgICAg
ICAgICAgICAgYXJ0d29yazogWworCisgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHVybDogJ3Zp
ZGVvLXdpdGhvdXQtYXVkaW8ubXA0JywKKyAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICdCaXAg
Qm9wIFdpdGhvdXQgQXVkaW8nLAorICAgICAgICAgICAgICAgICAgICBhcnRpc3Q6ICdUaGUgQmlw
IEJvcCBBdXRob3JzJywKKyAgICAgICAgICAgICAgICAgICAgYWxidW06ICdXZWJLaXQgT3JpZ2lu
YWwgVGVzdCBDb250ZW50JywKKyAgICAgICAgICAgICAgICAgICAgYXJ0d29yazogWworCisgICAg
ICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIF0sCisg
ICAgICAgIH07CisKKyAgICAgICAgZnVuY3Rpb24gc2V0TWV0YWRhdGEoZGF0YSkKKyAgICAgICAg
eworICAgICAgICAgICAgbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5tZXRhZGF0YSA9IG5ldyBNZWRp
YU1ldGFkYXRhKGRhdGEpOworICAgICAgICAgICAgcG9zdE1lc3NhZ2UoJ3NldCBtZXRhZGF0YScp
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzZXRQbGF5bGlzdE1ldGFkYXRhKGluZGV4
KQorICAgICAgICB7CisgICAgICAgICAgICBzZXRNZXRhZGF0YShwbGF5bGlzdC5tZXRhZGF0YVtp
bmRleF0pOworICAgICAgICAKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNsZWFyQWN0
aW9uSGFuZGxlcnMoKQorICAgICAgICB7CisgICAgICAgICAgICBzZXRFbXB0eUFjdGlvbkhhbmRs
ZXJzKFtdKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNldEVtcHR5QWN0aW9uSGFu
ZGxlcnMoaGFuZGxlcnMpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IGFjdGlvbnMgPSB7
CisgICAgICAgICAgICAgICAgJ3BsYXknIDogKCkgPT4geyBwb3N0TWVzc2FnZSgncGxheSBoYW5k
bGVyJyk7IH0sCisKKyAgICAgICAgICAgICAgICAncGF1c2UnIDogKCkgPT4geyBwb3N0TWVzc2Fn
ZSgncGF1c2UgaGFuZGxlcicpIH0sCisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
J3NlZWt0bycgOiAoZGV0YWlscykgPT4geyBwb3N0TWVzc2FnZSgnc2Vla3RvIGhhbmRsZXInKSB9
LAorCisgICAgICAgICAgICAgICAgJ3NlZWtmb3J3YXJkJyA6IChkZXRhaWxzKSA9PiB7IHBvc3RN
ZXNzYWdlKCdzZWVrZm9yd2FyZCBoYW5kbGVyJykgfSwKKworICAgICAgICAgICAgICAgICdzZWVr
YmFja3dhcmQnIDogKGRldGFpbHMpID0+IHsgcG9zdE1lc3NhZ2UoJ3NlZWtiYWNrd2FyZCBoYW5k
bGVyJykgfSwgCisKKyAgICAgICAgICAgICAgICAncHJldmlvdXN0cmFjaycgOiAoKSA9PiB7IHBv
c3RNZXNzYWdlKCdwcmV2aW91c3RyYWNrIGhhbmRsZXInKSB9LCAKKworICAgICAgICAgICAgICAg
ICduZXh0dHJhY2snIDogKCkgPT4geyBwb3N0TWVzc2FnZSgnbmV4dHRyYWNrIGhhbmRsZXInKSB9
LCAKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIE9iamVjdC5rZXlzKGFjdGlvbnMpLmZv
ckVhY2goYWN0aW9uID0+IHsgIG5hdmlnYXRvci5tZWRpYVNlc3Npb24uc2V0QWN0aW9uSGFuZGxl
cihhY3Rpb24sIG51bGwpOyB9KTsKKworICAgICAgICAgICAgaGFuZGxlcnMuZm9yRWFjaChoYW5k
bGVyID0+IHsKKyAgICAgICAgICAgICAgICBpZiAoIWFjdGlvbnNbaGFuZGxlcl0pIHsKKyAgICAg
ICAgICAgICAgICAgICAgbG9nKGBhc2tlZCB0byByZWdpc3RlciBoYW5kbGVyIGZvciB1bmtub3du
IGFjdGlvbiAnJHtoYW5kbGVyfSdgKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGxvZyhgcmVnaXN0ZXJpbmcgJyR7aGFu
ZGxlcn0nIGhhbmRsZXJgKTsKKyAgICAgICAgICAgICAgICBuYXZpZ2F0b3IubWVkaWFTZXNzaW9u
LnNldEFjdGlvbkhhbmRsZXIoaGFuZGxlciwgYWN0aW9uc1toYW5kbGVyXSk7IAorICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBwb3N0TWVzc2FnZShtZXNzYWdl
KQorICAgICAgICB7CisgICAgICAgICAgICBsb2coYCR7bWVzc2FnZX1gKQorICAgICAgICAgICAg
aWYgKHdpbmRvdy53ZWJraXQpCisgICAgICAgICAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdl
SGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UobWVzc2FnZSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBwb3N0RXZlbnQoZXZ0KSAKKyAgICAgICAgeworICAgICAgICAgICAg
cG9zdE1lc3NhZ2UoYCR7ZXZ0LnR5cGV9IGV2ZW50YCk7CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIGZ1bmN0aW9uIGxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBsZXQgc3JjID0g
cGxheWxpc3QubWV0YWRhdGFbMF0udXJsOworICAgICAgICAgICAgaWYgKCF3aW5kb3cud2Via2l0
KQorICAgICAgICAgICAgICAgIHNyYyA9IGAuLi9XZWJLaXRMZWdhY3kvaW9zLyR7c3JjfWA7Cisg
ICAgICAgICAgICBhdWRpby5zcmMgPSBzcmM7CisgICAgICAgICAgICBhdWRpby5sb2FkKCk7Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGZ1bmN0aW9uIGxvZyhtc2cpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGxldCBldmVudExvZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdldmVu
dHNsb2cnKQorICAgICAgICAgICAgbGV0IG5vdGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKTsKKyAgICAgICAgICAgIG5vdGUuaW5uZXJIVE1MID0gbXNnOworICAgICAgICAgICAgZXZl
bnRMb2cuaW5zZXJ0QmVmb3JlKG5vdGUsIGV2ZW50TG9nLmZpcnN0Q2hpbGQpOworICAgICAgICB9
CisKKyAgICAgICAgCisgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgZXZ0
ID0+IHsKKyAgICAgICAgICAgIGF1ZGlvID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
J2F1ZGlvJylbMF07CisgICAgICAgICAgICBhdWRpby5hZGRFdmVudExpc3RlbmVyKCdjYW5wbGF5
dGhyb3VnaCcsIHBvc3RFdmVudCk7CisgICAgICAgICAgICBhdWRpby5hZGRFdmVudExpc3RlbmVy
KCdwbGF5JywgcG9zdEV2ZW50KTsKKyAgICAgICAgICAgIGF1ZGlvLmFkZEV2ZW50TGlzdGVuZXIo
J3BhdXNlJywgcG9zdEV2ZW50KTsKKyAgICAgICAgICAgIGF1ZGlvLmFkZEV2ZW50TGlzdGVuZXIo
J3NlZWtlZCcsIHBvc3RFdmVudCk7CisgICAgICAgIH0sIGZhbHNlKTsKKworICAgIDwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+CisgICAgPGF1ZGlvIGNvbnRyb2xzPiA8L2F1ZGlvPgorICAgIDxi
cj4KKyAgICA8YnV0dG9uIG9uY2xpY2s9InNldEVtcHR5QWN0aW9uSGFuZGxlcnMoWydwbGF5Jywn
cGF1c2UnLCdzZWVrdG8nXSkiPkVtcHR5IFBsYXksIFBhdXNlLCBTZWVrVG88L2J1dHRvbj4KKyAg
ICA8YnI+CisgICAgPGJ1dHRvbiBvbmNsaWNrPSJzZXRFbXB0eUFjdGlvbkhhbmRsZXJzKFsncGxh
eScsJ3BhdXNlJywnc2Vla2ZvcndhcmQnLCdzZWVrYmFja3dhcmQnXSkiPkVtcHR5IFBsYXksIFBh
dXNlLCBTZWVrIEZvcndhcmQsIFNlZWsgQmFja3dhcmQ8L2J1dHRvbj4KKyAgICA8YnI+CisgICAg
PGJ1dHRvbiBvbmNsaWNrPSJsb2FkKCkiPkxvYWQ8L2J1dHRvbj4KKyAgICA8YnI+CisgICAgPGJ1
dHRvbiBvbmNsaWNrPSJzZXRQbGF5bGlzdE1ldGFkYXRhKDApIj5TZXQgTWV0YWRhdGEgMTwvYnV0
dG9uPjxidXR0b24gb25jbGljaz0ic2V0UGxheWxpc3RNZXRhZGF0YSgxKSI+U2V0IE1ldGFkYXRh
IDI8L2J1dHRvbj4KKyAgICA8YnI+CisgICAgPGRpdiBpZD0nZXZlbnRzbG9nJz48L2Rpdj4KKzwv
Ym9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419429</attachid>
            <date>2021-02-05 10:33:29 -0800</date>
            <delta_ts>2021-02-05 14:25:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221431-20210205103328.patch</filename>
            <type>text/plain</type>
            <size>93991</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDY1NTU5N2Y2NWVlNjhi
MzU4NTk2MzFmZjU2MjljMzNiZmE0YTliOC4uZDEyMDU0OTk2ZDU2MDZmMGRkYzJmMmUyMjI4ZmVi
ZjhhOGY4YmMxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisyMDIxLTAyLTA0ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIENvbm5l
Y3QgTWVkaWFTZXNzaW9uIHdpdGggTWVkaWFSZW1vdGUgYW5kIE5vd1BsYXlpbmcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTQzMQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNzQwMDAzNjM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUm91dGUgYWxsIHJlbW90ZSBjb250cm9sIGNvbW1hbmRzIHRvIG5h
dmlnYXRvci5tZWRpYVNlc3Npb24gd2hlbiBpdCBoYXMgYW55IAorICAgICAgICByZWdpc3RlcmVk
IGFjdGlvbiBoYW5kbGVycywgYW5kIHBhc3MgbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5tZXRhZGF0
YSB0byBOb3dQbGF5aW5nLgorCisgICAgICAgIFRlc3RlZCB3aXRoIG5ldyBBUEkgdGVzdHMgaW4g
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9NZWRpYVNlc3Npb24ubW0uCisK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYUltYWdlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUltYWdlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFJbWFnZTo6ZGVjb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1l
dGFkYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhTWV0YWRhdGE6OnNldFRpdGxlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhTWV0YWRhdGE6OnNldEFydGlzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYU1ldGFkYXRhOjpzZXRBbGJ1bSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YU1ldGFkYXRhOjpzZXRBcnR3b3JrKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9N
ZWRpYU1ldGFkYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYU1ldGFkYXRhOjp0aXRsZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYU1ldGFkYXRhOjphcnRpc3QgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFNZXRhZGF0YTo6YWxidW0gY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFNZXRhZGF0YTo6YXJ0d29yayBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYU1ldGFkYXRhOjptZXRhZGF0YSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXNlc3Npb24vTWVkaWFNZXRhZGF0YUluaXQuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhTWV0
YWRhdGFJbml0OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFNZXRhZGF0
YUluaXQ6OmRlY29kZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNz
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5leHRMb2dJZGVudGlmaWVyKToKKyAgICAgICAg
KFdlYkNvcmU6OmxvZ0NoYW5uZWwpOgorICAgICAgICAoV2ViQ29yZTo6bG9nQ2xhc3NOYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtQ29tbWFuZEZvck1lZGlhU2Vzc2lvbkFjdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb246Ok1lZGlhU2Vzc2lvbik6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVNlc3Npb246OnNldE1ldGFkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU2Vzc2lvbjo6c2V0UGxheWJhY2tTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNlc3Npb246OnNldEFjdGlvbkhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNz
aW9uOjpzZXRQb3NpdGlvblN0YXRlKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9N
ZWRpYVNlc3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6aGFzQWN0aXZl
QWN0aW9uSGFuZGxlcnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uOjps
b2dnZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uOjpsb2dJZGVudGlm
aWVyIGNvbnN0KToKKyAgICAgICAgKFdURjo6TG9nQXJndW1lbnQ8V2ViQ29yZTo6TWVkaWFTZXNz
aW9uUGxheWJhY2tTdGF0ZT46OnRvU3RyaW5nKToKKyAgICAgICAgKFdURjo6TG9nQXJndW1lbnQ8
V2ViQ29yZTo6TWVkaWFTZXNzaW9uQWN0aW9uPjo6dG9TdHJpbmcpOgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZGlkUmVjZWl2
ZVJlbW90ZUNvbnRyb2xDb21tYW5kKToKKyAgICAgICAgKiBodG1sL01lZGlhRWxlbWVudFNlc3Np
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6ZGlkUmVjZWl2
ZVJlbW90ZUNvbnRyb2xDb21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNl
c3Npb246Om5vd1BsYXlpbmdJbmZvIGNvbnN0KToKKyAgICAgICAgKiBodG1sL01lZGlhRWxlbWVu
dFNlc3Npb24uaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAgICAgICAqIHBs
YXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW1v
dGVDb21tYW5kTGlzdGVuZXI6OnNjaGVkdWxlU3VwcG9ydGVkQ29tbWFuZHNVcGRhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVtb3RlQ29tbWFuZExpc3RlbmVyOjphZGRTdXBwb3J0ZWRDb21tYW5k
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6cmVtb3ZlU3VwcG9y
dGVkQ29tbWFuZCk6CisgICAgICAgICogcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaDoKKyAgICAgICAgKFdl
YkNvcmU6Ok5vd1BsYXlpbmdJbmZvOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRFbnVt
ZXJhdGlvblRvU3RyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlh
U2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlci5oOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
OjphZGRTdXBwb3J0ZWRDb21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6cmVtb3ZlU3VwcG9ydGVkQ29tbWFuZCk6CisgICAgICAgICogcGxhdGZv
cm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLmg6CisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpzY2hlZHVsZVNlc3Npb25TdGF0dXNV
cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpzZXNz
aW9uQ2FuUHJvZHVjZUF1ZGlvQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Np
b25NYW5hZ2VyQ29jb2E6OmFkZFN1cHBvcnRlZENvbW1hbmQpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpyZW1vdmVTdXBwb3J0ZWRDb21tYW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8p
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9NZWRpYVJlbW90ZVNvZnRMaW5rLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvTWVkaWFSZW1vdGVTb2Z0TGluay5oOgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9SZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6bWVkaWFS
ZW1vdGVDb21tYW5kRm9yUGxhdGZvcm1Db21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90
ZUNvbW1hbmRMaXN0ZW5lck1hYzo6ZGVmYXVsdENvbW1hbmRzKToKKyAgICAgICAgKFdlYkNvcmU6
OmlzU2Vla0NvbW1hbmQpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlQ29tbWFuZExpc3RlbmVy
TWFjOjp1cGRhdGVTdXBwb3J0ZWRDb21tYW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVD
b21tYW5kTGlzdGVuZXJNYWM6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYyk6CisKIDIwMjEtMDIt
MDQgIEp1bGlhbiBHb256YWxleiAgPGp1bGlhbl9hX2dvbnphbGV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBOdWxsIGRlcmVmZXJlbmNlIGluIERvY3VtZW50TG9hZGVyOjpjb21taXREYXRhKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nCmluZGV4IDA5YjEwY2ExMjc5ZDliODE1NjZkYThmZmEyZTAxZTQ1ZDUwYjdi
ZmEuLmE2ZjZjMmNmZDBiNWMxMWNlNzBlMTI5Nzc4ZmMyMTBkZTExZTUyNDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0No
YW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTAyLTA0ICBFcmljIENhcmxzb24gIDxlcmlj
LmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIENvbm5lY3QgTWVkaWFTZXNzaW9u
IHdpdGggTWVkaWFSZW1vdGUgYW5kIE5vd1BsYXlpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTQzMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NzQwMDAzNjM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBwYWwvc3BpL21hYy9NZWRpYVJlbW90ZVNQSS5oOgorCiAyMDIxLTAyLTAxICBKZXIgTm9i
bGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gRGlzYWJsZSBpbnRl
cnN0aXRpYWwgZXZlbnRzIG9uIEFWUGxheWVySXRlbS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNzkzZjM0YTczN2Uz
OGViNmMxYzE5Mjg0YjJhNDdjYTA2NDkzMDIyOS4uZGFhY2Y4Njc4ZGIwYjFjMjQ1MTMyNmQyNDY4
ODUwZjkxNWJkNWFmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0wMi0wNCAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWFjXSBDb25u
ZWN0IE1lZGlhU2Vzc2lvbiB3aXRoIE1lZGlhUmVtb3RlIGFuZCBOb3dQbGF5aW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE0MzEKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzc0MDAwMzYzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBhIHByaXZhdGUgcHJlZmVyZW5jZSBzbyB0aGUgbmV3IE1l
ZGlhU2Vzc2lvbiBBUEkgdGVzdCBjYW4gZW5hYmxlIHRoZSBmZWF0dXJlLgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tOgorICAgICAgICAoLVtXS1ByZWZl
cmVuY2VzIF9tZWRpYVNlc3Npb25FbmFibGVkXSk6CisgICAgICAgICgtW1dLUHJlZmVyZW5jZXMg
X3NldE1lZGlhU2Vzc2lvbkVuYWJsZWQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oOgorCiAyMDIxLTAyLTA0ICBKdWxpYW4gR29uemFsZXog
IDxqdWxpYW5fYV9nb256YWxlekBhcHBsZS5jb20+CiAKICAgICAgICAgTnVsbCBkZXJlZmVyZW5j
ZSBpbiBEb2N1bWVudExvYWRlcjo6Y29tbWl0RGF0YSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYUltYWdlLmgKaW5kZXggYWYxMTk1ZWFkMGZiMjAwZjJi
NWFhYWFmMDZiNzgwYzI2MWUyZGFkZC4uNDkzMjQwMGEwMmY4NzY5ZDE5NDg5Y2QzOGEyZGE4MDNh
NDgxYzI0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24v
TWVkaWFJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01l
ZGlhSW1hZ2UuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zMyw4ICszMywzMyBAQCBzdHJ1Y3QgTWVkaWFJbWFnZSB7CiAgICAgU3RyaW5n
IHNyYzsKICAgICBTdHJpbmcgc2l6ZXM7CiAgICAgU3RyaW5nIHR5cGU7CisKKyAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPE1lZGlhSW1hZ2U+IGRlY29kZShEZWNv
ZGVyJik7CiB9OwogCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiBpbmxpbmUgdm9pZCBNZWRpYUlt
YWdlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHNy
YyA8PCBzaXplcyA8PCB0eXBlOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUg
T3B0aW9uYWw8TWVkaWFJbWFnZT4gTWVkaWFJbWFnZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
Cit7CisgICAgU3RyaW5nIHNyYzsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNyYykpCisgICAg
ICAgIHJldHVybiB7IH07CisKKyAgICBTdHJpbmcgc2l6ZXM7CisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShzaXplcykpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBTdHJpbmcgdHlwZTsKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHR5cGUpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAg
cmV0dXJuIE1lZGlhSW1hZ2UgeyBXVEZNb3ZlKHNyYyksIFdURk1vdmUoc2l6ZXMpLCBXVEZNb3Zl
KHR5cGUpIH07Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TRVNTSU9OKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRh
LmNwcAppbmRleCBhNmY0NDljNDI2MGZjZmI3Y2E0NmMwNmQxOThlYzdlNjU2MjgxZDlkLi5mNmZm
MzFmYjA4ZGQ0OTgxYTNiY2U5MDM5MmJkYmQyY2RhNWZjZGI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02NCwyNSAr
NjQsMjggQEAgdm9pZCBNZWRpYU1ldGFkYXRhOjpyZXNldE1lZGlhU2Vzc2lvbigpCiAKIHZvaWQg
TWVkaWFNZXRhZGF0YTo6c2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKLSAgICBpZiAo
bV90aXRsZSA9PSB0aXRsZSkKKyAgICBpZiAobV9tZXRhZGF0YS50aXRsZSA9PSB0aXRsZSkKICAg
ICAgICAgcmV0dXJuOwotICAgIG1fdGl0bGUgPSB0aXRsZTsKKworICAgIG1fbWV0YWRhdGEudGl0
bGUgPSB0aXRsZTsKICAgICBtZXRhZGF0YVVwZGF0ZWQoKTsKIH0KIAogdm9pZCBNZWRpYU1ldGFk
YXRhOjpzZXRBcnRpc3QoY29uc3QgU3RyaW5nJiBhcnRpc3QpCiB7Ci0gICAgaWYgKG1fYXJ0aXN0
ID09IGFydGlzdCkKKyAgICBpZiAobV9tZXRhZGF0YS5hcnRpc3QgPT0gYXJ0aXN0KQogICAgICAg
ICByZXR1cm47Ci0gICAgbV9hcnRpc3QgPSBhcnRpc3Q7CisKKyAgICBtX21ldGFkYXRhLmFydGlz
dCA9IGFydGlzdDsKICAgICBtZXRhZGF0YVVwZGF0ZWQoKTsKIH0KIAogdm9pZCBNZWRpYU1ldGFk
YXRhOjpzZXRBbGJ1bShjb25zdCBTdHJpbmcmIGFsYnVtKQogewotICAgIGlmIChtX2FsYnVtID09
IGFsYnVtKQorICAgIGlmIChtX21ldGFkYXRhLmFsYnVtID09IGFsYnVtKQogICAgICAgICByZXR1
cm47Ci0gICAgbV9hbGJ1bSA9IGFsYnVtOworCisgICAgbV9tZXRhZGF0YS5hbGJ1bSA9IGFsYnVt
OwogICAgIG1ldGFkYXRhVXBkYXRlZCgpOwogfQogCkBAIC05Nyw3ICsxMDAsNyBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBNZWRpYU1ldGFkYXRhOjpzZXRBcnR3b3JrKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIFZlYwogICAgICAgICByZXNvbHZlZEFydHdvcmsudW5jaGVja2VkQXBwZW5k
KE1lZGlhSW1hZ2UgeyByZXNvbHZlZFNyYy5zdHJpbmcoKSwgaW1hZ2Uuc2l6ZXMsIGltYWdlLnR5
cGUgfSk7CiAgICAgfQogCi0gICAgbV9hcnR3b3JrID0gV1RGTW92ZShyZXNvbHZlZEFydHdvcmsp
OworICAgIG1fbWV0YWRhdGEuYXJ0d29yayA9IFdURk1vdmUocmVzb2x2ZWRBcnR3b3JrKTsKICAg
ICBtZXRhZGF0YVVwZGF0ZWQoKTsKICAgICByZXR1cm4geyB9OwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5oCmluZGV4IDI2NGVl
Y2NhOTUwYjIyZWE0NTNiNzFlNDJkZmE4MDQ2MGE5NzZiY2EuLjMwZTA5M2Q2ZDI3ZGRiNzQxNTI4
MWVlOGI1ZDEwMDRlZmNmYWE1ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxF
KE1FRElBX1NFU1NJT04pCiAKKyNpbmNsdWRlICJNZWRpYU1ldGFkYXRhSW5pdC5oIgogI2luY2x1
ZGUgIk1lZGlhU2Vzc2lvbi5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KQEAgLTM0LDEwICszNSw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBNZWRpYVNlc3Npb247CiBzdHJ1Y3QgTWVkaWFJbWFn
ZTsKLXN0cnVjdCBNZWRpYU1ldGFkYXRhSW5pdDsKKwordXNpbmcgTWVkaWFTZXNzaW9uTWV0YWRh
dGEgPSBNZWRpYU1ldGFkYXRhSW5pdDsKIAogY2xhc3MgTWVkaWFNZXRhZGF0YSA6IHB1YmxpYyBS
ZWZDb3VudGVkPE1lZGlhTWV0YWRhdGE+IHsKIHB1YmxpYzoKQEAgLTQ3LDI3ICs0NywyNiBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRNZWRpYVNlc3Npb24oTWVkaWFTZXNzaW9uJik7CiAgICAgdm9p
ZCByZXNldE1lZGlhU2Vzc2lvbigpOwogCi0gICAgY29uc3QgU3RyaW5nJiB0aXRsZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdGl0bGU7IH0KKyAgICBjb25zdCBTdHJpbmcmIHRpdGxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9tZXRhZGF0YS50aXRsZTsgfQogICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5n
Jik7CiAKLSAgICBjb25zdCBTdHJpbmcmIGFydGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fYXJ0aXN0
OyB9CisgICAgY29uc3QgU3RyaW5nJiBhcnRpc3QoKSBjb25zdCB7IHJldHVybiBtX21ldGFkYXRh
LmFydGlzdDsgfQogICAgIHZvaWQgc2V0QXJ0aXN0KGNvbnN0IFN0cmluZyYpOwogCi0gICAgY29u
c3QgU3RyaW5nJiBhbGJ1bSgpIGNvbnN0IHsgcmV0dXJuIG1fYWxidW07IH0KKyAgICBjb25zdCBT
dHJpbmcmIGFsYnVtKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5hbGJ1bTsgfQogICAgIHZv
aWQgc2V0QWxidW0oY29uc3QgU3RyaW5nJik7CiAKLSAgICBjb25zdCBWZWN0b3I8TWVkaWFJbWFn
ZT4mIGFydHdvcmsoKSBjb25zdCB7IHJldHVybiBtX2FydHdvcms7IH0KKyAgICBjb25zdCBWZWN0
b3I8TWVkaWFJbWFnZT4mIGFydHdvcmsoKSBjb25zdCB7IHJldHVybiBtX21ldGFkYXRhLmFydHdv
cms7IH0KICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRBcnR3b3JrKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmLCBWZWN0b3I8TWVkaWFJbWFnZT4mJik7CiAKKyAgICBjb25zdCBNZWRpYVNlc3Npb25N
ZXRhZGF0YSYgbWV0YWRhdGEoKSBjb25zdCB7IHJldHVybiBtX21ldGFkYXRhOyB9CisKIHByaXZh
dGU6CiAgICAgTWVkaWFNZXRhZGF0YSgpOwogICAgIHZvaWQgbWV0YWRhdGFVcGRhdGVkKCk7CiAK
ICAgICBXZWFrUHRyPE1lZGlhU2Vzc2lvbj4gbV9zZXNzaW9uOwotICAgIFN0cmluZyBtX3RpdGxl
OwotICAgIFN0cmluZyBtX2FydGlzdDsKLSAgICBTdHJpbmcgbV9hbGJ1bTsKLSAgICBWZWN0b3I8
TWVkaWFJbWFnZT4gbV9hcnR3b3JrOworICAgIE1lZGlhU2Vzc2lvbk1ldGFkYXRhIG1fbWV0YWRh
dGE7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vz
c2lvbi9NZWRpYU1ldGFkYXRhSW5pdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNl
c3Npb24vTWVkaWFNZXRhZGF0YUluaXQuaAppbmRleCAwMTJlYzJkMDk1ZjkzYmJmZTI4YTM4ZDYz
YWFlYTQyMTI2YWI1NmU1Li42NjlkZWZmYTJkNjk0MDg1ZjA4ZjEwZGYxYjkxNmVmNDRlODg1ZTBk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1l
dGFkYXRhSW5pdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01l
ZGlhTWV0YWRhdGFJbml0LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAy
MC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMzYsOCArMzYsMzcgQEAgc3RydWN0IE1lZGlhTWV0YWRhdGFJbml0
IHsKICAgICBTdHJpbmcgYXJ0aXN0OwogICAgIFN0cmluZyBhbGJ1bTsKICAgICBWZWN0b3I8TWVk
aWFJbWFnZT4gYXJ0d29yazsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5j
b2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
T3B0aW9uYWw8TWVkaWFNZXRhZGF0YUluaXQ+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCit0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPiBpbmxpbmUgdm9pZCBNZWRpYU1ldGFkYXRhSW5pdDo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCB0aXRsZSA8PCBhcnRp
c3QgPDwgYWxidW0gPDwgYXJ0d29yazsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5s
aW5lIE9wdGlvbmFsPE1lZGlhTWV0YWRhdGFJbml0PiBNZWRpYU1ldGFkYXRhSW5pdDo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCit7CisgICAgU3RyaW5nIHRpdGxlOworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUodGl0bGUpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgU3RyaW5nIGFydGlz
dDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFydGlzdCkpCisgICAgICAgIHJldHVybiB7IH07
CisKKyAgICBTdHJpbmcgYWxidW07CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhbGJ1bSkpCisg
ICAgICAgIHJldHVybiB7IH07CisKKyAgICBWZWN0b3I8TWVkaWFJbWFnZT4gYXJ0d29yazsKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGFydHdvcmspKQorICAgICAgICByZXR1cm4geyB9OworCisg
ICAgcmV0dXJuIE1lZGlhTWV0YWRhdGFJbml0IHsgV1RGTW92ZSh0aXRsZSksIFdURk1vdmUoYXJ0
aXN0KSwgV1RGTW92ZShhbGJ1bSksIFdURk1vdmUoYXJ0d29yaykgfTsKK30KKwogfQogCiAjZW5k
aWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcAppbmRleCAxYWI2MjI0ODMyZWVmYTEy
OTJmMTM4NjEzYjQxZjA3NzA5OTYyM2NlLi5hM2I1YTkwZjA0N2RmN2U4OWEzNzU1NTcwNGJjM2Zl
ZTc1ZWUxMjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lv
bi9NZWRpYVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNz
aW9uL01lZGlhU2Vzc2lvbi5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsMTEgKzI4LDUzIEBACiAKICNpZiBFTkFCTEUoTUVESUFf
U0VTU0lPTikKIAorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYU1ldGFkYXRh
LmgiCiAjaW5jbHVkZSAiTmF2aWdhdG9yLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIGNvbnN0IHZvaWQq
IG5leHRMb2dJZGVudGlmaWVyKCkKK3sKKyAgICBzdGF0aWMgdWludDY0X3QgbG9nSWRlbnRpZmll
ciA9IGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyKCk7CisgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KCsrbG9nSWRlbnRpZmllcik7Cit9CisKK3N0YXRpYyBXVEZM
b2dDaGFubmVsJiBsb2dDaGFubmVsKCkgeyByZXR1cm4gTG9nTWVkaWE7IH0KK3N0YXRpYyBjb25z
dCBjaGFyKiBsb2dDbGFzc05hbWUoKSB7IHJldHVybiAiTWVkaWFTZXNzaW9uIjsgfQorCitzdGF0
aWMgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBwbGF0Zm9y
bUNvbW1hbmRGb3JNZWRpYVNlc3Npb25BY3Rpb24oTWVkaWFTZXNzaW9uQWN0aW9uIGFjdGlvbikK
K3sKKyAgICBzdGF0aWMgY29uc3QgYXV0byBjb21tYW5kTWFwID0gbWFrZU5ldmVyRGVzdHJveWVk
KFtdIHsKKyAgICAgICAgc3RydWN0IE1hcEVudHJ5IHsKKyAgICAgICAgICAgIE1lZGlhU2Vzc2lv
bkFjdGlvbiBhY3Rpb247CisgICAgICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3Rl
Q29udHJvbENvbW1hbmRUeXBlIGNvbW1hbmQ7CisgICAgICAgIH07CisgICAgICAgIHN0YXRpYyBj
b25zdCBNYXBFbnRyeSBlbnRyaWVzW10gPSB7CisgICAgICAgICAgICB7IE1lZGlhU2Vzc2lvbkFj
dGlvbjo6UGxheSwgUGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXlDb21tYW5kIH0sCisgICAgICAg
ICAgICB7IE1lZGlhU2Vzc2lvbkFjdGlvbjo6UGF1c2UsIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQ
YXVzZUNvbW1hbmQgfSwKKyAgICAgICAgICAgIHsgTWVkaWFTZXNzaW9uQWN0aW9uOjpTZWVrZm9y
d2FyZCwgUGxhdGZvcm1NZWRpYVNlc3Npb246OlNraXBGb3J3YXJkQ29tbWFuZCB9LAorICAgICAg
ICAgICAgeyBNZWRpYVNlc3Npb25BY3Rpb246OlNlZWtiYWNrd2FyZCwgUGxhdGZvcm1NZWRpYVNl
c3Npb246OlNraXBCYWNrd2FyZENvbW1hbmQgfSwKKyAgICAgICAgICAgIHsgTWVkaWFTZXNzaW9u
QWN0aW9uOjpQcmV2aW91c3RyYWNrLCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TmV4dFRyYWNrQ29t
bWFuZCB9LAorICAgICAgICAgICAgeyBNZWRpYVNlc3Npb25BY3Rpb246Ok5leHR0cmFjaywgUGxh
dGZvcm1NZWRpYVNlc3Npb246OlByZXZpb3VzVHJhY2tDb21tYW5kIH0sCisgICAgICAgICAgICB7
IE1lZGlhU2Vzc2lvbkFjdGlvbjo6U3RvcCwgUGxhdGZvcm1NZWRpYVNlc3Npb246OlN0b3BDb21t
YW5kIH0sCisgICAgICAgICAgICB7IE1lZGlhU2Vzc2lvbkFjdGlvbjo6U2Vla3RvLCBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6U2Vla1RvUGxheWJhY2tQb3NpdGlvbkNvbW1hbmQgfSwKKyAgICAgICAg
fTsKKworICAgICAgICBIYXNoTWFwPE1lZGlhU2Vzc2lvbkFjdGlvbiwgUGxhdGZvcm1NZWRpYVNl
c3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgV1RGOjpJbnRIYXNoPE1lZGlhU2Vzc2lv
bkFjdGlvbj4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8TWVkaWFTZXNzaW9uQWN0aW9uPj4g
bWFwOworICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogZW50cmllcykKKyAgICAgICAgICAgIG1h
cC5hZGQoZW50cnkuYWN0aW9uLCBlbnRyeS5jb21tYW5kKTsKKyAgICAgICAgcmV0dXJuIG1hcDsK
KyAgICB9KCkpOworCisgICAgYXV0byBpdCA9IGNvbW1hbmRNYXAuZ2V0KCkuZmluZChhY3Rpb24p
OworICAgIGlmIChpdCAhPSBjb21tYW5kTWFwLmdldCgpLmVuZCgpKQorICAgICAgICByZXR1cm4g
aXQtPnZhbHVlOworCisgICAgcmV0dXJuIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb0NvbW1hbmQ7
Cit9CisKIFJlZjxNZWRpYVNlc3Npb24+IE1lZGlhU2Vzc2lvbjo6Y3JlYXRlKE5hdmlnYXRvciYg
bmF2aWdhdG9yKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU2Vzc2lvbihuYXZp
Z2F0b3IpKTsKQEAgLTQxLDEyICs4MywxOCBAQCBSZWY8TWVkaWFTZXNzaW9uPiBNZWRpYVNlc3Np
b246OmNyZWF0ZShOYXZpZ2F0b3ImIG5hdmlnYXRvcikKIE1lZGlhU2Vzc2lvbjo6TWVkaWFTZXNz
aW9uKE5hdmlnYXRvciYgbmF2aWdhdG9yKQogICAgIDogbV9uYXZpZ2F0b3IobWFrZVdlYWtQdHIo
bmF2aWdhdG9yKSkKIHsKKyAgICBtX2xvZ2dlciA9IG1ha2VSZWZQdHIoRG9jdW1lbnQ6OnNoYXJl
ZExvZ2dlcigpKTsKKyAgICBtX2xvZ0lkZW50aWZpZXIgPSBuZXh0TG9nSWRlbnRpZmllcigpOwor
CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKIH0KIAogTWVkaWFTZXNzaW9uOjp+TWVk
aWFTZXNzaW9uKCkgPSBkZWZhdWx0OwogCiB2b2lkIE1lZGlhU2Vzc2lvbjo6c2V0TWV0YWRhdGEo
UmVmUHRyPE1lZGlhTWV0YWRhdGE+JiYgbWV0YWRhdGEpCiB7CisgICAgQUxXQVlTX0xPRyhMT0dJ
REVOVElGSUVSKTsKKwogICAgIGlmIChtX21ldGFkYXRhKQogICAgICAgICBtX21ldGFkYXRhLT5y
ZXNldE1lZGlhU2Vzc2lvbigpOwogICAgIG1fbWV0YWRhdGEgPSBXVEZNb3ZlKG1ldGFkYXRhKTsK
QEAgLTYwLDYgKzEwOCw4IEBAIHZvaWQgTWVkaWFTZXNzaW9uOjpzZXRQbGF5YmFja1N0YXRlKE1l
ZGlhU2Vzc2lvblBsYXliYWNrU3RhdGUgc3RhdGUpCiAgICAgaWYgKG1fcGxheWJhY2tTdGF0ZSA9
PSBzdGF0ZSkKICAgICAgICAgcmV0dXJuOwogCisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVS
LCBzdGF0ZSk7CisKICAgICBhdXRvIGN1cnJlbnRQb3NpdGlvbiA9IHRoaXMtPmN1cnJlbnRQb3Np
dGlvbigpOwogICAgIGlmIChtX3Bvc2l0aW9uU3RhdGUgJiYgY3VycmVudFBvc2l0aW9uKSB7CiAg
ICAgICAgIG1fcG9zaXRpb25TdGF0ZS0+cG9zaXRpb24gPSAqY3VycmVudFBvc2l0aW9uOwpAQCAt
NzAsMTAgKzEyMCwxOCBAQCB2b2lkIE1lZGlhU2Vzc2lvbjo6c2V0UGxheWJhY2tTdGF0ZShNZWRp
YVNlc3Npb25QbGF5YmFja1N0YXRlIHN0YXRlKQogCiB2b2lkIE1lZGlhU2Vzc2lvbjo6c2V0QWN0
aW9uSGFuZGxlcihNZWRpYVNlc3Npb25BY3Rpb24gYWN0aW9uLCBSZWZQdHI8TWVkaWFTZXNzaW9u
QWN0aW9uSGFuZGxlcj4mJiBoYW5kbGVyKQogewotICAgIGlmIChoYW5kbGVyKQorICAgIGlmICho
YW5kbGVyKSB7CisgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgImFkZGluZyAiLCBh
Y3Rpb24pOwogICAgICAgICBtX2FjdGlvbkhhbmRsZXJzLnNldChhY3Rpb24sIGhhbmRsZXIpOwot
ICAgIGVsc2UKLSAgICAgICAgbV9hY3Rpb25IYW5kbGVycy5yZW1vdmUoYWN0aW9uKTsKKyAgICAg
ICAgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuYWRkU3VwcG9y
dGVkQ29tbWFuZChwbGF0Zm9ybUNvbW1hbmRGb3JNZWRpYVNlc3Npb25BY3Rpb24oYWN0aW9uKSk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKG1fYWN0aW9uSGFuZGxlcnMuY29udGFpbnMoYWN0
aW9uKSkgeworICAgICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAicmVtb3Zpbmcg
IiwgYWN0aW9uKTsKKyAgICAgICAgICAgIG1fYWN0aW9uSGFuZGxlcnMucmVtb3ZlKGFjdGlvbik7
CisgICAgICAgIH0KKyAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRN
YW5hZ2VyKCkucmVtb3ZlU3VwcG9ydGVkQ29tbWFuZChwbGF0Zm9ybUNvbW1hbmRGb3JNZWRpYVNl
c3Npb25BY3Rpb24oYWN0aW9uKSk7CisgICAgfQorICAgIAogICAgIGFjdGlvbkhhbmRsZXJzVXBk
YXRlZCgpOwogfQogCkBAIC04OSw2ICsxNDcsOCBAQCBSZWZQdHI8TWVkaWFTZXNzaW9uQWN0aW9u
SGFuZGxlcj4gTWVkaWFTZXNzaW9uOjpoYW5kbGVyRm9yQWN0aW9uKE1lZGlhU2Vzc2lvbkFjdAog
CiBFeGNlcHRpb25Pcjx2b2lkPiBNZWRpYVNlc3Npb246OnNldFBvc2l0aW9uU3RhdGUoT3B0aW9u
YWw8TWVkaWFQb3NpdGlvblN0YXRlPiYmIHN0YXRlKQogeworICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUik7CisKICAgICBpZiAoIXN0YXRlKSB7CiAgICAgICAgIG1fcG9zaXRpb25TdGF0ZSA9
IFdURjo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmgKaW5kZXggM2Y2NGYzYjAyNDY4
NGU0ZjdlYzY0NDg3YjQxN2Y1ZWQxNzNhNzkwOS4uNGY0YmU0NzcyNjQ0MDg2Yjc3ZDYxZDlmNWIw
ODIzYTE1ZDA1MDU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNl
c3Npb24vTWVkaWFTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNl
c3Npb24vTWVkaWFTZXNzaW9uLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsMTAgKzI3LDE0IEBACiAKICNpZiBFTkFCTEUoTUVESUFf
U0VTU0lPTikKIAorI2luY2x1ZGUgIkpTTWVkaWFQb3NpdGlvblN0YXRlLmgiCisjaW5jbHVkZSAi
SlNNZWRpYVNlc3Npb25BY3Rpb24uaCIKKyNpbmNsdWRlICJKU01lZGlhU2Vzc2lvblBsYXliYWNr
U3RhdGUuaCIKICNpbmNsdWRlICJNZWRpYVBvc2l0aW9uU3RhdGUuaCIKICNpbmNsdWRlICJNZWRp
YVNlc3Npb25BY3Rpb24uaCIKICNpbmNsdWRlICJNZWRpYVNlc3Npb25BY3Rpb25IYW5kbGVyLmgi
CiAjaW5jbHVkZSAiTWVkaWFTZXNzaW9uUGxheWJhY2tTdGF0ZS5oIgorI2luY2x1ZGUgPHd0Zi9M
b2dnZXIuaD4KICNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9P
cHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KQEAgLTU3LDEzICs2MSwxOCBA
QCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8ZG91YmxlPiBjdXJyZW50UG9z
aXRpb24oKSBjb25zdDsKIAogICAgIHZvaWQgbWV0YWRhdGFVcGRhdGVkKCk7CisKICAgICB2b2lk
IGFjdGlvbkhhbmRsZXJzVXBkYXRlZCgpOwogICAgIGJvb2wgaGFzQWN0aW9uSGFuZGxlcihNZWRp
YVNlc3Npb25BY3Rpb24pIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxNZWRpYVNl
c3Npb25BY3Rpb25IYW5kbGVyPiBoYW5kbGVyRm9yQWN0aW9uKE1lZGlhU2Vzc2lvbkFjdGlvbikg
Y29uc3Q7CisgICAgYm9vbCBoYXNBY3RpdmVBY3Rpb25IYW5kbGVycygpIGNvbnN0IHsgcmV0dXJu
ICFtX2FjdGlvbkhhbmRsZXJzLmlzRW1wdHkoKTsgfQogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0
IE1lZGlhU2Vzc2lvbihOYXZpZ2F0b3ImKTsKIAorICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkg
Y29uc3QgeyByZXR1cm4gKm1fbG9nZ2VyLmdldCgpOyB9CisgICAgY29uc3Qgdm9pZCogbG9nSWRl
bnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQorCiAgICAgV2Vha1B0
cjxOYXZpZ2F0b3I+IG1fbmF2aWdhdG9yOwogICAgIFJlZlB0cjxNZWRpYU1ldGFkYXRhPiBtX21l
dGFkYXRhOwogICAgIE1lZGlhU2Vzc2lvblBsYXliYWNrU3RhdGUgbV9wbGF5YmFja1N0YXRlIHsg
TWVkaWFTZXNzaW9uUGxheWJhY2tTdGF0ZTo6Tm9uZSB9OwpAQCAtNzEsNiArODAsMjAgQEAgcHJp
dmF0ZToKICAgICBPcHRpb25hbDxkb3VibGU+IG1fbGFzdFJlcG9ydGVkUG9zaXRpb247CiAgICAg
TW9ub3RvbmljVGltZSBtX3RpbWVBdExhc3RQb3NpdGlvblVwZGF0ZTsKICAgICBIYXNoTWFwPE1l
ZGlhU2Vzc2lvbkFjdGlvbiwgUmVmUHRyPE1lZGlhU2Vzc2lvbkFjdGlvbkhhbmRsZXI+LCBXVEY6
OkludEhhc2g8TWVkaWFTZXNzaW9uQWN0aW9uPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxN
ZWRpYVNlc3Npb25BY3Rpb24+PiBtX2FjdGlvbkhhbmRsZXJzOworICAgIFJlZlB0cjxjb25zdCBM
b2dnZXI+IG1fbG9nZ2VyOworICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllcjsKK307CisK
K30KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IExvZ0FyZ3VtZW50PFdl
YkNvcmU6Ok1lZGlhU2Vzc2lvblBsYXliYWNrU3RhdGU+IHsKKyAgICBzdGF0aWMgU3RyaW5nIHRv
U3RyaW5nKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvblBsYXliYWNrU3RhdGUgc3RhdGUpIHsgcmV0dXJu
IGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKHN0YXRlKTsgfQorfTsKKwordGVtcGxhdGU8PiBz
dHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6TWVkaWFTZXNzaW9uQWN0aW9uPiB7CisgICAgc3Rh
dGljIFN0cmluZyB0b1N0cmluZyhXZWJDb3JlOjpNZWRpYVNlc3Npb25BY3Rpb24gYWN0aW9uKSB7
IHJldHVybiBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhhY3Rpb24pOyB9CiB9OwogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvTWVkaWFSZW1vdGVTUEku
aCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9NZWRpYVJlbW90ZVNQSS5oCmluZGV4
IDY1MTVjMGQ3NmYwNWRhMDA2MTgwYTJhNTc1MTNlZjJlNjQ1YzgxZTQuLjBmYjdiYjRmNzAwMjc4
NTc0YjM2NGRkYjUyNTAwMDBiODU0ZTdlODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvc3BpL21hYy9NZWRpYVJlbW90ZVNQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvc3BpL21hYy9NZWRpYVJlbW90ZVNQSS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTkyLDYgKzkyLDggQEAgZW51bSB7CiB0eXBlZGVm
IHVpbnQzMl90IE1STm93UGxheWluZ0NsaWVudFZpc2liaWxpdHk7CiAKIHR5cGVkZWYgdWludDMy
X3QgTVJNZWRpYVJlbW90ZUVycm9yOwordHlwZWRlZiB1aW50MzJfdCBNUlNlbmRDb21tYW5kQXBw
T3B0aW9uczsKK3R5cGVkZWYgdWludDMyX3QgTVJTZW5kQ29tbWFuZEVycm9yOwogdHlwZWRlZiBz
dHJ1Y3QgX01ST3JpZ2luICpNUk9yaWdpblJlZjsKIHR5cGVkZWYgc3RydWN0IF9NUk1lZGlhUmVt
b3RlQ29tbWFuZEluZm8gKk1STWVkaWFSZW1vdGVDb21tYW5kSW5mb1JlZjsKIHR5cGVkZWYgdm9p
ZCAqTVJOb3dQbGF5aW5nQ2xpZW50UmVmOwpAQCAtMTAzLDggKzEwNSwxMCBAQCBXVEZfRVhURVJO
X0NfQkVHSU4KIAogdm9pZCogTVJNZWRpYVJlbW90ZUFkZEFzeW5jQ29tbWFuZEhhbmRsZXJCbG9j
ayhNUk1lZGlhUmVtb3RlQXN5bmNDb21tYW5kSGFuZGxlckJsb2NrKTsKIHZvaWQgTVJNZWRpYVJl
bW90ZVJlbW92ZUNvbW1hbmRIYW5kbGVyQmxvY2sodm9pZCAqb2JzZXJ2ZXIpOwotdm9pZCBNUk1l
ZGlhUmVtb3RlU2V0U3VwcG9ydGVkQ29tbWFuZHMoQ0ZBcnJheVJlZiBjb21tYW5kcywgTVJPcmln
aW5SZWYsIGRpc3BhdGNoX3F1ZXVlX3QgcmVwbHlRLCB2b2lkKF5jb21wbGV0aW9uKShNUk1lZGlh
UmVtb3RlRXJyb3IgZXJyKSk7Cit2b2lkIE1STWVkaWFSZW1vdGVTZXRTdXBwb3J0ZWRDb21tYW5k
cyhDRkFycmF5UmVmLCBNUk9yaWdpblJlZiwgZGlzcGF0Y2hfcXVldWVfdCwgdm9pZCheY29tcGxl
dGlvbikoTVJNZWRpYVJlbW90ZUVycm9yKSk7Cit2b2lkIE1STWVkaWFSZW1vdGVHZXRTdXBwb3J0
ZWRDb21tYW5kc0Zvck9yaWdpbihNUk9yaWdpblJlZiwgZGlzcGF0Y2hfcXVldWVfdCwgdm9pZChe
Y29tcGxldGlvbikoQ0ZBcnJheVJlZikpOwogdm9pZCBNUk1lZGlhUmVtb3RlU2V0Tm93UGxheWlu
Z1Zpc2liaWxpdHkoTVJPcmlnaW5SZWYsIE1STm93UGxheWluZ0NsaWVudFZpc2liaWxpdHkpOwor
Qm9vbGVhbiBNUk1lZGlhUmVtb3RlU2VuZENvbW1hbmRUb0FwcChNUk1lZGlhUmVtb3RlQ29tbWFu
ZCwgQ0ZEaWN0aW9uYXJ5UmVmLCBNUk9yaWdpblJlZiwgQ0ZTdHJpbmdSZWYsIE1SU2VuZENvbW1h
bmRBcHBPcHRpb25zLCBkaXNwYXRjaF9xdWV1ZV90LCB2b2lkKF5jb21wbGV0aW9uKShNUlNlbmRD
b21tYW5kRXJyb3IsIENGQXJyYXlSZWYpKTsKIAogI3ByYWdtYSBtYXJrIC0gTVJPcmlnaW4KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGZhNmMyOWY0YjRiYWZmNDFiNzA4ZjIyMGI3NjBmYzkyZWU0MmQwYTEuLmJkM2JjMTYwZDhi
YWY0N2I0MTYyMjg4MDc3NjU2MDJiNWQyYjQ0OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzOSw2ICsxMzksMTAgQEAKIAkJ
MDc3QUYxNDMxOEY0QjFCQjAwMDFFRDYxIC8qIFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVNYWMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3N0FGMTQx
MThGNEIxQkIwMDAxRUQ2MSAvKiBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDc3QjY0MTMxQjk0
RjEyRTAwM0U5QUQ1IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzdCNjQxMTFCOTRGMTJFMDAz
RTlBRDUgLyogTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwNzdCNjQxNzFCOTVGNzAzMDAzRTlB
RDUgLyogTWVkaWFQbGF5YmFja1RhcmdldE1vY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3N0I2NDE1MUI5NUY3MDMwMDNFOUFENSAvKiBNZWRpYVBs
YXliYWNrVGFyZ2V0TW9jay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTA3ODI4OTQ4MjVDMjNGRTUwMEE3QkEwMyAvKiBNZWRpYU1ldGFkYXRhLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRERERUEyRDI1
MzhDRTA0MDBBMTMwMEMgLyogTWVkaWFNZXRhZGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTA3ODI4OTRBMjVDMzZGQ0YwMEE3QkEwMyAvKiBN
ZWRpYVNlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENERERFQTIzMjUzOENEODAwMEExMzAwQyAvKiBNZWRpYVNlc3Npb24uaCAqLzsgfTsKKwkJ
MDc4Mjg5NEIyNUMzNkZFRDAwQTdCQTAzIC8qIE1lZGlhSW1hZ2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERERFQTMyMjUzOENFMzUwMEExMzAwQyAv
KiBNZWRpYUltYWdlLmggKi87IH07CisJCTA3ODI4OTRDMjVDMzcwMEIwMEE3QkEwMyAvKiBNZWRp
YU1ldGFkYXRhSW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0REREVBMzAyNTM4Q0UxRTAwQTEzMDBDIC8qIE1lZGlhTWV0YWRhdGFJbml0LmggKi87
IH07CiAJCTA3ODMyMjg1MTgwMTNFRDgwMDk5OUUwQyAvKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzgzMjI4
MzE4MDEzRUQ4MDA5OTlFMEMgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oICovOyB9OwogCQkw
Nzg0NjM0MzE0NUIxNTFBMDBBNThERjEgLyogSlNUcmFja0V2ZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzg0NjM0MTE0NUIxNTFBMDBBNThERjEg
LyogSlNUcmFja0V2ZW50LmggKi87IH07CiAJCTA3ODQ2Mzg1MTQ1QjFCOEUwMEE1OERGMSAvKiBK
U1RyYWNrQ3VzdG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwNzg0NjM4NDE0NUIxQjhFMDBBNThERjEgLyogSlNUcmFja0N1c3RvbS5oICovOyB9OwpA
QCAtMzM3MDIsMTAgKzMzNzA2LDEzIEBACiAJCQkJRTQ0NjEzQUQwQ0Q2MzMxMDAwRkFEQTc1IC8q
IE1lZGlhRXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTRFMTk1OTIyMEEzOURBQkEwMDIyMEZF
NSAvKiBNZWRpYUZlYXR1cmVOYW1lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdBNkQxRUMxNDkx
MTM3NzAwMDUxRDBDIC8qIE1lZGlhRnJhZ21lbnRVUklQYXJzZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCTA3ODI4OTRCMjVDMzZGRUQwMEE3QkEwMyAvKiBNZWRpYUltYWdlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlDREY0QjcxQTFFMDFEM0QwMDBFMjM1QTIgLyogTWVkaWFLZXlTZXNzaW9uVHlwZS5p
ZGwgaW4gSGVhZGVycyAqLywKIAkJCQlDREY0QjcyODFFMDNDNTczMDBFMjM1QTIgLyogTWVkaWFL
ZXlzUmVxdWlyZW1lbnQuaWRsIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RGNEI3MTgxRTAxQ0I5MTAw
RTIzNUEyIC8qIE1lZGlhS2V5c1Jlc3RyaWN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThF
QTgwMEUwQTE5NTE2RTAwQThFRjVGIC8qIE1lZGlhTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MDc4Mjg5NDgyNUMyM0ZFNTAwQTdCQTAzIC8qIE1lZGlhTWV0YWRhdGEuaCBpbiBIZWFkZXJzICov
LAorCQkJCTA3ODI4OTRDMjVDMzcwMEIwMEE3QkEwMyAvKiBNZWRpYU1ldGFkYXRhSW5pdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNUVCQjg5MzExQzc3NzdGRjAwQzY1RDQxIC8qIE1lZGlhUGF5bG9h
ZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdFM0RGRDExQTlFNzg2NTAwNzY0Q0E4IC8qIE1lZGlh
UGxheWJhY2tUYXJnZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OTIxNjU1MUFBNTYwQUEwMEEz
QzA0OSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTMz
NzQ2LDYgKzMzNzUzLDcgQEAKIAkJCQkxQjEyNEQ4RDFEMzgwQjcwMDBFQ0RGQjAgLyogTWVkaWFT
YW1wbGVBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREJFQUVBRDE5RDkyQjZDMDBCRUJB
ODggLyogTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJCUEx
N0QyNzVFMUVBQzU3OTgwMEJGMDFFNyAvKiBNZWRpYVNlbGVjdGlvbk9wdGlvbi5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMDc4Mjg5NEEyNUMzNkZDRjAwQTdCQTAzIC8qIE1lZGlhU2Vzc2lvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDE2RUNBRTUyNUI1OENDNDAwQjM0REE1IC8qIE1lZGlhU2Vzc2lv
bkdyb3VwSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RBOTU5M0YyNDEyQkFFMDAw
OTEwRUVGIC8qIE1lZGlhU2Vzc2lvbkhlbHBlcklPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE0
NDYwQTIyNDEyOTk0NTAwODE0QkU3IC8qIE1lZGlhU2Vzc2lvbklkZW50aWZpZXIuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggYTZh
NTRhNjExNDU1ZTRiZmE5OWU4NmY2MDNjNTI5MGRmNzAwZDEwOS4uMTUyNjY5MjM3ZDNlYzA0ZWU3
NTg0ZWRiMTk1MzA0NWVkOTZhZmQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNzUwNSw2ICs3NTA1LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpk
aWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW8K
ICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsIGNvbW1hbmQpOwogCiAgICAgVXNlckdlc3R1
cmVJbmRpY2F0b3IgcmVtb3RlQ29udHJvbFVzZXJHZXN0dXJlKFByb2Nlc3NpbmdVc2VyR2VzdHVy
ZSwgJmRvY3VtZW50KCkpOworICAgIGRvdWJsZSBvZmZzZXQgPSAxMDsKICAgICBzd2l0Y2ggKGNv
bW1hbmQpIHsKICAgICBjYXNlIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5Q29tbWFuZDoKICAg
ICAgICAgcGxheSgpOwpAQCAtNzUyNiw2ICs3NTI3LDE2IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6ZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpS
ZW1vCiAgICAgY2FzZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW5kU2Vla2luZ0ZvcndhcmRDb21t
YW5kOgogICAgICAgICBlbmRTY2FubmluZygpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpTa2lwRm9yd2FyZENvbW1hbmQ6CisgICAgICAgIGlmIChhcmd1
bWVudCkKKyAgICAgICAgICAgIG9mZnNldCA9IGFyZ3VtZW50LT5hc0RvdWJsZTsKKyAgICAgICAg
aGFuZGxlU2Vla1RvUGxheWJhY2tQb3NpdGlvbihvZmZzZXQpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTa2lwQmFja3dhcmRDb21tYW5kOgorICAgICAg
ICBpZiAoYXJndW1lbnQpCisgICAgICAgICAgICBvZmZzZXQgPSBhcmd1bWVudC0+YXNEb3VibGU7
CisgICAgICAgIGhhbmRsZVNlZWtUb1BsYXliYWNrUG9zaXRpb24oMCAtIG9mZnNldCk7CisgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgUGxhdGZvcm1NZWRpYVNlc3Npb246OlNlZWtUb1BsYXliYWNr
UG9zaXRpb25Db21tYW5kOgogICAgICAgICBBU1NFUlQoYXJndW1lbnQpOwogICAgICAgICBpZiAo
YXJndW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNl
c3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcApp
bmRleCA1OGQ0MmVjZTQxMjZkOWM2YjM0MTg4MGMwZGE3MDMzYTQ5MGNlMDVjLi5kMWMwMzczODhl
MWM3NDNhODdiMDhjOTI5MGJkMzkzOGVhMzg2NzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTQsNiArNTQsMTIgQEAKICNpbmNsdWRlICJTb3VyY2VC
dWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKKyNpZiBFTkFC
TEUoTUVESUFfU0VTU0lPTikKKyNpbmNsdWRlICJNZWRpYU1ldGFkYXRhLmgiCisjaW5jbHVkZSAi
TWVkaWFTZXNzaW9uLmgiCisjaW5jbHVkZSAiTmF2aWdhdG9yTWVkaWFTZXNzaW9uLmgiCisjZW5k
aWYKKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgi
CiAjaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCkBAIC0xMDIxLDYgKzEwMjcs
NzAgQEAgYm9vbCBNZWRpYUVsZW1lbnRTZXNzaW9uOjphbGxvd3NQbGF5YmFja0NvbnRyb2xzRm9y
QXV0b3BsYXlpbmdBdWRpbygpIGNvbnN0CiAgICAgcmV0dXJuIHBhZ2UgJiYgcGFnZS0+YWxsb3dz
UGxheWJhY2tDb250cm9sc0ZvckF1dG9wbGF5aW5nQXVkaW8oKTsKIH0KIAorI2lmIEVOQUJMRShN
RURJQV9TRVNTSU9OKQordm9pZCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpkaWRSZWNlaXZlUmVtb3Rl
Q29udHJvbENvbW1hbmQoUmVtb3RlQ29udHJvbENvbW1hbmRUeXBlIGNvbW1hbmRUeXBlLCBjb25z
dCBSZW1vdGVDb21tYW5kQXJndW1lbnQqIGFyZ3VtZW50KQoreworICAgIGF1dG8qIHdpbmRvdyA9
IG1fZWxlbWVudC5kb2N1bWVudCgpLmRvbVdpbmRvdygpOworICAgIGF1dG8qIHNlc3Npb24gPSB3
aW5kb3cgPyAmTmF2aWdhdG9yTWVkaWFTZXNzaW9uOjptZWRpYVNlc3Npb24od2luZG93LT5uYXZp
Z2F0b3IoKSkgOiBudWxscHRyOworICAgIGlmICghc2Vzc2lvbiB8fCAhc2Vzc2lvbi0+aGFzQWN0
aXZlQWN0aW9uSGFuZGxlcnMoKSkgeworICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6ZGlk
UmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKGNvbW1hbmRUeXBlLCBhcmd1bWVudCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBNZWRpYVNlc3Npb25BY3Rpb25EZXRhaWxzIGFjdGlv
bkRldGFpbHM7CisgICAgc3dpdGNoIChjb21tYW5kVHlwZSkgeworICAgIGNhc2UgTm9Db21tYW5k
OgorICAgICAgICByZXR1cm47CisgICAgY2FzZSBQbGF5Q29tbWFuZDoKKyAgICAgICAgYWN0aW9u
RGV0YWlscy5hY3Rpb24gPSBNZWRpYVNlc3Npb25BY3Rpb246OlBsYXk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgUGF1c2VDb21tYW5kOgorICAgICAgICBhY3Rpb25EZXRhaWxzLmFjdGlvbiA9
IE1lZGlhU2Vzc2lvbkFjdGlvbjo6UGF1c2U7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3Rv
cENvbW1hbmQ6CisgICAgICAgIGFjdGlvbkRldGFpbHMuYWN0aW9uID0gTWVkaWFTZXNzaW9uQWN0
aW9uOjpTdG9wOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFRvZ2dsZVBsYXlQYXVzZUNvbW1h
bmQ6CisgICAgICAgIGFjdGlvbkRldGFpbHMuYWN0aW9uID0gbV9lbGVtZW50LnBhdXNlZCgpID8g
TWVkaWFTZXNzaW9uQWN0aW9uOjpQbGF5IDogTWVkaWFTZXNzaW9uQWN0aW9uOjpQYXVzZTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBTZWVrVG9QbGF5YmFja1Bvc2l0aW9uQ29tbWFuZDoKKyAg
ICAgICAgQVNTRVJUKGFyZ3VtZW50KTsKKyAgICAgICAgaWYgKCFhcmd1bWVudCkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgYWN0aW9uRGV0YWlscy5hY3Rpb24gPSBNZWRpYVNlc3Npb25B
Y3Rpb246OlNlZWt0bzsKKyAgICAgICAgYWN0aW9uRGV0YWlscy5zZWVrVGltZSA9IGFyZ3VtZW50
LT5hc0RvdWJsZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTa2lwRm9yd2FyZENvbW1hbmQ6
CisgICAgICAgIGlmIChhcmd1bWVudCkKKyAgICAgICAgICAgIGFjdGlvbkRldGFpbHMuc2Vla09m
ZnNldCA9IGFyZ3VtZW50LT5hc0RvdWJsZTsKKyAgICAgICAgYWN0aW9uRGV0YWlscy5hY3Rpb24g
PSBNZWRpYVNlc3Npb25BY3Rpb246OlNlZWtmb3J3YXJkOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFNraXBCYWNrd2FyZENvbW1hbmQ6CisgICAgICAgIGlmIChhcmd1bWVudCkKKyAgICAgICAg
ICAgIGFjdGlvbkRldGFpbHMuc2Vla09mZnNldCA9IGFyZ3VtZW50LT5hc0RvdWJsZTsKKyAgICAg
ICAgYWN0aW9uRGV0YWlscy5hY3Rpb24gPSBNZWRpYVNlc3Npb25BY3Rpb246OlNlZWtiYWNrd2Fy
ZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOZXh0VHJhY2tDb21tYW5kOgorICAgICAgICBh
Y3Rpb25EZXRhaWxzLmFjdGlvbiA9IE1lZGlhU2Vzc2lvbkFjdGlvbjo6TmV4dHRyYWNrOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFByZXZpb3VzVHJhY2tDb21tYW5kOgorICAgICAgICBhY3Rp
b25EZXRhaWxzLmFjdGlvbiA9IE1lZGlhU2Vzc2lvbkFjdGlvbjo6UHJldmlvdXN0cmFjazsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBCZWdpblNlZWtpbmdCYWNrd2FyZENvbW1hbmQ6CisgICAg
Y2FzZSBFbmRTZWVraW5nQmFja3dhcmRDb21tYW5kOgorICAgIGNhc2UgQmVnaW5TZWVraW5nRm9y
d2FyZENvbW1hbmQ6CisgICAgY2FzZSBFbmRTZWVraW5nRm9yd2FyZENvbW1hbmQ6CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgCisgICAg
aWYgKGF1dG8gaGFuZGxlciA9IHNlc3Npb24tPmhhbmRsZXJGb3JBY3Rpb24oYWN0aW9uRGV0YWls
cy5hY3Rpb24pKQorICAgICAgICBoYW5kbGVyLT5oYW5kbGVFdmVudChhY3Rpb25EZXRhaWxzKTsK
KyAgICBlbHNlCisgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgIklnbm9yaW5nIGNv
bW1hbmQsIG5vIGFjdGlvbiBoYW5kbGVyIHJlZ2lzdGVyZWQgZm9yICIsIGFjdGlvbkRldGFpbHMu
YWN0aW9uKTsKK30KKyNlbmRpZgorCiBPcHRpb25hbDxOb3dQbGF5aW5nSW5mbz4gTWVkaWFFbGVt
ZW50U2Vzc2lvbjo6bm93UGxheWluZ0luZm8oKSBjb25zdAogewogICAgIGF1dG8qIHBhZ2UgPSBt
X2VsZW1lbnQuZG9jdW1lbnQoKS5wYWdlKCk7CkBAIC0xMDMyLDcgKzExMDIsMTQgQEAgT3B0aW9u
YWw8Tm93UGxheWluZ0luZm8+IE1lZGlhRWxlbWVudFNlc3Npb246Om5vd1BsYXlpbmdJbmZvKCkg
Y29uc3QKICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUoY3VycmVudFRpbWUpIHx8ICFzdXBwb3J0c1Nl
ZWtpbmcpCiAgICAgICAgIGN1cnJlbnRUaW1lID0gTWVkaWFQbGF5ZXI6OmludmFsaWRUaW1lKCk7
CiAKLSAgICByZXR1cm4gTm93UGxheWluZ0luZm8geyBtX2VsZW1lbnQubWVkaWFTZXNzaW9uVGl0
bGUoKSwgbV9lbGVtZW50LnNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcigpLCBkdXJhdGlvbiwg
Y3VycmVudFRpbWUsIHN1cHBvcnRzU2Vla2luZywgbV9lbGVtZW50Lm1lZGlhU2Vzc2lvblVuaXF1
ZUlkZW50aWZpZXIoKSwgaXNQbGF5aW5nLCBhbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmls
aXR5IH07CisjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCisgICAgYXV0byogd2luZG93ID0gbV9l
bGVtZW50LmRvY3VtZW50KCkuZG9tV2luZG93KCk7CisgICAgYXV0byogc2Vzc2lvbk1ldGFkYXRh
ID0gd2luZG93ID8gTmF2aWdhdG9yTWVkaWFTZXNzaW9uOjptZWRpYVNlc3Npb24od2luZG93LT5u
YXZpZ2F0b3IoKSkubWV0YWRhdGEoKSA6IG51bGxwdHI7CisgICAgaWYgKHNlc3Npb25NZXRhZGF0
YSkKKyAgICAgICAgcmV0dXJuIE5vd1BsYXlpbmdJbmZvIHsgc2Vzc2lvbk1ldGFkYXRhLT50aXRs
ZSgpLCBzZXNzaW9uTWV0YWRhdGEtPmFydGlzdCgpLCBzZXNzaW9uTWV0YWRhdGEtPmFsYnVtKCks
IG1fZWxlbWVudC5zb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIoKSwgZHVyYXRpb24sIGN1cnJl
bnRUaW1lLCBzdXBwb3J0c1NlZWtpbmcsIG1fZWxlbWVudC5tZWRpYVNlc3Npb25VbmlxdWVJZGVu
dGlmaWVyKCksIGlzUGxheWluZywgYWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSB9
OworI2VuZGlmCisKKyAgICByZXR1cm4gTm93UGxheWluZ0luZm8geyBtX2VsZW1lbnQubWVkaWFT
ZXNzaW9uVGl0bGUoKSwgZW1wdHlTdHJpbmcoKSwgZW1wdHlTdHJpbmcoKSwgbV9lbGVtZW50LnNv
dXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcigpLCBkdXJhdGlvbiwgY3VycmVudFRpbWUsIHN1cHBv
cnRzU2Vla2luZywgbV9lbGVtZW50Lm1lZGlhU2Vzc2lvblVuaXF1ZUlkZW50aWZpZXIoKSwgaXNQ
bGF5aW5nLCBhbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5IH07CiB9CiAKIHZvaWQg
TWVkaWFFbGVtZW50U2Vzc2lvbjo6dXBkYXRlTWVkaWFVc2FnZUlmQ2hhbmdlZCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5oCmluZGV4IDFhYjQ2MmY0NDYxYTQ0ZmNj
ZWNlZDlmYmQxMjNiNmU3NTJiNzc0MjMuLmQ3MWU0ZGJiNGYwM2M0MzZlZjM0ZWM5NGNlZTQ3MDJh
ZWEyYTAxYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vz
c2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5oCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMTc0LDYgKzE3NCwxMCBAQCBwdWJsaWM6CiAgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1l
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gIk1lZGlhRWxlbWVudFNlc3Npb24iOyB9CiAjZW5kaWYK
IAorI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQorICAgIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNv
bnRyb2xDb21tYW5kKFJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgY29uc3QgUmVtb3RlQ29tbWFu
ZEFyZ3VtZW50KiA9IG51bGxwdHIpIGZpbmFsOworI2VuZGlmCisKIHByaXZhdGU6CiAKICNpZiBF
TkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50
LmgKaW5kZXggNjcwMWEyZGUwNzQwMjg0MzVhNGJmNzM2YmZiNmZmMjlhMDQ4ZmRiNS4uMWFkNDNm
ZTUzNmFkM2NhY2JkMmM0ZTdlMDRiMTUwMjY3ZTllOGIwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9t
ZUNsaWVudC5oCkBAIC0xMDEsNyArMTAxLDYgQEAgY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKIGNs
YXNzIEhUTUxWaWRlb0VsZW1lbnQ7CiBjbGFzcyBIaXRUZXN0UmVzdWx0OwogY2xhc3MgSW50UmVj
dDsKLWNsYXNzIE1lZGlhU2Vzc2lvbk1ldGFkYXRhOwogY2xhc3MgTmF2aWdhdGlvbkFjdGlvbjsK
IGNsYXNzIE5vZGU7CiBjbGFzcyBQYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5jcHAKaW5kZXggYWYzNGQ1MGQzYTVhOGE2NWU1YmM5NWU4
Nzc1MzFhN2FiZjQ0Nzk2Ny4uNWIyYTkxZjJjNWI0ODBmZmY1Y2Q4NDIyOTYzMTIyNTg0ODUxNWNm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3Rl
bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVu
ZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTM3LDQgKzM3LDI1IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDb21tYW5kTGlzdGVu
ZXI+IFJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6Y3JlYXRlKFJlbW90ZUNvbW1hCiAKICNlbmRpZgog
Cit2b2lkIFJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6c2NoZWR1bGVTdXBwb3J0ZWRDb21tYW5kc1Vw
ZGF0ZSgpCit7CisgICAgaWYgKCFtX3VwZGF0ZUNvbW1hbmRzVGFzay5oYXNQZW5kaW5nVGFzaygp
KSB7CisgICAgICAgIG1fdXBkYXRlQ29tbWFuZHNUYXNrLnNjaGVkdWxlVGFzayhbdGhpc10gKCkg
IHsKKyAgICAgICAgICAgIHVwZGF0ZVN1cHBvcnRlZENvbW1hbmRzKCk7CisgICAgICAgIH0pOwor
ICAgIH0KK30KKwordm9pZCBSZW1vdGVDb21tYW5kTGlzdGVuZXI6OmFkZFN1cHBvcnRlZENvbW1h
bmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21tYW5k
KQoreworICAgIG1fcmVnaXN0ZXJlZENvbW1hbmRzLmFkZChjb21tYW5kKTsKKyAgICBzY2hlZHVs
ZVN1cHBvcnRlZENvbW1hbmRzVXBkYXRlKCk7Cit9CisKK3ZvaWQgUmVtb3RlQ29tbWFuZExpc3Rl
bmVyOjpyZW1vdmVTdXBwb3J0ZWRDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVD
b250cm9sQ29tbWFuZFR5cGUgY29tbWFuZCkKK3sKKyAgICBtX3JlZ2lzdGVyZWRDb21tYW5kcy5y
ZW1vdmUoY29tbWFuZCk7CisgICAgc2NoZWR1bGVTdXBwb3J0ZWRDb21tYW5kc1VwZGF0ZSgpOwor
fQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZW1vdGVDb21tYW5k
TGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5l
ci5oCmluZGV4IDJiNDM0YWVmNmU3NWVhMzUwYzg4ODVmMGVlZjcwYzU5NmUwMTFlOTcuLjY3YWNi
YWE4NjRkMTE2YmYwMjMxMWIxNDM0ODgwMzRiYTA2Yzk2YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5oCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5k
ZWYgUmVtb3RlQ29tbWFuZExpc3RlbmVyX2gKICNkZWZpbmUgUmVtb3RlQ29tbWFuZExpc3RlbmVy
X2gKIAorI2luY2x1ZGUgIkRlZmVycmFibGVUYXNrLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1NZWRp
YVNlc3Npb24uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDUsMTIgKzQ2LDIwIEBAIHB1
YmxpYzoKICAgICBSZW1vdGVDb21tYW5kTGlzdGVuZXIoUmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xp
ZW50JiBjbGllbnQpIDogbV9jbGllbnQoY2xpZW50KSB7IH0KICAgICB2aXJ0dWFsIH5SZW1vdGVD
b21tYW5kTGlzdGVuZXIoKSA9IGRlZmF1bHQ7CiAKKyAgICB2b2lkIGFkZFN1cHBvcnRlZENvbW1h
bmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSk7CisgICAg
dm9pZCByZW1vdmVTdXBwb3J0ZWRDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVD
b250cm9sQ29tbWFuZFR5cGUpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTdXBwb3J0ZWRDb21t
YW5kcygpIHsgfQorICAgIHZvaWQgc2NoZWR1bGVTdXBwb3J0ZWRDb21tYW5kc1VwZGF0ZSgpOwog
CiAgICAgUmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50JiBjbGllbnQoKSBjb25zdCB7IHJldHVy
biBtX2NsaWVudDsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgUmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xp
ZW50JiBtX2NsaWVudDsKKworICAgIHVzaW5nIFJlbW90ZUNvbW1hbmRzU2V0ID0gSGFzaFNldDxQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlLCBXVEY6OkludEhh
c2g8UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZT4sIFdURjo6
U3Ryb25nRW51bUhhc2hUcmFpdHM8UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xD
b21tYW5kVHlwZT4+OworICAgIFJlbW90ZUNvbW1hbmRzU2V0IG1fcmVnaXN0ZXJlZENvbW1hbmRz
OworCisgICAgRGVmZXJyYWJsZVRhc2s8VGltZXI+IG1fdXBkYXRlQ29tbWFuZHNUYXNrOwogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWlu
Z0luZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmgK
aW5kZXggNjdlOTFlMjJkZjhmMDBkYjQ0NTgyZTk4MGZiNjIyYThhMDc4OTBlNS4uNzU0ODI3YWE2
MGYyOTUwN2RlMzE3YWJkYzc3MjdmMWExOGY0ZGJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDYgKzMyLDggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBzdHJ1Y3QgTm93UGxheWluZ0luZm8gewogICAgIFN0cmluZyB0aXRsZTsKKyAg
ICBTdHJpbmcgYXJ0aXN0OworICAgIFN0cmluZyBhbGJ1bTsKICAgICBTdHJpbmcgc291cmNlQXBw
bGljYXRpb25JZGVudGlmaWVyOwogICAgIGRvdWJsZSBkdXJhdGlvbiB7IDAgfTsKICAgICBkb3Vi
bGUgY3VycmVudFRpbWUgeyAwIH07CkBAIC01NSw2ICs1NywxNCBAQCB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBpbmxpbmUgT3B0aW9uYWw8Tm93UGxheWluZ0luZm8+IE5vd1BsYXlpbmdJbmZvOjpk
ZWNvZGUoRAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodGl0bGUpKQogICAgICAgICByZXR1cm4g
eyB9OwogCisgICAgU3RyaW5nIGFydGlzdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFydGlz
dCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBTdHJpbmcgYWxidW07CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShhbGJ1bSkpCisgICAgICAgIHJldHVybiB7IH07CisKICAgICBTdHJpbmcg
c291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc291
cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTgzLDcg
KzkzLDcgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIE9wdGlvbmFsPE5vd1BsYXlp
bmdJbmZvPiBOb3dQbGF5aW5nSW5mbzo6ZGVjb2RlKEQKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHkpKQogICAgICAgICByZXR1cm4geyB9
OwogCi0gICAgcmV0dXJuIE5vd1BsYXlpbmdJbmZvIHsgV1RGTW92ZSh0aXRsZSksIFdURk1vdmUo
c291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKSwgZHVyYXRpb24sIGN1cnJlbnRUaW1lLCBzdXBw
b3J0c1NlZWtpbmcsIHVuaXF1ZUlkZW50aWZpZXIsIGlzUGxheWluZywgYWxsb3dzTm93UGxheWlu
Z0NvbnRyb2xzVmlzaWJpbGl0eSB9OworICAgIHJldHVybiBOb3dQbGF5aW5nSW5mbyB7IFdURk1v
dmUodGl0bGUpLCBXVEZNb3ZlKGFydGlzdCksIFdURk1vdmUoYWxidW0pLCBXVEZNb3ZlKHNvdXJj
ZUFwcGxpY2F0aW9uSWRlbnRpZmllciksIGR1cmF0aW9uLCBjdXJyZW50VGltZSwgc3VwcG9ydHNT
ZWVraW5nLCB1bmlxdWVJZGVudGlmaWVyLCBpc1BsYXlpbmcsIGFsbG93c05vd1BsYXlpbmdDb250
cm9sc1Zpc2liaWxpdHkgfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3Bw
CmluZGV4IDkyNjlhZDM5M2U2MjA1OTFjODBiNDIxOGY1OTg0NDU5ZmVmOWZiYTMuLjQzN2M2ZDBh
NTE2NjQ1OTBhNDY5YmFkMWJiNTgyMmMxOTgyZTE5NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05Myw2
ICs5MywxMCBAQCBTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoUGxhdGZvcm1NZWRp
YVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZQogICAgICAgICBNQUtFX1NUQVRJQ19T
VFJJTkdfSU1QTCgiQmVnaW5TZWVraW5nRm9yd2FyZENvbW1hbmQiKSwKICAgICAgICAgTUFLRV9T
VEFUSUNfU1RSSU5HX0lNUEwoIkVuZFNlZWtpbmdGb3J3YXJkQ29tbWFuZCIpLAogICAgICAgICBN
QUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiU2Vla1RvUGxheWJhY2tQb3NpdGlvbkNvbW1hbmQiKSwK
KyAgICAgICAgTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoIlNraXBGb3J3YXJkQ29tbWFuZCIpLAor
ICAgICAgICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiU2tpcEJhY2t3YXJkQ29tbWFuZCIpLAor
ICAgICAgICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiTmV4dFRyYWNrQ29tbWFuZCIpLAorICAg
ICAgICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiUHJldmlvdXNUcmFja0NvbW1hbmQiKSwKICAg
ICB9OwogICAgIHN0YXRpY19hc3NlcnQoIXN0YXRpY19jYXN0PHNpemVfdD4oUGxhdGZvcm1NZWRp
YVNlc3Npb246Ok5vQ29tbWFuZCksICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9Db21tYW5kIGlz
IG5vdCAwIGFzIGV4cGVjdGVkIik7CiAgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXpl
X3Q+KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5Q29tbWFuZCkgPT0gMSwgIlBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpQbGF5Q29tbWFuZCBpcyBub3QgMSBhcyBleHBlY3RlZCIpOwpAQCAtMTA0LDYg
KzEwOCwxMCBAQCBTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoUGxhdGZvcm1NZWRp
YVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZQogICAgIHN0YXRpY19hc3NlcnQoc3Rh
dGljX2Nhc3Q8c2l6ZV90PihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QmVnaW5TZWVraW5nRm9yd2Fy
ZENvbW1hbmQpID09IDcsICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QmVnaW5TZWVraW5nRm9yd2Fy
ZENvbW1hbmQgaXMgbm90IDcgYXMgZXhwZWN0ZWQiKTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0YXRp
Y19jYXN0PHNpemVfdD4oUGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZFNlZWtpbmdGb3J3YXJkQ29t
bWFuZCkgPT0gOCwgIlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRTZWVraW5nRm9yd2FyZENvbW1h
bmQgaXMgbm90IDggYXMgZXhwZWN0ZWQiKTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0
PHNpemVfdD4oUGxhdGZvcm1NZWRpYVNlc3Npb246OlNlZWtUb1BsYXliYWNrUG9zaXRpb25Db21t
YW5kKSA9PSA5LCAiUGxhdGZvcm1NZWRpYVNlc3Npb246OlNlZWtUb1BsYXliYWNrUG9zaXRpb25D
b21tYW5kIGlzIG5vdCA5IGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNf
Y2FzdDxzaXplX3Q+KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTa2lwRm9yd2FyZENvbW1hbmQpID09
IDEwLCAiUGxhdGZvcm1NZWRpYVNlc3Npb246OlNraXBGb3J3YXJkQ29tbWFuZCBpcyBub3QgMTAg
YXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oUGxh
dGZvcm1NZWRpYVNlc3Npb246OlNraXBCYWNrd2FyZENvbW1hbmQpID09IDExLCAiUGxhdGZvcm1N
ZWRpYVNlc3Npb246OlNraXBCYWNrd2FyZENvbW1hbmQgaXMgbm90IDExIGFzIGV4cGVjdGVkIik7
CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpOZXh0VHJhY2tDb21tYW5kKSA9PSAxMiwgIlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOZXh0
VHJhY2tDb21tYW5kIGlzIG5vdCAxMiBhcyBleHBlY3RlZCIpOworICAgIHN0YXRpY19hc3NlcnQo
c3RhdGljX2Nhc3Q8c2l6ZV90PihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UHJldmlvdXNUcmFja0Nv
bW1hbmQpID09IDEzLCAiUGxhdGZvcm1NZWRpYVNlc3Npb246OlByZXZpb3VzVHJhY2tDb21tYW5k
IGlzIG5vdCAxMyBhcyBleHBlY3RlZCIpOwogICAgIEFTU0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+
KGNvbW1hbmQpIDwgV1RGX0FSUkFZX0xFTkdUSCh2YWx1ZXMpKTsKICAgICByZXR1cm4gdmFsdWVz
W3N0YXRpY19jYXN0PHNpemVfdD4oY29tbWFuZCldOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmgKaW5kZXggYzk4MTIxM2Q1
ZTkwNzZlNDJlYjkwZGI0ZjNhMTE1NmI1MmY0YjYyNi4uZDk1MmZhOTViM2YyNzM3MGU2MGI0YzY5
MTJlOTUxYTVkNjhkMGRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTMwLDkgKzEzMCwxMyBAQCBwdWJsaWM6
CiAgICAgICAgIEJlZ2luU2Vla2luZ0ZvcndhcmRDb21tYW5kLAogICAgICAgICBFbmRTZWVraW5n
Rm9yd2FyZENvbW1hbmQsCiAgICAgICAgIFNlZWtUb1BsYXliYWNrUG9zaXRpb25Db21tYW5kLAor
ICAgICAgICBTa2lwRm9yd2FyZENvbW1hbmQsCisgICAgICAgIFNraXBCYWNrd2FyZENvbW1hbmQs
CisgICAgICAgIE5leHRUcmFja0NvbW1hbmQsCisgICAgICAgIFByZXZpb3VzVHJhY2tDb21tYW5k
LAogICAgIH07CiAgICAgYm9vbCBjYW5SZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmRzKCkgY29u
c3Q7Ci0gICAgdm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUmVtb3RlQ29udHJv
bENvbW1hbmRUeXBlLCBjb25zdCBSZW1vdGVDb21tYW5kQXJndW1lbnQqIGFyZ3VtZW50ID0gbnVs
bHB0cik7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChS
ZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIGNvbnN0IFJlbW90ZUNvbW1hbmRBcmd1bWVudCogPSBu
dWxscHRyKTsKICAgICBib29sIHN1cHBvcnRzU2Vla2luZygpIGNvbnN0OwogCiAgICAgZW51bSBE
aXNwbGF5VHlwZSA6IHVpbnQ4X3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaAppbmRleCAxZmNiMzM0
MjRmMGI1NWZkMjIwOWI2MzRjZWRkZWU4MzljNGQ3ZWQ2Li4yM2RkOTljNmRlZjJmZjRkYWVmODdh
MDUwOThiNzc1YTgwN2RjYTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE1Miw2ICsx
NTIsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0ludGVycnVwdGVkKCkgY29uc3QgeyByZXR1cm4g
bV9pbnRlcnJ1cHRlZDsgfQogICAgIGJvb2wgaGFzTm9TZXNzaW9uKCkgY29uc3Q7CiAKKyAgICB2
aXJ0dWFsIHZvaWQgYWRkU3VwcG9ydGVkQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVt
b3RlQ29udHJvbENvbW1hbmRUeXBlKSB7IH07CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZVN1cHBv
cnRlZENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlw
ZSkgeyB9OworCiBwcm90ZWN0ZWQ6CiAgICAgZnJpZW5kIGNsYXNzIFBsYXRmb3JtTWVkaWFTZXNz
aW9uOwogICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29h
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5h
Z2VyQ29jb2EuaAppbmRleCA0MWJhMmQ1MGM4YWE2YWFiYTk5NjI3NTk1ZWUwNDJkZTQ2YjcyYTJl
Li5kOWUzN2FhODM3ZDY1OGE5NzJlNmJiNDMyNjZjNmNkZDYwZGZhOTc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29j
b2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Np
b25NYW5hZ2VyQ29jb2EuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIw
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC04NCw2ICs4NCw5IEBAIHByb3RlY3RlZDoKIAogICAgIEdlbmVyaWNU
YXNrUXVldWU8VGltZXI+JiB0YXNrUXVldWUoKSB7IHJldHVybiBtX3Rhc2tRdWV1ZTsgfQogCisg
ICAgdm9pZCBhZGRTdXBwb3J0ZWRDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVD
b250cm9sQ29tbWFuZFR5cGUpIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlU3VwcG9ydGVkQ29tbWFu
ZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlKSBmaW5hbDsK
KwogcHJpdmF0ZToKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBjb25zdCBjaGFyKiBs
b2dDbGFzc05hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiTWVkaWFTZXNzaW9uTWFuYWdl
ckNvY29hIjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29j
b2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCmluZGV4IDA2ZmZmZTcwNDQ2
ZTgxYmMxMWJlZTZlM2U5ZDNhODY2YmY5Mjc3YzcuLmQzNGZjOTBkN2FhOGI2NDA4MDc5YTMxNDg4
YWIwMmY4MGI3ZjI4OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNTMs
NiArMTUzLDkgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnByZXBhcmVUb1NlbmRV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCgpCiB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2Nv
YTo6c2NoZWR1bGVTZXNzaW9uU3RhdHVzVXBkYXRlKCkKIHsKICAgICBtX3Rhc2tRdWV1ZS5lbnF1
ZXVlVGFzayhbdGhpc10gKCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChtX3JlbW90ZUNvbW1hbmRM
aXN0ZW5lcikKKyAgICAgICAgICAgIG1fcmVtb3RlQ29tbWFuZExpc3RlbmVyLT51cGRhdGVTdXBw
b3J0ZWRDb21tYW5kcygpOworCiAgICAgICAgIHVwZGF0ZU5vd1BsYXlpbmdJbmZvKCk7CiAKICAg
ICAgICAgZm9yRWFjaFNlc3Npb24oW10gKGF1dG8mIHNlc3Npb24pIHsKQEAgLTIzMiwxMCArMjM1
LDIzIEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpjbGllbnRDaGFyYWN0ZXJpc3Rp
Y3NDaGFuZ2VkKFBsYXRmb3JtTWVkaWFTZXNzaW9uCiAKIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdl
ckNvY29hOjpzZXNzaW9uQ2FuUHJvZHVjZUF1ZGlvQ2hhbmdlZCgpCiB7CisgICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSKTsKICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Np
b25DYW5Qcm9kdWNlQXVkaW9DaGFuZ2VkKCk7CiAgICAgc2NoZWR1bGVTZXNzaW9uU3RhdHVzVXBk
YXRlKCk7CiB9CiAKK3ZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjphZGRTdXBwb3J0ZWRD
b21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgY29t
bWFuZCkKK3sKKyAgICBpZiAobV9yZW1vdGVDb21tYW5kTGlzdGVuZXIpCisgICAgICAgIG1fcmVt
b3RlQ29tbWFuZExpc3RlbmVyLT5hZGRTdXBwb3J0ZWRDb21tYW5kKGNvbW1hbmQpOworfQorCit2
b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6cmVtb3ZlU3VwcG9ydGVkQ29tbWFuZChQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlIGNvbW1hbmQpCit7Cisg
ICAgaWYgKG1fcmVtb3RlQ29tbWFuZExpc3RlbmVyKQorICAgICAgICBtX3JlbW90ZUNvbW1hbmRM
aXN0ZW5lci0+cmVtb3ZlU3VwcG9ydGVkQ29tbWFuZChjb21tYW5kKTsKK30KKwogdm9pZCBNZWRp
YVNlc3Npb25NYW5hZ2VyQ29jb2E6OmNsZWFyTm93UGxheWluZ0luZm8oKQogewogICAgIGlmIChj
YW5Mb2FkX01lZGlhUmVtb3RlX01STWVkaWFSZW1vdGVTZXROb3dQbGF5aW5nVmlzaWJpbGl0eSgp
KQpAQCAtMjYwLDYgKzI3NiwxMiBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0
Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbgogCiAgICAgYXV0
byBpbmZvID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIDQsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9u
YXJ5VmFsdWVDYWxsQmFja3MpKTsKIAorICAgIGlmICghbm93UGxheWluZ0luZm8uYXJ0aXN0Lmlz
RW1wdHkoKSkKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVk
aWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydGlzdCwgbm93UGxheWluZ0luZm8uYXJ0aXN0LmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCkpOworCisgICAgaWYgKCFub3dQbGF5aW5nSW5mby5hbGJ1bS5pc0Vt
cHR5KCkpCisgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlh
UmVtb3RlTm93UGxheWluZ0luZm9BbGJ1bSwgbm93UGxheWluZ0luZm8uYWxidW0uY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSk7CisKICAgICBpZiAoIW5vd1BsYXlpbmdJbmZvLnRpdGxlLmlzRW1wdHko
KSkKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1v
dGVOb3dQbGF5aW5nSW5mb1RpdGxlLCBub3dQbGF5aW5nSW5mby50aXRsZS5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL01l
ZGlhUmVtb3RlU29mdExpbmsuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9NZWRpYVJl
bW90ZVNvZnRMaW5rLmgKaW5kZXggOGI1Y2QyM2ZiMDJhYTI2NDY2MGVkZjM4MTRlNzdmYjg2MmZk
NTBjOC4uMGFlODNkZDAyMjk5YTJmOTZiMjE3NzQ4MmIzYzc3MmJiNjkwZDA2OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL01lZGlhUmVtb3RlU29mdExpbmsuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTWVkaWFSZW1vdGVTb2Z0TGluay5oCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU4LDYg
KzU4LDE0IEBAIFNPRlRfTElOS19GVU5DVElPTl9NQVlfRkFJTF9GT1JfSEVBREVSKFdlYkNvcmUs
IE1lZGlhUmVtb3RlLCBNUk1lZGlhUmVtb3RlU2V0UGFyCiAjZGVmaW5lIE1STWVkaWFSZW1vdGVT
ZXRQYXJlbnRBcHBsaWNhdGlvbiBzb2Z0TGlua19NZWRpYVJlbW90ZV9NUk1lZGlhUmVtb3RlU2V0
UGFyZW50QXBwbGljYXRpb24KIFNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFdlYkNvcmUs
IE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvVGl0bGUsIENGU3RyaW5n
UmVmKTsKICNkZWZpbmUga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb1RpdGxlIGdldF9NZWRp
YVJlbW90ZV9rTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvVGl0bGUoKQorU09GVF9MSU5LX0NP
TlNUQU5UX0ZPUl9IRUFERVIoV2ViQ29yZSwgTWVkaWFSZW1vdGUsIGtNUk1lZGlhUmVtb3RlTm93
UGxheWluZ0luZm9BcnRpc3QsIENGU3RyaW5nUmVmKTsKKyNkZWZpbmUga01STWVkaWFSZW1vdGVO
b3dQbGF5aW5nSW5mb0FydGlzdCBnZXRfTWVkaWFSZW1vdGVfa01STWVkaWFSZW1vdGVOb3dQbGF5
aW5nSW5mb0FydGlzdCgpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihXZWJDb3JlLCBN
ZWRpYVJlbW90ZSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FsYnVtLCBDRlN0cmluZ1Jl
Zik7CisjZGVmaW5lIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BbGJ1bSBnZXRfTWVkaWFS
ZW1vdGVfa01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FsYnVtKCkKK1NPRlRfTElOS19DT05T
VEFOVF9GT1JfSEVBREVSKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU5vd1Bs
YXlpbmdJbmZvQXJ0d29ya0RhdGEsIENGU3RyaW5nUmVmKTsKKyNkZWZpbmUga01STWVkaWFSZW1v
dGVOb3dQbGF5aW5nSW5mb0FydHdvcmtEYXRhIGdldF9NZWRpYVJlbW90ZV9rTVJNZWRpYVJlbW90
ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya0RhdGEoKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFE
RVIoV2ViQ29yZSwgTWVkaWFSZW1vdGUsIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3
b3JrTUlNRVR5cGUsIENGU3RyaW5nUmVmKTsKKyNkZWZpbmUga01STWVkaWFSZW1vdGVOb3dQbGF5
aW5nSW5mb0FydHdvcmtNSU1FVHlwZSBnZXRfTWVkaWFSZW1vdGVfa01STWVkaWFSZW1vdGVOb3dQ
bGF5aW5nSW5mb0FydHdvcmtNSU1FVHlwZSgpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURF
UihXZWJDb3JlLCBNZWRpYVJlbW90ZSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0R1cmF0
aW9uLCBDRlN0cmluZ1JlZik7CiAjZGVmaW5lIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9E
dXJhdGlvbiBnZXRfTWVkaWFSZW1vdGVfa01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0R1cmF0
aW9uKCkKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFdlYkNvcmUsIE1lZGlhUmVtb3Rl
LCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRWxhcHNlZFRpbWUsIENGU3RyaW5nUmVmKTsK
QEAgLTY4LDYgKzc2LDggQEAgU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoV2ViQ29yZSwg
TWVkaWFSZW1vdGUsIGtNUk1lZGlhUmVtb3RlT3B0aW9uUGxheWJhY2sKICNkZWZpbmUga01STWVk
aWFSZW1vdGVPcHRpb25QbGF5YmFja1Bvc2l0aW9uIGdldF9NZWRpYVJlbW90ZV9rTVJNZWRpYVJl
bW90ZU9wdGlvblBsYXliYWNrUG9zaXRpb24oKQogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFE
RVIoV2ViQ29yZSwgTWVkaWFSZW1vdGUsIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9Vbmlx
dWVJZGVudGlmaWVyLCBDRlN0cmluZ1JlZik7CiAjZGVmaW5lIGtNUk1lZGlhUmVtb3RlTm93UGxh
eWluZ0luZm9VbmlxdWVJZGVudGlmaWVyIGdldF9NZWRpYVJlbW90ZV9rTVJNZWRpYVJlbW90ZU5v
d1BsYXlpbmdJbmZvVW5pcXVlSWRlbnRpZmllcigpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hF
QURFUihXZWJDb3JlLCBNZWRpYVJlbW90ZSwga01STWVkaWFSZW1vdGVPcHRpb25Ta2lwSW50ZXJ2
YWwsIENGU3RyaW5nUmVmKTsKKyNkZWZpbmUga01STWVkaWFSZW1vdGVPcHRpb25Ta2lwSW50ZXJ2
YWwgZ2V0X01lZGlhUmVtb3RlX2tNUk1lZGlhUmVtb3RlT3B0aW9uU2tpcEludGVydmFsKCkKIAog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihX
ZWJDb3JlLCBNZWRpYVJlbW90ZSwgTVJNZWRpYVJlbW90ZUNvcHlQaWNrYWJsZVJvdXRlcywgQ0ZB
cnJheVJlZiwgKCksICgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L01lZGlhUmVtb3RlU29mdExpbmsubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTWVk
aWFSZW1vdGVTb2Z0TGluay5tbQppbmRleCA4NGRhY2I4NTFmOGNmNmMxYmQ2NjdhOTZlN2JjMDlm
NzM5MmY5ZDU0Li43M2U3YjIwZDliZjU1MjcwNDdhYzM4MTE1MjAwNmYzZTg1MjE1ZTMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTWVkaWFSZW1vdGVTb2Z0TGluay5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTWVkaWFSZW1vdGVTb2Z0TGluay5t
bQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNDQsMTEgKzQ0LDE2IEBAIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUs
IE1lZGlhUmVtb3RlLCBNUk1lZGlhUmVtb3RlU2V0Tm93UGxheWluZ0luCiBTT0ZUX0xJTktfRlVO
Q1RJT05fRk9SX1NPVVJDRShXZWJDb3JlLCBNZWRpYVJlbW90ZSwgTVJNZWRpYVJlbW90ZVNldE5v
d1BsYXlpbmdBcHBsaWNhdGlvblBsYXliYWNrU3RhdGVGb3JPcmlnaW4sIHZvaWQsIChNUk9yaWdp
blJlZiBvcmlnaW4sIE1SUGxheWJhY2tTdGF0ZSBwbGF5YmFja1N0YXRlLCBkaXNwYXRjaF9xdWV1
ZV90IHJlcGx5USwgdm9pZCheY29tcGxldGlvbikoTVJNZWRpYVJlbW90ZUVycm9yKSksIChvcmln
aW4sIHBsYXliYWNrU3RhdGUsIHJlcGx5USwgY29tcGxldGlvbikpCiBTT0ZUX0xJTktfRlVOQ1RJ
T05fTUFZX0ZBSUxfRk9SX1NPVVJDRShXZWJDb3JlLCBNZWRpYVJlbW90ZSwgTVJNZWRpYVJlbW90
ZVNldFBhcmVudEFwcGxpY2F0aW9uLCB2b2lkLCAoTVJPcmlnaW5SZWYgb3JpZ2luLCBDRlN0cmlu
Z1JlZiBwYXJlbnRBcHBEaXNwbGF5SUQpLCAob3JpZ2luLCBwYXJlbnRBcHBEaXNwbGF5SUQpKQog
U09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgTWVkaWFSZW1vdGUsIGtNUk1l
ZGlhUmVtb3RlTm93UGxheWluZ0luZm9UaXRsZSwgQ0ZTdHJpbmdSZWYpOworU09GVF9MSU5LX0NP
TlNUQU5UX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgTWVkaWFSZW1vdGUsIGtNUk1lZGlhUmVtb3RlTm93
UGxheWluZ0luZm9BcnRpc3QsIENGU3RyaW5nUmVmKTsKK1NPRlRfTElOS19DT05TVEFOVF9GT1Jf
U09VUkNFKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZv
QWxidW0sIENGU3RyaW5nUmVmKTsKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFdlYkNv
cmUsIE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya0RhdGEs
IENGU3RyaW5nUmVmKTsKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFdlYkNvcmUsIE1l
ZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya01JTUVUeXBlLCBD
RlN0cmluZ1JlZik7CiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShXZWJDb3JlLCBNZWRp
YVJlbW90ZSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0R1cmF0aW9uLCBDRlN0cmluZ1Jl
Zik7CiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShXZWJDb3JlLCBNZWRpYVJlbW90ZSwg
a01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0VsYXBzZWRUaW1lLCBDRlN0cmluZ1JlZik7CiBT
T0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShXZWJDb3JlLCBNZWRpYVJlbW90ZSwga01STWVk
aWFSZW1vdGVOb3dQbGF5aW5nSW5mb1BsYXliYWNrUmF0ZSwgQ0ZTdHJpbmdSZWYpOwogU09GVF9M
SU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgTWVkaWFSZW1vdGUsIGtNUk1lZGlhUmVt
b3RlT3B0aW9uUGxheWJhY2tQb3NpdGlvbiwgQ0ZTdHJpbmdSZWYpOwogU09GVF9MSU5LX0NPTlNU
QU5UX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgTWVkaWFSZW1vdGUsIGtNUk1lZGlhUmVtb3RlTm93UGxh
eWluZ0luZm9VbmlxdWVJZGVudGlmaWVyLCBDRlN0cmluZ1JlZik7CitTT0ZUX0xJTktfQ09OU1RB
TlRfRk9SX1NPVVJDRShXZWJDb3JlLCBNZWRpYVJlbW90ZSwga01STWVkaWFSZW1vdGVPcHRpb25T
a2lwSW50ZXJ2YWwsIENGU3RyaW5nUmVmKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBT
T0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShXZWJDb3JlLCBNZWRpYVJlbW90ZSwgTVJNZWRp
YVJlbW90ZUNvcHlQaWNrYWJsZVJvdXRlcywgQ0ZBcnJheVJlZiwgKCksICgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9SZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9SZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMu
aAppbmRleCA5NGE0MmUxOTE3MWIyZGNiOWZlOWI5MGYxZDU4YzIzYzlmNzhhMjNiLi5iNzFjYWQ4
NjgxODg4NGQ5OTRhZmFlZTgzODI2OWM5NWY3MWRjYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDkgKzM5
LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5SZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMoKTsK
IAogcHJvdGVjdGVkOgotICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVkQ29tbWFuZHMoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZENvbW1hbmRzKCkgZmluYWw7CiAKICAgICB2b2lk
KiBtX2NvbW1hbmRIYW5kbGVyIHsgbnVsbHB0ciB9OworCisgICAgY29uc3QgUmVtb3RlQ29tbWFu
ZHNTZXQmIGRlZmF1bHRDb21tYW5kcygpOworICAgIFJlbW90ZUNvbW1hbmRzU2V0IG1fY3VycmVu
dENvbW1hbmRzOworICAgIGJvb2wgbV9zdXBwb3J0c1NlZWtpbmcgeyBmYWxzZSB9OwogfTsKICAg
ICAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9SZW1vdGVDb21t
YW5kTGlzdGVuZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUmVtb3RlQ29t
bWFuZExpc3RlbmVyTWFjLm1tCmluZGV4IDRlYTgzOTIwNzI3MTg0NDhhODYyMmZmZTJkMzI1Y2Y3
MzcxMjQ2MjguLmZhZjc1M2Y4N2E0NGZmMjBmZWQ4MjkzZDdjMTViMDViM2E4NzAyYzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9SZW1vdGVDb21tYW5kTGlzdGVuZXJN
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1JlbW90ZUNvbW1hbmRMaXN0
ZW5lck1hYy5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzUsNDIgKzM1LDEwMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0
YXRpYyBPcHRpb25hbDxNUk1lZGlhUmVtb3RlQ29tbWFuZD4gbWVkaWFSZW1vdGVDb21tYW5kRm9y
UGxhdGZvcm1Db21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFu
ZFR5cGUgY29tbWFuZCkKK3sKKyAgICBzdGF0aWMgY29uc3QgYXV0byBjb21tYW5kTWFwID0gbWFr
ZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICAgICAgc3RydWN0IE1hcEVudHJ5IHsKKyAgICAgICAg
ICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgcGxhdGZv
cm1Db21tYW5kOworICAgICAgICAgICAgTVJNZWRpYVJlbW90ZUNvbW1hbmQgbWVkaWFSZW1vdGVD
b21tYW5kOworICAgICAgICB9OworICAgICAgICBzdGF0aWMgY29uc3QgTWFwRW50cnkgZW50cmll
c1tdID0geworICAgICAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheUNvbW1hbmQs
IE1STWVkaWFSZW1vdGVDb21tYW5kUGxheSB9LAorICAgICAgICAgICAgeyBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6UGF1c2VDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZFBhdXNlIH0sCisgICAg
ICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTdG9wQ29tbWFuZCwgTVJNZWRpYVJlbW90
ZUNvbW1hbmRTdG9wIH0sCisgICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpUb2dn
bGVQbGF5UGF1c2VDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZFRvZ2dsZVBsYXlQYXVzZSB9
LAorICAgICAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QmVnaW5TZWVraW5nQmFja3dh
cmRDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZEJlZ2luUmV3aW5kIH0sCisgICAgICAgICAg
ICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRTZWVraW5nQmFja3dhcmRDb21tYW5kLCBNUk1l
ZGlhUmVtb3RlQ29tbWFuZEVuZFJld2luZCB9LAorICAgICAgICAgICAgeyBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6QmVnaW5TZWVraW5nRm9yd2FyZENvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5k
QmVnaW5GYXN0Rm9yd2FyZCB9LAorICAgICAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
RW5kU2Vla2luZ0ZvcndhcmRDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZEVuZEZhc3RGb3J3
YXJkIH0sCisgICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTZWVrVG9QbGF5YmFj
a1Bvc2l0aW9uQ29tbWFuZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRTZWVrVG9QbGF5YmFja1Bvc2l0
aW9uIH0sCisgICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTa2lwRm9yd2FyZENv
bW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kU2tpcEZvcndhcmQgfSwKKyAgICAgICAgICAgIHsg
UGxhdGZvcm1NZWRpYVNlc3Npb246OlNraXBCYWNrd2FyZENvbW1hbmQsIE1STWVkaWFSZW1vdGVD
b21tYW5kU2tpcEJhY2t3YXJkIH0sCisgICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpOZXh0VHJhY2tDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZE5leHRUcmFjayB9LAorICAg
ICAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UHJldmlvdXNUcmFja0NvbW1hbmQsIE1S
TWVkaWFSZW1vdGVDb21tYW5kUHJldmlvdXNUcmFjayB9LAorICAgICAgICB9OworCisgICAgICAg
IEhhc2hNYXA8UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwg
TVJNZWRpYVJlbW90ZUNvbW1hbmQsIFdURjo6SW50SGFzaDxQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlPj4gbWFwOworICAgICAg
ICBmb3IgKGF1dG8mIGVudHJ5IDogZW50cmllcykKKyAgICAgICAgICAgIG1hcC5hZGQoZW50cnku
cGxhdGZvcm1Db21tYW5kLCBlbnRyeS5tZWRpYVJlbW90ZUNvbW1hbmQpOworICAgICAgICByZXR1
cm4gbWFwOworICAgIH0oKSk7CisKKyAgICBhdXRvIGl0ID0gY29tbWFuZE1hcC5nZXQoKS5maW5k
KGNvbW1hbmQpOworICAgIGlmIChpdCAhPSBjb21tYW5kTWFwLmdldCgpLmVuZCgpKQorICAgICAg
ICByZXR1cm4geyBpdC0+dmFsdWUgfTsKKworICAgIHJldHVybiB7IH07Cit9CisKIHN0ZDo6dW5p
cXVlX3B0cjxSZW1vdGVDb21tYW5kTGlzdGVuZXI+IFJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6Y3Jl
YXRlKFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCYgY2xpZW50KQogewogICAgIHJldHVybiBt
YWtlVW5pcXVlPFJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYz4oY2xpZW50KTsKIH0KIAorY29uc3Qg
UmVtb3RlQ29tbWFuZExpc3RlbmVyOjpSZW1vdGVDb21tYW5kc1NldCYgUmVtb3RlQ29tbWFuZExp
c3RlbmVyTWFjOjpkZWZhdWx0Q29tbWFuZHMoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxSZW1vdGVDb21tYW5kc1NldD4gY29tbWFuZHMoc3RkOjppbml0aWFsaXplcl9saXN0PFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGU+IHsKKyAgICAgICAgUGxh
dGZvcm1NZWRpYVNlc3Npb246OlBsYXlDb21tYW5kLAorICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6UGF1c2VDb21tYW5kLAorICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6VG9nZ2xl
UGxheVBhdXNlQ29tbWFuZCwKKyAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OkJlZ2luU2Vl
a2luZ0ZvcndhcmRDb21tYW5kLAorICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW5kU2Vl
a2luZ0ZvcndhcmRDb21tYW5kLAorICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QmVnaW5T
ZWVraW5nQmFja3dhcmRDb21tYW5kLAorICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW5k
U2Vla2luZ0JhY2t3YXJkQ29tbWFuZCwKKyAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OlNl
ZWtUb1BsYXliYWNrUG9zaXRpb25Db21tYW5kLAorICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6U2tpcEZvcndhcmRDb21tYW5kLAorICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2tp
cEJhY2t3YXJkQ29tbWFuZCwKKyAgICB9KTsKKworICAgIHJldHVybiBjb21tYW5kczsKK30KKwor
c3RhdGljIGJvb2wgaXNTZWVrQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29u
dHJvbENvbW1hbmRUeXBlIGNvbW1hbmQpCit7CisgICAgcmV0dXJuIGNvbW1hbmQgPT0gUGxhdGZv
cm1NZWRpYVNlc3Npb246OlNlZWtUb1BsYXliYWNrUG9zaXRpb25Db21tYW5kCisgICAgICAgIHx8
IGNvbW1hbmQgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OlNraXBGb3J3YXJkQ29tbWFuZAorICAg
ICAgICB8fCBjb21tYW5kID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTa2lwQmFja3dhcmRDb21t
YW5kCisgICAgICAgIHx8IGNvbW1hbmQgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OkJlZ2luU2Vl
a2luZ0ZvcndhcmRDb21tYW5kCisgICAgICAgIHx8IGNvbW1hbmQgPT0gUGxhdGZvcm1NZWRpYVNl
c3Npb246OkJlZ2luU2Vla2luZ0JhY2t3YXJkQ29tbWFuZDsKK30KKwogdm9pZCBSZW1vdGVDb21t
YW5kTGlzdGVuZXJNYWM6OnVwZGF0ZVN1cHBvcnRlZENvbW1hbmRzKCkKIHsKICAgICBpZiAoIWlz
TWVkaWFSZW1vdGVGcmFtZXdvcmtBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
c3RhdGljIGNvbnN0IE1STWVkaWFSZW1vdGVDb21tYW5kIHN1cHBvcnRlZENvbW1hbmRzW10gPSB7
Ci0gICAgICAgIE1STWVkaWFSZW1vdGVDb21tYW5kUGxheSwKLSAgICAgICAgTVJNZWRpYVJlbW90
ZUNvbW1hbmRQYXVzZSwKLSAgICAgICAgTVJNZWRpYVJlbW90ZUNvbW1hbmRUb2dnbGVQbGF5UGF1
c2UsCi0gICAgICAgIE1STWVkaWFSZW1vdGVDb21tYW5kQmVnaW5GYXN0Rm9yd2FyZCwKLSAgICAg
ICAgTVJNZWRpYVJlbW90ZUNvbW1hbmRFbmRGYXN0Rm9yd2FyZCwKLSAgICAgICAgTVJNZWRpYVJl
bW90ZUNvbW1hbmRCZWdpblJld2luZCwKLSAgICAgICAgTVJNZWRpYVJlbW90ZUNvbW1hbmRFbmRS
ZXdpbmQsCi0gICAgICAgIE1STWVkaWFSZW1vdGVDb21tYW5kU2Vla1RvUGxheWJhY2tQb3NpdGlv
biwKLSAgICB9OworICAgIGF1dG8mIHN1cHBvcnRlZENvbW1hbmRzID0gIW1fcmVnaXN0ZXJlZENv
bW1hbmRzLmlzRW1wdHkoKSA/IG1fcmVnaXN0ZXJlZENvbW1hbmRzIDogZGVmYXVsdENvbW1hbmRz
KCk7CisgICAgaWYgKG1fc3VwcG9ydHNTZWVraW5nID09IGNsaWVudCgpLnN1cHBvcnRzU2Vla2lu
ZygpICYmIG1fY3VycmVudENvbW1hbmRzID09IHN1cHBvcnRlZENvbW1hbmRzKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBhdXRvIGNvbW1hbmRJbmZvQXJyYXkgPSBhZG9wdENGKENGQXJyYXlDcmVh
dGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN1cHBvcnRlZENvbW1hbmRzLnNpemUoKSwg
JmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOworICAgIGZvciAoYXV0byBwbGF0Zm9ybUNvbW1hbmQg
OiBzdXBwb3J0ZWRDb21tYW5kcykgeworICAgICAgICBpZiAoaXNTZWVrQ29tbWFuZChwbGF0Zm9y
bUNvbW1hbmQpICYmICFjbGllbnQoKS5zdXBwb3J0c1NlZWtpbmcoKSkKKyAgICAgICAgICAgIGNv
bnRpbnVlOwogCi0gICAgYXV0byBjb21tYW5kSW5mb0FycmF5ID0gYWRvcHRDRihDRkFycmF5Q3Jl
YXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzaXplb2Yoc3VwcG9ydGVkQ29tbWFuZHMp
IC8gc2l6ZW9mKE1STWVkaWFSZW1vdGVDb21tYW5kKSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykp
OworICAgICAgICBhdXRvIGNvbW1hbmQgPSBtZWRpYVJlbW90ZUNvbW1hbmRGb3JQbGF0Zm9ybUNv
bW1hbmQocGxhdGZvcm1Db21tYW5kKTsKKyAgICAgICAgQVNTRVJUKGNvbW1hbmQpOworICAgICAg
ICBpZiAoIWNvbW1hbmQpCisgICAgICAgICAgICBjb250aW51ZTsKIAotICAgIGZvciAoYXV0byBj
b21tYW5kIDogc3VwcG9ydGVkQ29tbWFuZHMpIHsKICAgICAgICAgYXV0byBjb21tYW5kSW5mbyA9
IGFkb3B0Q0YoTVJNZWRpYVJlbW90ZUNvbW1hbmRJbmZvQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1
bHQpKTsKLSAgICAgICAgTVJNZWRpYVJlbW90ZUNvbW1hbmRJbmZvU2V0Q29tbWFuZChjb21tYW5k
SW5mby5nZXQoKSwgY29tbWFuZCk7CisgICAgICAgIE1STWVkaWFSZW1vdGVDb21tYW5kSW5mb1Nl
dENvbW1hbmQoY29tbWFuZEluZm8uZ2V0KCksIGNvbW1hbmQudmFsdWUoKSk7CiAgICAgICAgIE1S
TWVkaWFSZW1vdGVDb21tYW5kSW5mb1NldEVuYWJsZWQoY29tbWFuZEluZm8uZ2V0KCksIHRydWUp
OwogICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoY29tbWFuZEluZm9BcnJheS5nZXQoKSwgY29t
bWFuZEluZm8uZ2V0KCkpOwogICAgIH0KIAotICAgIGF1dG8gc2Vla0NvbW1hbmRJbmZvID0gYWRv
cHRDRihNUk1lZGlhUmVtb3RlQ29tbWFuZEluZm9DcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCkp
OwotICAgIE1STWVkaWFSZW1vdGVDb21tYW5kSW5mb1NldENvbW1hbmQoc2Vla0NvbW1hbmRJbmZv
LmdldCgpLCBNUk1lZGlhUmVtb3RlQ29tbWFuZFNlZWtUb1BsYXliYWNrUG9zaXRpb24pOwotICAg
IE1STWVkaWFSZW1vdGVDb21tYW5kSW5mb1NldEVuYWJsZWQoc2Vla0NvbW1hbmRJbmZvLmdldCgp
LCBjbGllbnQoKS5zdXBwb3J0c1NlZWtpbmcoKSk7Ci0gICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGNv
bW1hbmRJbmZvQXJyYXkuZ2V0KCksIHNlZWtDb21tYW5kSW5mby5nZXQoKSk7Ci0KICAgICBNUk1l
ZGlhUmVtb3RlU2V0U3VwcG9ydGVkQ29tbWFuZHMoY29tbWFuZEluZm9BcnJheS5nZXQoKSwgTVJN
ZWRpYVJlbW90ZUdldExvY2FsT3JpZ2luKCksIG51bGxwdHIsIG51bGxwdHIpOworICAgIG1fY3Vy
cmVudENvbW1hbmRzID0gc3VwcG9ydGVkQ29tbWFuZHM7CisgICAgbV9zdXBwb3J0c1NlZWtpbmcg
PSBjbGllbnQoKS5zdXBwb3J0c1NlZWtpbmcoKTsKIH0KIAogUmVtb3RlQ29tbWFuZExpc3RlbmVy
TWFjOjpSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMoUmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50
JiBjbGllbnQpCkBAIC03OSw3ICsxMzksNyBAQCBSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWM6OlJl
bW90ZUNvbW1hbmRMaXN0ZW5lck1hYyhSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQmCiAgICAg
aWYgKCFpc01lZGlhUmVtb3RlRnJhbWV3b3JrQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIHVwZGF0ZVN1cHBvcnRlZENvbW1hbmRzKCk7CisgICAgc2NoZWR1bGVTdXBwb3J0ZWRD
b21tYW5kc1VwZGF0ZSgpOwogCiAgICAgYXV0byB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlz
KTsKICAgICBtX2NvbW1hbmRIYW5kbGVyID0gTVJNZWRpYVJlbW90ZUFkZEFzeW5jQ29tbWFuZEhh
bmRsZXJCbG9jayheKE1STWVkaWFSZW1vdGVDb21tYW5kIGNvbW1hbmQsIENGRGljdGlvbmFyeVJl
ZiBvcHRpb25zLCB2b2lkKF5jb21wbGV0aW9uKShDRkFycmF5UmVmKSkgewpAQCAtODgsNiArMTQ4
LDcgQEAgUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjOjpSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMo
UmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50JgogCiAgICAgICAgIFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgcGxhdGZvcm1Db21tYW5kIHsgUGxhdGZvcm1N
ZWRpYVNlc3Npb246Ok5vQ29tbWFuZCB9OwogICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
UmVtb3RlQ29tbWFuZEFyZ3VtZW50IGFyZ3VtZW50IHsgMCB9OworICAgICAgICBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6UmVtb3RlQ29tbWFuZEFyZ3VtZW50KiBhcmd1bWVudFB0ciA9IG51bGxwdHI7
CiAgICAgICAgIE1STWVkaWFSZW1vdGVDb21tYW5kSGFuZGxlclN0YXR1cyBzdGF0dXMgPSBNUk1l
ZGlhUmVtb3RlQ29tbWFuZEhhbmRsZXJTdGF0dXNTdWNjZXNzOwogCiAgICAgICAgIHN3aXRjaCAo
Y29tbWFuZCkgewpAQCAtMTI4LDE2ICsxODksMzcgQEAgUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFj
OjpSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMoUmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50Jgog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBDRk51bWJlckdldFZhbHVlKHBvc2l0aW9uUmVm
LCBrQ0ZOdW1iZXJEb3VibGVUeXBlLCAmYXJndW1lbnQuYXNEb3VibGUpOworICAgICAgICAgICAg
YXJndW1lbnRQdHIgPSAmYXJndW1lbnQ7CiAgICAgICAgICAgICBwbGF0Zm9ybUNvbW1hbmQgPSBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2Vla1RvUGxheWJhY2tQb3NpdGlvbkNvbW1hbmQ7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIE1STWVkaWFSZW1vdGVDb21t
YW5kU2tpcEZvcndhcmQ6CisgICAgICAgIGNhc2UgTVJNZWRpYVJlbW90ZUNvbW1hbmRTa2lwQmFj
a3dhcmQ6CisgICAgICAgICAgICBpZiAoIWNsaWVudC5zdXBwb3J0c1NlZWtpbmcoKSkgeworICAg
ICAgICAgICAgICAgIHN0YXR1cyA9IE1STWVkaWFSZW1vdGVDb21tYW5kSGFuZGxlclN0YXR1c0Nv
bW1hbmRGYWlsZWQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGlmIChhdXRvIHBvc2l0aW9uUmVmID0gc3RhdGljX2Nhc3Q8Q0ZOdW1iZXJSZWY+
KENGRGljdGlvbmFyeUdldFZhbHVlKG9wdGlvbnMsIGtNUk1lZGlhUmVtb3RlT3B0aW9uU2tpcElu
dGVydmFsKSkpIHsKKyAgICAgICAgICAgICAgICBDRk51bWJlckdldFZhbHVlKHBvc2l0aW9uUmVm
LCBrQ0ZOdW1iZXJEb3VibGVUeXBlLCAmYXJndW1lbnQuYXNEb3VibGUpOworICAgICAgICAgICAg
ICAgIGFyZ3VtZW50UHRyID0gJmFyZ3VtZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBwbGF0Zm9ybUNvbW1hbmQgPSAoY29tbWFuZCA9PSBNUk1lZGlhUmVtb3RlQ29tbWFuZFNraXBG
b3J3YXJkKSA/IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTa2lwRm9yd2FyZENvbW1hbmQgOiBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEJhY2t3YXJkQ29tbWFuZDsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIE1STWVkaWFSZW1vdGVDb21tYW5kTmV4dFRyYWNrOgorICAgICAgICAg
ICAgcGxhdGZvcm1Db21tYW5kID0gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5leHRUcmFja0NvbW1h
bmQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNUk1lZGlhUmVtb3RlQ29tbWFu
ZFByZXZpb3VzVHJhY2s6CisgICAgICAgICAgICBwbGF0Zm9ybUNvbW1hbmQgPSBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6UHJldmlvdXNUcmFja0NvbW1hbmQ7CisgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIExPRyhNZWRpYSwgIlJlbW90ZUNvbW1hbmRMaXN0
ZW5lck1hYzo6UmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjIC0gY29tbWFuZCAldSBub3Qgc3VwcG9y
dGVkISIsIGNvbW1hbmQpOwogICAgICAgICAgICAgc3RhdHVzID0gTVJNZWRpYVJlbW90ZUNvbW1h
bmRIYW5kbGVyU3RhdHVzQ29tbWFuZEZhaWxlZDsKICAgICAgICAgfTsKIAogICAgICAgICBpZiAo
d2Vha1RoaXMgJiYgc3RhdHVzICE9IE1STWVkaWFSZW1vdGVDb21tYW5kSGFuZGxlclN0YXR1c0Nv
bW1hbmRGYWlsZWQpCi0gICAgICAgICAgICB3ZWFrVGhpcy0+bV9jbGllbnQuZGlkUmVjZWl2ZVJl
bW90ZUNvbnRyb2xDb21tYW5kKHBsYXRmb3JtQ29tbWFuZCwgJmFyZ3VtZW50KTsKKyAgICAgICAg
ICAgIHdlYWtUaGlzLT5tX2NsaWVudC5kaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQocGxh
dGZvcm1Db21tYW5kLCBhcmd1bWVudFB0cik7CiAKICAgICAgICAgY29tcGxldGlvbigoX19icmlk
Z2UgQ0ZBcnJheVJlZilAW0Aoc3RhdHVzKV0pOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbQppbmRleCA2MmRjYjMwNmE4
OTljYThiYTQyODQ5MmY5Mzc2MTBmNjhhOWZlNDUzLi4wYzc5YmZmZWQ1YmVkYzc3OWEyYzk4MTIz
ZjI4ZTcyMzY2MDU0YzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tQcmVmZXJlbmNlcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tQcmVmZXJlbmNlcy5tbQpAQCAtMTQ3OSw2ICsxNDc5LDE2IEBAIHN0YXRpYyBXZWJD
b3JlOjpFZGl0YWJsZUxpbmtCZWhhdmlvciB0b0VkaXRhYmxlTGlua0JlaGF2aW9yKF9XS0VkaXRh
YmxlTGlua0JlaGF2CiAgICAgX3ByZWZlcmVuY2VzLT5zZXRQaXRjaENvcnJlY3Rpb25BbGdvcml0
aG0ocGl0Y2hDb3JyZWN0aW9uQWxnb3JpdGhtKTsKIH0KIAorLSAoQk9PTClfbWVkaWFTZXNzaW9u
RW5hYmxlZAoreworICAgIHJldHVybiBfcHJlZmVyZW5jZXMtPm1lZGlhU2Vzc2lvbkVuYWJsZWQo
KTsKK30KKworLSAodm9pZClfc2V0TWVkaWFTZXNzaW9uRW5hYmxlZDooQk9PTCltZWRpYVNlc3Np
b25FbmFibGVkCit7CisgICAgX3ByZWZlcmVuY2VzLT5zZXRNZWRpYVNlc3Npb25FbmFibGVkKG1l
ZGlhU2Vzc2lvbkVuYWJsZWQpOworfQorCiBAZW5kCiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXNQcml2YXRlLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaAppbmRleCBm
MDY5MWZkNTc1MDRmM2NhODExZTc0YjBkMGEzOWUzZDc4YThkNDExLi43NjY2OTYwMDhmZTJiYjRh
ZDNmZjYyMTNkMjViMzdiZmZlZGMyYmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaApAQCAtMTcwLDYgKzE3
MCw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS1BpdGNoQ29ycmVjdGlvbkFsZ29y
aXRobSkgewogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0U3BlZWNoUmVjb2duaXRp
b25FbmFibGVkOikgQk9PTCBfc3BlZWNoUmVjb2duaXRpb25FbmFibGVkIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiBAcHJvcGVydHkgKG5vbmF0
b21pYywgc2V0dGVyPV9zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuYWJsZWQ6KSBCT09MIF9w
cml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9
X3NldFBpdGNoQ29ycmVjdGlvbkFsZ29yaXRobTopIF9XS1BpdGNoQ29ycmVjdGlvbkFsZ29yaXRo
bSBfcGl0Y2hDb3JyZWN0aW9uQWxnb3JpdGhtIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFD
X1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9z
ZXRNZWRpYVNlc3Npb25FbmFibGVkOikgQk9PTCBfbWVkaWFTZXNzaW9uRW5hYmxlZCBXS19BUElf
QVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiAjaWYgIVRB
UkdFVF9PU19JUEhPTkUKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFdlYkdMRW5h
YmxlZDopIEJPT0wgX3dlYkdMRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQp
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBk
NWFlMzFmYmVjYTFjN2I5Mzc5ZTRmY2VjMzc2ZWM0YjgxOTU1YWQ0Li4yZmIwNDExMmNkYzNhODg4
ZDBiYmMyMGIxODVlYzY0MTEwZTJhODE0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMjEtMDItMDQgIEVyaWMgQ2Fy
bHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW01hY10gQ29ubmVjdCBN
ZWRpYVNlc3Npb24gd2l0aCBNZWRpYVJlbW90ZSBhbmQgTm93UGxheWluZworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNDMxCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS83NDAwMDM2Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
TWVkaWFTZXNzaW9uLm1tOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vz
c2lvblRlc3Q6OndlYlZpZXcpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9u
VGVzdDo6d2ViVmlld1BpZCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25U
ZXN0OjpnZXROb3dQbGF5aW5nQ2xpZW50KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlh
U2Vzc2lvblRlc3Q6OmdldE5vd1BsYXlpbmdDbGllbnRQaWQpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6TWVkaWFTZXNzaW9uVGVzdDo6bG9hZFBhZ2VBbmRCZWNvbWVOb3dQbGF5aW5nKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvblRlc3Q6OnJ1blNjcmlwdFdpdGhVc2Vy
R2VzdHVyZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25UZXN0OjpwbGF5
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvblRlc3Q6OnBhdXNlKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvblRlc3Q6OnNlbmRNZWRpYVJlbW90ZUNv
bW1hbmQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uVGVzdDo6c2VuZE1l
ZGlhUmVtb3RlU2Vla0NvbW1hbmQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNz
aW9uVGVzdDo6bGlzdGVuRm9yRXZlbnRNZXNzYWdlcyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpNZWRpYVNlc3Npb25UZXN0OjpldmVudExpc3RlbmVyV2FzQ2FsbGVkKToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvblRlc3Q6OndhaXRGb3JFdmVudExpc3RlbmVyVG9CZUNh
bGxlZCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25UZXN0OjpsaXN0ZW5G
b3JTZXNzaW9uSGFuZGxlck1lc3NhZ2VzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlh
U2Vzc2lvblRlc3Q6OnNlc3Npb25IYW5kbGVyV2FzQ2FsbGVkKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6Ok1lZGlhU2Vzc2lvblRlc3Q6OndhaXRGb3JTZXNzaW9uSGFuZGxlclRvQmVDYWxsZWQp
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uVGVzdDo6Z2V0U3VwcG9ydGVk
Q29tbWFuZHMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL21lZGlhLXJlbW90ZS5odG1sOiBBZGRlZC4K
KwogMjAyMS0wMi0wNCAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAg
ICAgICAgW1B5dGhvbi0zXSBDaGFuZ2Ugc2hlYmFuZyBpbiB0ZXN0LXdlYmtpdHB5IChQYXJ0LTEp
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDVjNTk3YTcxZDJlYjM4Nzg2MDdkZTJhZmYzYmQy
YzgxNzM2ODMzNmIuLjBiNDhlN2VhZTVhMmJmODZiZDYxYmQwZDkyYjFhZWRlYzcyMzE5OGQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01Niw2ICs1Niw4IEBACiAJCTA3NDk5NDUyMUVBNTAz
NEIwMDBEQTQ0RSAvKiBnZXRVc2VyTWVkaWEyLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFCQUY0RTIyNUFDOURCODAwRDgyRjMyIC8q
IGdldFVzZXJNZWRpYTIuaHRtbCAqLzsgfTsKIAkJMDc2RTUwN0YxRjQ1MTNENjAwNkU5RjVBIC8q
IExvZ2dpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDc2RTUwN0UxRjQ1MDMxRTAwNkU5RjVBIC8qIExvZ2dpbmcuY3BwICovOyB9OwogCQkwNzdB
NUFGMzIzMDYzOEE2MDBBNzEwNUMgLyogQWNjZXNzaWJpbGl0eVRlc3RQbHVnaW4ubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzQ2NjQ1ODIyRkY2MzA1
MDBFMzQ1MUEgLyogQWNjZXNzaWJpbGl0eVRlc3RQbHVnaW4ubW0gKi87IH07CisJCTA3OTQ3NDBE
MjVDQTBCREUwMEM1OTdFQiAvKiBNZWRpYVNlc3Npb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzk0NzQwQzI1Q0EwQkRFMDBDNTk3RUIgLyogTWVk
aWFTZXNzaW9uLm1tICovOyB9OworCQkwNzk0NzQyRDI1Q0IzM0ZEMDBDNTk3RUIgLyogbWVkaWEt
cmVtb3RlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDc5NDc0MkMyNUNCMzNCMDAwQzU5N0VCIC8qIG1lZGlhLXJlbW90ZS5odG1sICov
OyB9OwogCQkwNzk5QzM0OTFFQkEyRDdCMDAzQjc1MzIgLyogVXNlck1lZGlhRGlzYWJsZWQubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0VERUZBQzFF
Qjk0MDBDMDBENDMyOTIgLyogVXNlck1lZGlhRGlzYWJsZWQubW0gKi87IH07CiAJCTA3OTlDMzRC
MUVCQTMzMDEwMDNCNzUzMiAvKiBkaXNhYmxlR2V0VXNlck1lZGlhLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5OUMzNEExRUJBMzJG
NDAwM0I3NTMyIC8qIGRpc2FibGVHZXRVc2VyTWVkaWEuaHRtbCAqLzsgfTsKIAkJMDdDMDQ2Q0Ex
RTQyNjJBODAwNzIwMUU3IC8qIENBUmluZ0J1ZmZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0MwNDZDOTFFNDI1NzNFMDA3MjAxRTcgLyogQ0FS
aW5nQnVmZmVyLmNwcCAqLzsgfTsKQEAgLTE1NTksNiArMTU2MSw3IEBACiAJCQkJQUQ1N0FDMjIx
REE3NDY2RTAwRkYxQkRFIC8qIG1hbnktaWZyYW1lcy5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
LAogCQkJCTc3NzJFQ0UxMjJGRTA2QzYwMDA5QTc5OSAvKiBtYW55LXNhbWUtb3JpZ2luLWlmcmFt
ZXMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlDRDgzOTRERjIzMkFGN0MwMDAxNDk0
OTUgLyogbWVkaWEtbG9hZGluZy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCTA3OTQ3
NDJEMjVDQjMzRkQwMEM1OTdFQiAvKiBtZWRpYS1yZW1vdGUuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLywKIAkJCQlDREEzMTU5QTFFRDU0OEYxMDA5RjYwRDMgLyogTWVkaWFQbGF5YmFja1NsZWVw
QXNzZXJ0aW9uLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJQ0RDOTQ0MkYxRUYyMDVE
NjAwNTlDM0M0IC8qIG1lZGlhc3RyZWFtdHJhY2stZGV0YWNoZWQuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLywKIAkJCQlFMTIyMERDQTE1NUIyOEFBMDAxM0UyRkMgLyogTWVtb3J5Q2FjaGVEaXNh
YmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywK
QEAgLTE3MjIsNiArMTcyNSw4IEBACiAJCTA3NDkyQjNBMURGOEFFMkQwMDYzM0RFMSAvKiBFbnVt
ZXJhdGVNZWRpYURldmljZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRW51bWVyYXRlTWVkaWFEZXZpY2VzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDc2NkREMUYxQTVBRDUyMDAwMjNFM0JCIC8qIFBlbmRpbmdBUElSZXF1ZXN0VVJMLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBlbmRpbmdBUElSZXF1ZXN0VVJM
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2RTUwN0UxRjQ1MDMxRTAwNkU5
RjVBIC8qIExvZ2dpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TG9nZ2luZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3OTQ3NDBDMjVDQTBC
REUwMEM1OTdFQiAvKiBNZWRpYVNlc3Npb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBNZWRpYVNlc3Npb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTA3OTQ3NDJDMjVDQjMzQjAwMEM1OTdFQiAvKiBtZWRpYS1yZW1vdGUuaHRtbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJtZWRpYS1yZW1vdGUuaHRtbCI7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA3OTlDMzRBMUVCQTMyRjQwMDNCNzUzMiAvKiBkaXNhYmxlR2V0VXNl
ck1lZGlhLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBkaXNhYmxlR2V0VXNlck1l
ZGlhLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QzA0NkM5MUU0MjU3M0Uw
MDcyMDFFNyAvKiBDQVJpbmdCdWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ0FSaW5nQnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MDdDQzdERkQyMjY2MzMwODAwRTM5MTgxIC8qIE1lZGlhQnVmZmVyaW5nUG9saWN5Lm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVkaWFCdWZmZXJpbmdQb2xpY3ku
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMzU5LDYgKzMzNjQsNyBAQAogCQkJ
CTk1QjZCM0I2MjUxRUJGMkYwMEZDNDM4MiAvKiBNZWRpYURvY3VtZW50Lm1tICovLAogCQkJCUNE
MDM3MEUyMjRBNDRCN0EwMEJBM0NBRSAvKiBNZWRpYUxvYWRpbmcubW0gKi8sCiAJCQkJMDdFRjc2
RDQyNTQwRkMwNjAwNTNFRDUzIC8qIE1lZGlhTXV0ZWRTdGF0ZS5tbSAqLywKKwkJCQkwNzk0NzQw
QzI1Q0EwQkRFMDBDNTk3RUIgLyogTWVkaWFTZXNzaW9uLm1tICovLAogCQkJCTUxQkU5RTY1MjM3
NjA4OTUwMEI0RTExNyAvKiBNZWRpYVR5cGUubW0gKi8sCiAJCQkJNTE2NUZFMDMyMDFFRTYxNzAw
OUY3RUMzIC8qIE1lc3NhZ2VQb3J0UHJvdmlkZXJzLm1tICovLAogCQkJCTUxQ0QxQzZBMUIzOENF
MzYwMDE0MkNBNSAvKiBNb2RhbEFsZXJ0cy5tbSAqLywKQEAgLTM5MjIsNiArMzkyOCw3IEBACiAJ
CQkJNDZDNTE5RTMxRDM1NjI5NjAwREFBNTFBIC8qIExvY2FsU3RvcmFnZU51bGxFbnRyaWVzLmxv
Y2Fsc3RvcmFnZSAqLywKIAkJCQk0NkM1MTlFNDFEMzU2Mjk2MDBEQUE1MUEgLyogTG9jYWxTdG9y
YWdlTnVsbEVudHJpZXMubG9jYWxzdG9yYWdlLXNobSAqLywKIAkJCQk3QTZBMkM3MTFEQ0NGQjAy
MDBDMEQwODUgLyogTG9jYWxTdG9yYWdlUXVpcmtFbmFibGVkLmh0bWwgKi8sCisJCQkJMDc5NDc0
MkMyNUNCMzNCMDAwQzU5N0VCIC8qIG1lZGlhLXJlbW90ZS5odG1sICovLAogCQkJCTlCNTlGMTI5
MjAzNDA4NTQwMDlFNjNENSAvKiBtc28tbGlzdC1jb21wYXQtbW9kZS5odG1sICovLAogCQkJCTlC
Q0Q0MTE5MjA2RDVFRDcwMDFENzFCRSAvKiBtc28tbGlzdC1vbi1oNC5odG1sICovLAogCQkJCTlC
RjM1NkNDMjAyRDQ0RjIwMEY3MTE2MCAvKiBtc28tbGlzdC5odG1sICovLApAQCAtNTM4Myw2ICs1
MzkwLDcgQEAKIAkJCQlDRDAzNzBFMzI0QTQ0RDk2MDBCQTNDQUUgLyogTWVkaWFMb2FkaW5nLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJMDdFRjc2RDUyNTQwRkMwNjAwNTNFRDUzIC8qIE1lZGlhTXV0
ZWRTdGF0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQTMxNTk4MUVENTM2NTEwMDlGNjBEMyAv
KiBNZWRpYVBsYXliYWNrU2xlZXBBc3NlcnRpb24ubW0gaW4gU291cmNlcyAqLywKKwkJCQkwNzk0
NzQwRDI1Q0EwQkRFMDBDNTk3RUIgLyogTWVkaWFTZXNzaW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQ0RDOTQ0MkUxRUYxRkMwODAwNTlDM0M0IC8qIE1lZGlhU3RyZWFtVHJhY2tEZXRhY2hlZC5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTUxQkU5RTY2MjM3NjA4OUYwMEI0RTExNyAvKiBNZWRpYVR5
cGUubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VDNTFBNDExQTdFMDA0NDdDNEMgLyogTWVt
b3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gaW4gU291cmNlcyAq
LywKQEAgLTU0MjEsNiArNTQyOSw3IEBACiAJCQkJQzEwNEJDMUYyNTQ3MjM3MTAwQzA3OEM5IC8q
IE92ZXJyaWRlQXBwbGVMYW5ndWFnZXNQcmVmZXJlbmNlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Q0VCQ0ExMkYxRTNBNjYwMTAwQzczMjkzIC8qIE92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRBMjU4NkYyMjVDNjdEQzAwQjQ1QzFDIC8qIE92ZXJy
aWRlVmlld3BvcnRBcmd1bWVudHMubW0gaW4gU291cmNlcyAqLywKKwkJCQk5NTNBQkIzNTI1QzBE
NjgyMDA0QzhCNzMgLyogUGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJN0NDQjREQTkxQzgzQUU3MzAwQ0M2OTE4IC8qIFBhZ2VHcm91cC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk3Q0NFN0YwNzFBNDExQUU2MDA0NDdDNEMgLyogUGFnZUxvYWRCYXNpYy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YwODFBNDExQUU2MDA0NDdDNEMgLyogUGFnZUxv
YWREaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2VGb3JGcmFtZS5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTU0NjQsNyArNTQ3Myw2IEBACiAJCQkJNTE4QzExNTMyMDVCMDUwNDAwMUZGNEFFIC8qIFBy
b2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRkVDMkE4NTYyNENF
QjY1RjAwQURCQzM1IC8qIFByb3BlcnR5U2xvdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Qzgz
RTBDMTFEMEE2NTJGMDBGRUJDRjMgLyogUHJvdmlzaW9uYWxVUkxOb3RDaGFuZ2UubW0gaW4gU291
cmNlcyAqLywKLQkJCQk5NTNBQkIzNTI1QzBENjgyMDA0QzhCNzMgLyogUGFnZUV4dGVuZGVkQmFj
a2dyb3VuZENvbG9yLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNGQUNGNjUyMjZGRDJEQzAwNTZD
N0QwIC8qIFByb3h5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDQxQTFFMzQyMTZGRkRCQzAwNzg5
RTBBIC8qIFB1YmxpY1N1ZmZpeC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzRTBDMjFEMEE2
NTM1MDBGRUJDRjMgLyogUXVpY2tMb29rLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL01lZGlhU2Vzc2lvbi5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTWVkaWFTZXNzaW9uLm1tCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmFiYzYyOWMwZDEzMTY0NmE2NzkxZGNkYjFkZGM3YzY2YmExNWUwNWYKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL01lZGlhU2Vz
c2lvbi5tbQpAQCAtMCwwICsxLDM4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5o
IgorCisjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoTUVESUFfU0VTU0lPTikKKworI2ltcG9y
dCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3QuaCIKKyNpbXBvcnQgIlRlc3RX
S1dlYlZpZXcuaCIKKyNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgorI2lt
cG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+CisjaW1wb3J0IDxX
ZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dlYlZpZXdQcml2YXRl
Lmg+CisjaW1wb3J0IDxwYWwvc3BpL21hYy9NZWRpYVJlbW90ZVNQSS5oPgorI2ltcG9ydCA8d3Rm
L0Z1bmN0aW9uLmg+CisjaW1wb3J0IDx3dGYvSGFzaFNldC5oPgorI2ltcG9ydCA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CisjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKyNpbXBvcnQgPHd0Zi90
ZXh0L1N0cmluZ0hhc2guaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitTT0ZU
X0xJTktfUFJJVkFURV9GUkFNRVdPUksoTWVkaWFSZW1vdGUpCisKK1NPRlRfTElOSyhNZWRpYVJl
bW90ZSwgTVJNZWRpYVJlbW90ZVNlbmRDb21tYW5kVG9BcHAsIEJvb2xlYW4sIChNUk1lZGlhUmVt
b3RlQ29tbWFuZCBjb21tYW5kLCBDRkRpY3Rpb25hcnlSZWYgb3B0aW9ucywgTVJPcmlnaW5SZWYg
b3JpZ2luLCBDRlN0cmluZ1JlZiBhcHBEaXNwbGF5SUQsIE1SU2VuZENvbW1hbmRBcHBPcHRpb25z
IGFwcE9wdGlvbnMsIGRpc3BhdGNoX3F1ZXVlX3QgcmVwbHlRLCB2b2lkKF5jb21wbGV0aW9uKShN
UlNlbmRDb21tYW5kRXJyb3IgZXJyLCBDRkFycmF5UmVmIGhhbmRsZXJSZXR1cm5TdGF0dXNlcykp
LCAoY29tbWFuZCwgb3B0aW9ucywgb3JpZ2luLCBhcHBEaXNwbGF5SUQsIGFwcE9wdGlvbnMsIHJl
cGx5USwgY29tcGxldGlvbikpOworI2RlZmluZSBNUk1lZGlhUmVtb3RlU2VuZENvbW1hbmRUb0Fw
cCBzb2Z0TGlua01STWVkaWFSZW1vdGVTZW5kQ29tbWFuZFRvQXBwCisKK1NPRlRfTElOSyhNZWRp
YVJlbW90ZSwgTVJNZWRpYVJlbW90ZUdldExvY2FsT3JpZ2luLCBNUk9yaWdpblJlZiwgKCksICgp
KTsKKyNkZWZpbmUgTVJNZWRpYVJlbW90ZUdldExvY2FsT3JpZ2luIHNvZnRMaW5rTVJNZWRpYVJl
bW90ZUdldExvY2FsT3JpZ2luCisKK1NPRlRfTElOSyhNZWRpYVJlbW90ZSwgTVJNZWRpYVJlbW90
ZUdldFN1cHBvcnRlZENvbW1hbmRzRm9yT3JpZ2luLCB2b2lkLCAoTVJPcmlnaW5SZWYgb3JpZ2lu
LCBkaXNwYXRjaF9xdWV1ZV90IHF1ZXVlLCB2b2lkKF5jb21wbGV0aW9uKShDRkFycmF5UmVmIGNv
bW1hbmRzKSksIChvcmlnaW4sIHF1ZXVlLCBjb21wbGV0aW9uKSk7CisjZGVmaW5lIE1STWVkaWFS
ZW1vdGVHZXRTdXBwb3J0ZWRDb21tYW5kc0Zvck9yaWdpbiBzb2Z0TGlua01STWVkaWFSZW1vdGVH
ZXRTdXBwb3J0ZWRDb21tYW5kc0Zvck9yaWdpbgorCitTT0ZUX0xJTksoTWVkaWFSZW1vdGUsIE1S
TWVkaWFSZW1vdGVHZXROb3dQbGF5aW5nQ2xpZW50LCB2b2lkLCAoZGlzcGF0Y2hfcXVldWVfdCBx
dWV1ZSwgdm9pZCheY29tcGxldGlvbikoTVJOb3dQbGF5aW5nQ2xpZW50UmVmLCBDRkVycm9yUmVm
KSksIChxdWV1ZSwgY29tcGxldGlvbikpCisjZGVmaW5lIE1STWVkaWFSZW1vdGVHZXROb3dQbGF5
aW5nQ2xpZW50IHNvZnRMaW5rTVJNZWRpYVJlbW90ZUdldE5vd1BsYXlpbmdDbGllbnQKKworU09G
VF9MSU5LKE1lZGlhUmVtb3RlLCBNUk5vd1BsYXlpbmdDbGllbnRHZXRQcm9jZXNzSWRlbnRpZmll
ciwgcGlkX3QsIChNUk5vd1BsYXlpbmdDbGllbnRSZWYgY2xpZW50KSwgKGNsaWVudCkpCisjZGVm
aW5lIE1STm93UGxheWluZ0NsaWVudEdldFByb2Nlc3NJZGVudGlmaWVyIHNvZnRMaW5rTVJOb3dQ
bGF5aW5nQ2xpZW50R2V0UHJvY2Vzc0lkZW50aWZpZXIKKworU09GVF9MSU5LX0NPTlNUQU5UKE1l
ZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU9wdGlvblNraXBJbnRlcnZhbCwgQ0ZTdHJpbmdSZWYp
CisjZGVmaW5lIGtNUk1lZGlhUmVtb3RlT3B0aW9uU2tpcEludGVydmFsIGdldGtNUk1lZGlhUmVt
b3RlT3B0aW9uU2tpcEludGVydmFsKCkKKworU09GVF9MSU5LX0NPTlNUQU5UKE1lZGlhUmVtb3Rl
LCBrTVJNZWRpYVJlbW90ZU9wdGlvblBsYXliYWNrUG9zaXRpb24sIENGU3RyaW5nUmVmKQorI2Rl
ZmluZSBrTVJNZWRpYVJlbW90ZU9wdGlvblBsYXliYWNrUG9zaXRpb24gZ2V0a01STWVkaWFSZW1v
dGVPcHRpb25QbGF5YmFja1Bvc2l0aW9uKCkKKworI2lmICFVU0UoQVBQTEVfSU5URVJOQUxfU0RL
KQorQGludGVyZmFjZSBNUkNvbW1hbmRJbmZvIDogTlNPYmplY3QKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSkgTVJNZWRpYVJlbW90ZUNvbW1hbmQgY29tbWFuZDsKK0Bwcm9wZXJ0eSAo
bm9uYXRvbWljLCByZWFkb25seSwgZ2V0dGVyPWlzRW5hYmxlZCkgQk9PTCBlbmFibGVkOworQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBudWxsYWJsZSwgY29weSkgTlNEaWN0aW9uYXJ5
ICpvcHRpb25zOworQGVuZAorI2VuZGlmCisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKwor
Y2xhc3MgTWVkaWFTZXNzaW9uVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK3B1YmxpYzoK
KyAgICB2b2lkIFNldFVwKCkgZmluYWwKKyAgICB7CisgICAgICAgIF9jb25maWd1cmF0aW9uID0g
YWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICAgICAg
W19jb25maWd1cmF0aW9uIHNldE1lZGlhVHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJh
Y2s6V0tBdWRpb3Zpc3VhbE1lZGlhVHlwZUF1ZGlvXTsKKworICAgICAgICBfd2ViVmlldyA9IGFk
b3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgMzAwLCAzMDApIGNvbmZpZ3VyYXRpb246X2NvbmZpZ3VyYXRpb24uZ2V0KCkgYWRkVG9XaW5k
b3c6WUVTXSk7CisKKyAgICAgICAgV0tQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMgPSBbX3dlYlZp
ZXcgY29uZmlndXJhdGlvbl0ucHJlZmVyZW5jZXM7CisgICAgICAgIHByZWZlcmVuY2VzLl9tZWRp
YVNlc3Npb25FbmFibGVkID0gWUVTOworCisgICAgICAgIF9tZXNzYWdlSGFuZGxlcnMgPSBhZG9w
dE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICB9CisKKyAgICB2b2lkIFRl
YXJEb3duKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIFtfd2ViVmlldyBjbGVhck1lc3NhZ2VI
YW5kbGVyczpfbWVzc2FnZUhhbmRsZXJzLmdldCgpXTsKKyAgICB9CisKKyAgICBUZXN0V0tXZWJW
aWV3KiB3ZWJWaWV3KCkgeyByZXR1cm4gX3dlYlZpZXcuZ2V0KCk7IH0KKworICAgIHBpZF90IHdl
YlZpZXdQaWQoKSB7IHJldHVybiBbX3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXTsgfQor
CisgICAgUmV0YWluUHRyPE1STm93UGxheWluZ0NsaWVudFJlZj4gZ2V0Tm93UGxheWluZ0NsaWVu
dCgpCisgICAgeworICAgICAgICBib29sIGdvdE5vd1BsYXlpbmcgPSBmYWxzZTsKKyAgICAgICAg
UmV0YWluUHRyPE1STm93UGxheWluZ0NsaWVudFJlZj4gbm93UGxheWluZ0NsaWVudDsKKyAgICAg
ICAgTVJNZWRpYVJlbW90ZUdldE5vd1BsYXlpbmdDbGllbnQoZGlzcGF0Y2hfZ2V0X21haW5fcXVl
dWUoKSwgWyZdIChNUk5vd1BsYXlpbmdDbGllbnRSZWYgcGxheWVyLCBDRkVycm9yUmVmIGVycm9y
KSB7CisgICAgICAgICAgICBpZiAoIWVycm9yICYmIHBsYXllcikKKyAgICAgICAgICAgICAgICBu
b3dQbGF5aW5nQ2xpZW50ID0gcGxheWVyOworICAgICAgICAgICAgZ290Tm93UGxheWluZyA9IHRy
dWU7CisgICAgICAgIH0pOworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdvdE5v
d1BsYXlpbmcpOworICAgICAgICByZXR1cm4gbm93UGxheWluZ0NsaWVudDsKKyAgICB9CisKKyAg
ICBwaWRfdCBnZXROb3dQbGF5aW5nQ2xpZW50UGlkKCkKKyAgICB7CisgICAgICAgIHJldHVybiBN
Uk5vd1BsYXlpbmdDbGllbnRHZXRQcm9jZXNzSWRlbnRpZmllcihnZXROb3dQbGF5aW5nQ2xpZW50
KCkuZ2V0KCkpOworICAgIH0KKworICAgIHZvaWQgbG9hZFBhZ2VBbmRCZWNvbWVOb3dQbGF5aW5n
KGNvbnN0IFN0cmluZyYgcGFnZU5hbWUpCisgICAgeworICAgICAgICBbX3dlYlZpZXcgc3luY2hy
b25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOnBhZ2VOYW1lXTsKKworICAgICAgICBib29sIGNhbnBs
YXl0aHJvdWdoID0gZmFsc2U7CisgICAgICAgIFt3ZWJWaWV3KCkgcGVyZm9ybUFmdGVyUmVjZWl2
aW5nTWVzc2FnZTpAImNhbnBsYXl0aHJvdWdoIGV2ZW50IiBhY3Rpb246WyZdIHsKKyAgICAgICAg
ICAgIGNhbnBsYXl0aHJvdWdoID0gdHJ1ZTsKKyAgICAgICAgfV07CisgICAgICAgIHJ1blNjcmlw
dFdpdGhVc2VyR2VzdHVyZSgibG9hZCgpIik7CisgICAgICAgIFV0aWw6OnJ1bigmY2FucGxheXRo
cm91Z2gpOworCisgICAgICAgIHBsYXkoKTsKKyAgICAgICAgcGF1c2UoKTsKKyAgICAgICAgQVNT
RVJUX0VRKHdlYlZpZXdQaWQoKSwgZ2V0Tm93UGxheWluZ0NsaWVudFBpZCgpKTsKKyAgICB9CisK
KyAgICB2b2lkIHJ1blNjcmlwdFdpdGhVc2VyR2VzdHVyZShjb25zdCBTdHJpbmcmIHNjcmlwdCkK
KyAgICB7CisgICAgICAgIGJvb2wgY29tcGxldGUgPSBmYWxzZTsKKyAgICAgICAgW193ZWJWaWV3
IGV2YWx1YXRlSmF2YVNjcmlwdDpzY3JpcHQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCwgTlNF
cnJvciAqKSB7IGNvbXBsZXRlID0gdHJ1ZTsgfV07CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmY29tcGxldGUpOworICAgIH0KKworICAgIHZvaWQgcGxheSgpCisgICAgeworICAg
ICAgICBib29sIHBsYXlpbmcgPSBmYWxzZTsKKyAgICAgICAgW193ZWJWaWV3IHBlcmZvcm1BZnRl
clJlY2VpdmluZ01lc3NhZ2U6QCJwbGF5IGV2ZW50IiBhY3Rpb246WyZdIHsgcGxheWluZyA9IHRy
dWU7IH1dOworICAgICAgICBydW5TY3JpcHRXaXRoVXNlckdlc3R1cmUoImF1ZGlvLnBsYXkoKSIp
OworICAgICAgICBVdGlsOjpydW4oJnBsYXlpbmcpOworICAgIH0KKworICAgIHZvaWQgcGF1c2Uo
KQorICAgIHsKKyAgICAgICAgYm9vbCBwYXVzZWQgPSBmYWxzZTsKKyAgICAgICAgW193ZWJWaWV3
IHBlcmZvcm1BZnRlclJlY2VpdmluZ01lc3NhZ2U6QCJwYXVzZSBldmVudCIgYWN0aW9uOlsmXSB7
IHBhdXNlZCA9IHRydWU7IH1dOworICAgICAgICBydW5TY3JpcHRXaXRoVXNlckdlc3R1cmUoImF1
ZGlvLnBhdXNlKCkiKTsKKyAgICAgICAgVXRpbDo6cnVuKCZwYXVzZWQpOworICAgIH0KKworICAg
IGJvb2wgc2VuZE1lZGlhUmVtb3RlQ29tbWFuZChNUk1lZGlhUmVtb3RlQ29tbWFuZCBjb21tYW5k
LCBDRkRpY3Rpb25hcnlSZWYgb3B0aW9ucyA9IG51bGxwdHIpCisgICAgeworICAgICAgICBib29s
IGNvbXBsZXRlZCA9IGZhbHNlOworICAgICAgICBib29sIHN1Y2Nlc3M7CisKKyAgICAgICAgTVJN
ZWRpYVJlbW90ZVNlbmRDb21tYW5kVG9BcHAoY29tbWFuZCwgb3B0aW9ucywgTlVMTCwgTlVMTCwg
c3RhdGljX2Nhc3Q8TVJTZW5kQ29tbWFuZEFwcE9wdGlvbnM+KDApLCBOVUxMLCBbJl0gKE1SU2Vu
ZENvbW1hbmRFcnJvciBlcnJvciwgQ0ZBcnJheVJlZikgeworICAgICAgICAgICAgc3VjY2VzcyA9
ICFlcnJvcjsKKyAgICAgICAgICAgIGNvbXBsZXRlZCA9IHRydWU7CisgICAgICAgIH0pOworICAg
ICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmNvbXBsZXRlZCk7CisKKyAgICAgICAgcmV0
dXJuIHN1Y2Nlc3M7CisgICAgfQorCisgICAgYm9vbCBzZW5kTWVkaWFSZW1vdGVTZWVrQ29tbWFu
ZChNUk1lZGlhUmVtb3RlQ29tbWFuZCBjb21tYW5kLCBkb3VibGUgaW50ZXJ2YWwpCisgICAgewor
ICAgICAgICBDRlN0cmluZ1JlZiBzZWVrSW50ZXJ2YWwgPSAoY29tbWFuZCA9PSBNUk1lZGlhUmVt
b3RlQ29tbWFuZFNlZWtUb1BsYXliYWNrUG9zaXRpb24pID8ga01STWVkaWFSZW1vdGVPcHRpb25Q
bGF5YmFja1Bvc2l0aW9uIDoga01STWVkaWFSZW1vdGVPcHRpb25Ta2lwSW50ZXJ2YWw7CisgICAg
ICAgIE5TRGljdGlvbmFyeSAqb3B0aW9ucyA9IEB7KF9fYnJpZGdlIE5TU3RyaW5nICopc2Vla0lu
dGVydmFsIDogQChpbnRlcnZhbCl9OworICAgICAgICByZXR1cm4gc2VuZE1lZGlhUmVtb3RlQ29t
bWFuZChjb21tYW5kLCAoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKW9wdGlvbnMpOworICAgIH0K
KworICAgIHZvaWQgbGlzdGVuRm9yRXZlbnRNZXNzYWdlcyhzdGQ6OmluaXRpYWxpemVyX2xpc3Q8
Y29uc3QgY2hhcio+IGV2ZW50cykKKyAgICB7CisgICAgICAgIGZvciAoYXV0byogZXZlbnQgOiBl
dmVudHMpIHsKKyAgICAgICAgICAgIGF1dG8gZXZlbnRNZXNzYWdlID0gbWFrZVN0cmluZyhldmVu
dCwgIiBldmVudCIpOworICAgICAgICAgICAgW19tZXNzYWdlSGFuZGxlcnMgYWRkT2JqZWN0OmV2
ZW50TWVzc2FnZV07CisgICAgICAgICAgICBbd2ViVmlldygpIHBlcmZvcm1BZnRlclJlY2Vpdmlu
Z01lc3NhZ2U6ZXZlbnRNZXNzYWdlIGFjdGlvbjpbdGhpcywgZXZlbnRNZXNzYWdlID0gV1RGTW92
ZShldmVudE1lc3NhZ2UpXSB7CisgICAgICAgICAgICAgICAgX2V2ZW50TGlzdGVuZXJzQ2FsbGVk
LmFkZChldmVudE1lc3NhZ2UpOworICAgICAgICAgICAgfV07CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBib29sIGV2ZW50TGlzdGVuZXJXYXNDYWxsZWQoY29uc3QgU3RyaW5nJiBldmVudCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBfZXZlbnRMaXN0ZW5lcnNDYWxsZWQuY29udGFpbnMobWFrZVN0
cmluZyhldmVudCwgIiBldmVudCIpKTsKKyAgICB9CisKKyAgICB2b2lkIHdhaXRGb3JFdmVudExp
c3RlbmVyVG9CZUNhbGxlZChjb25zdCBTdHJpbmcmIGV2ZW50KQorICAgIHsKKyAgICAgICAgaW50
IHRyaWVzID0gMDsKKyAgICAgICAgZG8geworICAgICAgICAgICAgaWYgKGV2ZW50TGlzdGVuZXJX
YXNDYWxsZWQoZXZlbnQpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIFV0
aWw6OnNsZWVwKDAuMSk7CisgICAgICAgIH0gd2hpbGUgKCsrdHJpZXMgPD0gNTApOworCisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2b2lkIGxpc3RlbkZvclNlc3Npb25IYW5kbGVyTWVz
c2FnZXMoc3RkOjppbml0aWFsaXplcl9saXN0PGNvbnN0IGNoYXIqPiBoYW5kbGVycykKKyAgICB7
CisgICAgICAgIGZvciAoYXV0byogaGFuZGxlciA6IGhhbmRsZXJzKSB7CisgICAgICAgICAgICBh
dXRvIGhhbmRsZXJNZXNzYWdlID0gbWFrZVN0cmluZyhoYW5kbGVyLCAiIGhhbmRsZXIiKTsKKyAg
ICAgICAgICAgIFtfbWVzc2FnZUhhbmRsZXJzIGFkZE9iamVjdDpoYW5kbGVyTWVzc2FnZV07Cisg
ICAgICAgICAgICBbd2ViVmlldygpIHBlcmZvcm1BZnRlclJlY2VpdmluZ01lc3NhZ2U6aGFuZGxl
ck1lc3NhZ2UgYWN0aW9uOlt0aGlzLCBoYW5kbGVyTWVzc2FnZSA9IFdURk1vdmUoaGFuZGxlck1l
c3NhZ2UpXSB7CisgICAgICAgICAgICAgICAgX21lZGlhU2Vzc2lvbkhhbmRsZXJzQ2FsbGVkLmFk
ZChoYW5kbGVyTWVzc2FnZSk7CisgICAgICAgICAgICB9XTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGJvb2wgc2Vzc2lvbkhhbmRsZXJXYXNDYWxsZWQoY29uc3QgU3RyaW5nJiBoYW5kbGVyKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIF9tZWRpYVNlc3Npb25IYW5kbGVyc0NhbGxlZC5jb250YWlu
cyhtYWtlU3RyaW5nKGhhbmRsZXIsICIgaGFuZGxlciIpKTsKKyAgICB9CisKKyAgICB2b2lkIHdh
aXRGb3JTZXNzaW9uSGFuZGxlclRvQmVDYWxsZWQoY29uc3QgU3RyaW5nJiBoYW5kbGVyKQorICAg
IHsKKyAgICAgICAgaW50IHRyaWVzID0gMDsKKyAgICAgICAgZG8geworICAgICAgICAgICAgaWYg
KHNlc3Npb25IYW5kbGVyV2FzQ2FsbGVkKGhhbmRsZXIpKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIFV0aWw6OnNsZWVwKDAuMSk7CisgICAgICAgIH0gd2hpbGUgKCsrdHJp
ZXMgPD0gNTApOworCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZXRhaW5QdHI8TlNB
cnJheT4gZ2V0U3VwcG9ydGVkQ29tbWFuZHMoKQorICAgIHsKKyAgICAgICAgYm9vbCBjb21wbGV0
ZWQgPSBmYWxzZTsKKyAgICAgICAgUmV0YWluUHRyPE5TQXJyYXk+IHJlc3VsdDsKKworICAgICAg
ICBNUk1lZGlhUmVtb3RlR2V0U3VwcG9ydGVkQ29tbWFuZHNGb3JPcmlnaW4oTVJNZWRpYVJlbW90
ZUdldExvY2FsT3JpZ2luKCksIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFsmXSAoQ0ZBcnJh
eVJlZiBjb21tYW5kcykgeworICAgICAgICAgICAgcmVzdWx0ID0gKF9fYnJpZGdlIE5TQXJyYXkg
Kiljb21tYW5kczsKKyAgICAgICAgICAgIGNvbXBsZXRlZCA9IHRydWU7CisgICAgICAgIH0pOwor
CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmY29tcGxldGVkKTsKKworICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgIH0KKworcHJpdmF0ZToKKyAgICBSZXRhaW5QdHI8V0tXZWJW
aWV3Q29uZmlndXJhdGlvbj4gX2NvbmZpZ3VyYXRpb247CisgICAgUmV0YWluUHRyPFRlc3RXS1dl
YlZpZXc+IF93ZWJWaWV3OworCisgICAgSGFzaFNldDxTdHJpbmc+IF9tZWRpYVNlc3Npb25IYW5k
bGVyc0NhbGxlZDsKKyAgICBIYXNoU2V0PFN0cmluZz4gX2V2ZW50TGlzdGVuZXJzQ2FsbGVkOwor
ICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gX21lc3NhZ2VIYW5kbGVyczsKK307CisKK1RF
U1RfRihNZWRpYVNlc3Npb25UZXN0LCBPbmx5T25lSGFuZGxlcikKK3sKKyAgICBsb2FkUGFnZUFu
ZEJlY29tZU5vd1BsYXlpbmcoIm1lZGlhLXJlbW90ZSIpOworCisgICAgW3dlYlZpZXcoKSBvYmpl
Y3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAic2V0RW1wdHlBY3Rpb25IYW5kbGVycyhbICdwbGF5
JyBdKSJdOworCisgICAgbGlzdGVuRm9yU2Vzc2lvbkhhbmRsZXJNZXNzYWdlcyh7ICJwbGF5Iiwg
InBhdXNlIiwgInNlZWt0byIsICJzZWVrZm9yd2FyZCIsICJzZWVrYmFja3dhcmQiLCAicHJldmlv
dXN0cmFjayIsICJuZXh0dHJhY2siIH0pOworICAgIGxpc3RlbkZvckV2ZW50TWVzc2FnZXMoeyAi
cGxheSIsICJwYXVzZSIsICJzZWVrZWQiIH0pOworCisgICAgc3RhdGljIFZlY3RvcjxNUk1lZGlh
UmVtb3RlQ29tbWFuZD4gcmVnaXN0ZXJlZENvbW1hbmRzID0geyBNUk1lZGlhUmVtb3RlQ29tbWFu
ZFBsYXkgfTsKKyAgICBhdXRvIGN1cnJlbnRDb21tYW5kcyA9IGdldFN1cHBvcnRlZENvbW1hbmRz
KCk7CisgICAgZm9yIChNUkNvbW1hbmRJbmZvICpjb21tYW5kIGluIGN1cnJlbnRDb21tYW5kcy5n
ZXQoKSkgeworICAgICAgICBpZiAoIWNvbW1hbmQuZW5hYmxlZCkKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAKKyAgICAgICAgQVNTRVJUX1RSVUUocmVnaXN0ZXJlZENvbW1hbmRzLmNv
bnRhaW5zKGNvbW1hbmQuY29tbWFuZCkpOworICAgIH0KKworICAgIEFTU0VSVF9UUlVFKHNlbmRN
ZWRpYVJlbW90ZUNvbW1hbmQoTVJNZWRpYVJlbW90ZUNvbW1hbmRQbGF5KSk7CisgICAgd2FpdEZv
clNlc3Npb25IYW5kbGVyVG9CZUNhbGxlZCgicGxheSIpOworICAgIEFTU0VSVF9UUlVFKHNlc3Np
b25IYW5kbGVyV2FzQ2FsbGVkKCJwbGF5IikpOworICAgIEFTU0VSVF9GQUxTRShldmVudExpc3Rl
bmVyV2FzQ2FsbGVkKCJwbGF5IikpOworCisgICAgLy8gVGhlIG1lZGlhIHNlc3Npb24gb25seSBy
ZWdpc3RlcmVkIGZvciBQbGF5LCBidXQgbm8gb3RoZXIgY29tbWFuZHMgc2hvdWxkIHJlYWNoIEhU
TUxNZWRpYUVsZW1lbnQuCisgICAgQVNTRVJUX1RSVUUoc2VuZE1lZGlhUmVtb3RlU2Vla0NvbW1h
bmQoTVJNZWRpYVJlbW90ZUNvbW1hbmRTa2lwRm9yd2FyZCwgMSkpOworICAgIEFTU0VSVF9GQUxT
RShzZXNzaW9uSGFuZGxlcldhc0NhbGxlZCgic2Vla2ZvcndhcmQiKSk7CisgICAgQVNTRVJUX0ZB
TFNFKGV2ZW50TGlzdGVuZXJXYXNDYWxsZWQoInNlZWtlZCIpKTsKKworICAgIEFTU0VSVF9UUlVF
KHNlbmRNZWRpYVJlbW90ZVNlZWtDb21tYW5kKE1STWVkaWFSZW1vdGVDb21tYW5kU2tpcEJhY2t3
YXJkLCAxMCkpOworICAgIEFTU0VSVF9GQUxTRShzZXNzaW9uSGFuZGxlcldhc0NhbGxlZCgic2Vl
a2JhY2t3YXJkIikpOworICAgIEFTU0VSVF9GQUxTRShldmVudExpc3RlbmVyV2FzQ2FsbGVkKCJz
ZWVrZWQiKSk7CisKKyAgICBBU1NFUlRfVFJVRShzZW5kTWVkaWFSZW1vdGVTZWVrQ29tbWFuZChN
Uk1lZGlhUmVtb3RlQ29tbWFuZFNlZWtUb1BsYXliYWNrUG9zaXRpb24sIDYpKTsKKyAgICBBU1NF
UlRfRkFMU0Uoc2Vzc2lvbkhhbmRsZXJXYXNDYWxsZWQoInNlZWt0byIpKTsKKyAgICBBU1NFUlRf
RkFMU0UoZXZlbnRMaXN0ZW5lcldhc0NhbGxlZCgic2Vla2VkIikpOworCisgICAgQVNTRVJUX1RS
VUUoc2VuZE1lZGlhUmVtb3RlQ29tbWFuZChNUk1lZGlhUmVtb3RlQ29tbWFuZE5leHRUcmFjaykp
OworICAgIEFTU0VSVF9GQUxTRShzZXNzaW9uSGFuZGxlcldhc0NhbGxlZCgibmV4dHRyYWNrIikp
OworCisgICAgQVNTRVJUX1RSVUUoc2VuZE1lZGlhUmVtb3RlQ29tbWFuZChNUk1lZGlhUmVtb3Rl
Q29tbWFuZFByZXZpb3VzVHJhY2spKTsKKyAgICBBU1NFUlRfRkFMU0Uoc2Vzc2lvbkhhbmRsZXJX
YXNDYWxsZWQoInByZXZpb3VzdHJhY2siKSk7Cit9CisKK1RFU1RfRihNZWRpYVNlc3Npb25UZXN0
LCBSZW1vdGVDb21tYW5kcykKK3sKKyAgICBsb2FkUGFnZUFuZEJlY29tZU5vd1BsYXlpbmcoIm1l
ZGlhLXJlbW90ZSIpOworCisgICAgW3dlYlZpZXcoKSBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2Ny
aXB0OkAic2V0RW1wdHlBY3Rpb25IYW5kbGVycyhbICdwbGF5JywgJ3BhdXNlJywgJ3NlZWt0bycs
ICdzZWVrZm9yd2FyZCcsICdzZWVrYmFja3dhcmQnLCAncHJldmlvdXN0cmFjaycsICduZXh0dHJh
Y2snIF0pIl07CisKKyAgICBsaXN0ZW5Gb3JTZXNzaW9uSGFuZGxlck1lc3NhZ2VzKHsgInBsYXki
LCAicGF1c2UiLCAic2Vla3RvIiwgInNlZWtmb3J3YXJkIiwgInNlZWtiYWNrd2FyZCIsICJwcmV2
aW91c3RyYWNrIiwgIm5leHR0cmFjayIgfSk7CisgICAgbGlzdGVuRm9yRXZlbnRNZXNzYWdlcyh7
ICJwbGF5IiwgInBhdXNlIiwgInNlZWtlZCIgfSk7CisKKyAgICBzdGF0aWMgVmVjdG9yPE1STWVk
aWFSZW1vdGVDb21tYW5kPiByZWdpc3RlcmVkQ29tbWFuZHMgPSB7IE1STWVkaWFSZW1vdGVDb21t
YW5kUGxheSwgTVJNZWRpYVJlbW90ZUNvbW1hbmRQYXVzZSwgTVJNZWRpYVJlbW90ZUNvbW1hbmRT
ZWVrVG9QbGF5YmFja1Bvc2l0aW9uLCBNUk1lZGlhUmVtb3RlQ29tbWFuZFNraXBGb3J3YXJkLCBN
Uk1lZGlhUmVtb3RlQ29tbWFuZFNraXBCYWNrd2FyZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRQcmV2
aW91c1RyYWNrLCBNUk1lZGlhUmVtb3RlQ29tbWFuZE5leHRUcmFjayB9OworICAgIGF1dG8gY3Vy
cmVudENvbW1hbmRzID0gZ2V0U3VwcG9ydGVkQ29tbWFuZHMoKTsKKyAgICBmb3IgKE1SQ29tbWFu
ZEluZm8gKmNvbW1hbmQgaW4gY3VycmVudENvbW1hbmRzLmdldCgpKSB7CisgICAgICAgIGlmICgh
Y29tbWFuZC5lbmFibGVkKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIAorICAgICAg
ICBBU1NFUlRfVFJVRShyZWdpc3RlcmVkQ29tbWFuZHMuY29udGFpbnMoY29tbWFuZC5jb21tYW5k
KSk7CisgICAgfQorCisgICAgQVNTRVJUX1RSVUUoc2VuZE1lZGlhUmVtb3RlQ29tbWFuZChNUk1l
ZGlhUmVtb3RlQ29tbWFuZFBsYXkpKTsKKyAgICB3YWl0Rm9yU2Vzc2lvbkhhbmRsZXJUb0JlQ2Fs
bGVkKCJwbGF5Iik7CisgICAgQVNTRVJUX1RSVUUoc2Vzc2lvbkhhbmRsZXJXYXNDYWxsZWQoInBs
YXkiKSk7CisgICAgQVNTRVJUX0ZBTFNFKGV2ZW50TGlzdGVuZXJXYXNDYWxsZWQoInBsYXkiKSk7
CisKKyAgICBBU1NFUlRfVFJVRShzZW5kTWVkaWFSZW1vdGVDb21tYW5kKE1STWVkaWFSZW1vdGVD
b21tYW5kUGF1c2UpKTsKKyAgICB3YWl0Rm9yU2Vzc2lvbkhhbmRsZXJUb0JlQ2FsbGVkKCJwYXVz
ZSIpOworICAgIEFTU0VSVF9UUlVFKHNlc3Npb25IYW5kbGVyV2FzQ2FsbGVkKCJwYXVzZSIpKTsK
KyAgICBBU1NFUlRfRkFMU0UoZXZlbnRMaXN0ZW5lcldhc0NhbGxlZCgicGF1c2UiKSk7CisKKyAg
ICBBU1NFUlRfVFJVRShzZW5kTWVkaWFSZW1vdGVTZWVrQ29tbWFuZChNUk1lZGlhUmVtb3RlQ29t
bWFuZFNraXBGb3J3YXJkLCAxKSk7CisgICAgd2FpdEZvclNlc3Npb25IYW5kbGVyVG9CZUNhbGxl
ZCgic2Vla2ZvcndhcmQiKTsKKyAgICBBU1NFUlRfVFJVRShzZXNzaW9uSGFuZGxlcldhc0NhbGxl
ZCgic2Vla2ZvcndhcmQiKSk7CisgICAgQVNTRVJUX0ZBTFNFKGV2ZW50TGlzdGVuZXJXYXNDYWxs
ZWQoInNlZWtlZCIpKTsKKworICAgIEFTU0VSVF9UUlVFKHNlbmRNZWRpYVJlbW90ZVNlZWtDb21t
YW5kKE1STWVkaWFSZW1vdGVDb21tYW5kU2tpcEJhY2t3YXJkLCAxMCkpOworICAgIHdhaXRGb3JT
ZXNzaW9uSGFuZGxlclRvQmVDYWxsZWQoInNlZWtiYWNrd2FyZCIpOworICAgIEFTU0VSVF9UUlVF
KHNlc3Npb25IYW5kbGVyV2FzQ2FsbGVkKCJzZWVrYmFja3dhcmQiKSk7CisgICAgQVNTRVJUX0ZB
TFNFKGV2ZW50TGlzdGVuZXJXYXNDYWxsZWQoInNlZWtlZCIpKTsKKworICAgIEFTU0VSVF9UUlVF
KHNlbmRNZWRpYVJlbW90ZVNlZWtDb21tYW5kKE1STWVkaWFSZW1vdGVDb21tYW5kU2Vla1RvUGxh
eWJhY2tQb3NpdGlvbiwgNikpOworICAgIHdhaXRGb3JTZXNzaW9uSGFuZGxlclRvQmVDYWxsZWQo
InNlZWt0byIpOworICAgIEFTU0VSVF9UUlVFKHNlc3Npb25IYW5kbGVyV2FzQ2FsbGVkKCJzZWVr
dG8iKSk7CisgICAgQVNTRVJUX0ZBTFNFKGV2ZW50TGlzdGVuZXJXYXNDYWxsZWQoInNlZWtlZCIp
KTsKKworICAgIEFTU0VSVF9UUlVFKHNlbmRNZWRpYVJlbW90ZUNvbW1hbmQoTVJNZWRpYVJlbW90
ZUNvbW1hbmROZXh0VHJhY2spKTsKKyAgICB3YWl0Rm9yU2Vzc2lvbkhhbmRsZXJUb0JlQ2FsbGVk
KCJuZXh0dHJhY2siKTsKKyAgICBBU1NFUlRfVFJVRShzZXNzaW9uSGFuZGxlcldhc0NhbGxlZCgi
bmV4dHRyYWNrIikpOworCisgICAgQVNTRVJUX1RSVUUoc2VuZE1lZGlhUmVtb3RlQ29tbWFuZChN
Uk1lZGlhUmVtb3RlQ29tbWFuZFByZXZpb3VzVHJhY2spKTsKKyAgICB3YWl0Rm9yU2Vzc2lvbkhh
bmRsZXJUb0JlQ2FsbGVkKCJwcmV2aW91c3RyYWNrIik7CisgICAgQVNTRVJUX1RSVUUoc2Vzc2lv
bkhhbmRsZXJXYXNDYWxsZWQoInByZXZpb3VzdHJhY2siKSk7CisKKyAgICAvLyBVbnJlZ2lzdGVy
IGFjdGlvbiBoYW5kbGVycywgc3VwcG9ydGVkIGNvbW1hbmRzIHNob3VsZCBnbyB0byBIVE1MTWVk
aWFFbGVtZW50LgorICAgIFt3ZWJWaWV3KCkgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
ImNsZWFyQWN0aW9uSGFuZGxlcnMoKSJdOworCisgICAgQVNTRVJUX1RSVUUoc2VuZE1lZGlhUmVt
b3RlQ29tbWFuZChNUk1lZGlhUmVtb3RlQ29tbWFuZFBsYXkpKTsKKyAgICB3YWl0Rm9yRXZlbnRM
aXN0ZW5lclRvQmVDYWxsZWQoInBsYXkiKTsKKyAgICBBU1NFUlRfVFJVRShldmVudExpc3RlbmVy
V2FzQ2FsbGVkKCJwbGF5IikpOworCisgICAgQVNTRVJUX1RSVUUoc2VuZE1lZGlhUmVtb3RlQ29t
bWFuZChNUk1lZGlhUmVtb3RlQ29tbWFuZFBhdXNlKSk7CisgICAgd2FpdEZvckV2ZW50TGlzdGVu
ZXJUb0JlQ2FsbGVkKCJwbGF5Iik7CisgICAgQVNTRVJUX1RSVUUoZXZlbnRMaXN0ZW5lcldhc0Nh
bGxlZCgicGF1c2UiKSk7CisKKyAgICBBU1NFUlRfVFJVRShzZW5kTWVkaWFSZW1vdGVTZWVrQ29t
bWFuZChNUk1lZGlhUmVtb3RlQ29tbWFuZFNraXBGb3J3YXJkLCAxKSk7CisgICAgd2FpdEZvckV2
ZW50TGlzdGVuZXJUb0JlQ2FsbGVkKCJzZWVrZWQiKTsKKyAgICBBU1NFUlRfVFJVRShldmVudExp
c3RlbmVyV2FzQ2FsbGVkKCJzZWVrZWQiKSk7CisKKyAgICBBU1NFUlRfVFJVRShzZW5kTWVkaWFS
ZW1vdGVTZWVrQ29tbWFuZChNUk1lZGlhUmVtb3RlQ29tbWFuZFNraXBCYWNrd2FyZCwgMTApKTsK
KyAgICB3YWl0Rm9yRXZlbnRMaXN0ZW5lclRvQmVDYWxsZWQoInNlZWtlZCIpOworICAgIEFTU0VS
VF9UUlVFKGV2ZW50TGlzdGVuZXJXYXNDYWxsZWQoInNlZWtlZCIpKTsKKworICAgIEFTU0VSVF9U
UlVFKHNlbmRNZWRpYVJlbW90ZVNlZWtDb21tYW5kKE1STWVkaWFSZW1vdGVDb21tYW5kU2Vla1Rv
UGxheWJhY2tQb3NpdGlvbiwgNikpOworICAgIHdhaXRGb3JFdmVudExpc3RlbmVyVG9CZUNhbGxl
ZCgic2Vla2VkIik7CisgICAgQVNTRVJUX1RSVUUoZXZlbnRMaXN0ZW5lcldhc0NhbGxlZCgic2Vl
a2VkIikpOworfQorCit9CisKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpICYmIEVOQUJMRShNRURJ
QV9TRVNTSU9OKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9tZWRpYS1yZW1vdGUuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvbWVkaWEtcmVtb3RlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWM5OTNjN2NkNDAxYWZmMzJjZjIz
MmVkYmM4ODNlY2RjNzliYjM1ZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvbWVkaWEtcmVtb3RlLmh0bWwKQEAgLTAsMCArMSwxMzkgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKyAgICAjZXZlbnRzbG9n
IHsKKyAgICAgICAgZm9udC1zaXplOiAxMHB4OyAKKyAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMCUg
LSAoMzIwcHgpKTsKKyAgICAgICAgb3ZlcmZsb3cteTogc2Nyb2xsOworICAgICAgICBib3JkZXI6
IDFweCBzb2xpZCByZ2JhKDE0NywgMTI4LCAxMDgsIDAuMjUpOworICAgIH0KKzwvc3R5bGU+Cisg
ICAgPHNjcmlwdD4KKworICAgICAgICBsZXQgcGxheWxpc3QgPSB7CisgICAgICAgICAgICBjdXJy
ZW50OiAwLAorICAgICAgICAgICAgbWV0YWRhdGE6IFsKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIHVybDogJ3ZpZGVvLXdpdGgtYXVkaW8ubXA0JywKKyAgICAgICAgICAg
ICAgICAgICAgdGl0bGU6ICdCaXAgQm9wIFdpdGggQXVkaW8nLAorICAgICAgICAgICAgICAgICAg
ICBhcnRpc3Q6ICdUaGUgQmlwIEJvcCBBdXRob3JzJywKKyAgICAgICAgICAgICAgICAgICAgYWxi
dW06ICdXZWJLaXQgR3JlYXRlc3QgSGl0cycsCisgICAgICAgICAgICAgICAgICAgIGFydHdvcms6
IFsKKworICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB1cmw6ICd2aWRlby13aXRob3V0LWF1ZGlv
Lm1wNCcsCisgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnQmlwIEJvcCBXaXRob3V0IEF1ZGlv
JywKKyAgICAgICAgICAgICAgICAgICAgYXJ0aXN0OiAnVGhlIEJpcCBCb3AgQXV0aG9ycycsCisg
ICAgICAgICAgICAgICAgICAgIGFsYnVtOiAnV2ViS2l0IE9yaWdpbmFsIFRlc3QgQ29udGVudCcs
CisgICAgICAgICAgICAgICAgICAgIGFydHdvcms6IFsKKworICAgICAgICAgICAgICAgICAgICBd
LAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICBdLAorICAgICAgICB9OworCisgICAg
ICAgIGZ1bmN0aW9uIHNldE1ldGFkYXRhKGRhdGEpCisgICAgICAgIHsKKyAgICAgICAgICAgIG5h
dmlnYXRvci5tZWRpYVNlc3Npb24ubWV0YWRhdGEgPSBuZXcgTWVkaWFNZXRhZGF0YShkYXRhKTsK
KyAgICAgICAgICAgIHBvc3RNZXNzYWdlKCdzZXQgbWV0YWRhdGEnKQorICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gc2V0UGxheWxpc3RNZXRhZGF0YShpbmRleCkKKyAgICAgICAgeworICAg
ICAgICAgICAgc2V0TWV0YWRhdGEocGxheWxpc3QubWV0YWRhdGFbaW5kZXhdKTsKKyAgICAgICAg
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjbGVhckFjdGlvbkhhbmRsZXJzKCkKKyAg
ICAgICAgeworICAgICAgICAgICAgc2V0RW1wdHlBY3Rpb25IYW5kbGVycyhbXSk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBzZXRFbXB0eUFjdGlvbkhhbmRsZXJzKGhhbmRsZXJzKQor
ICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBhY3Rpb25zID0geworICAgICAgICAgICAgICAg
ICdwbGF5JyA6ICgpID0+IHsgcG9zdE1lc3NhZ2UoJ3BsYXkgaGFuZGxlcicpOyB9LAorCisgICAg
ICAgICAgICAgICAgJ3BhdXNlJyA6ICgpID0+IHsgcG9zdE1lc3NhZ2UoJ3BhdXNlIGhhbmRsZXIn
KSB9LAorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICdzZWVrdG8nIDogKGRldGFp
bHMpID0+IHsgcG9zdE1lc3NhZ2UoJ3NlZWt0byBoYW5kbGVyJykgfSwKKworICAgICAgICAgICAg
ICAgICdzZWVrZm9yd2FyZCcgOiAoZGV0YWlscykgPT4geyBwb3N0TWVzc2FnZSgnc2Vla2Zvcndh
cmQgaGFuZGxlcicpIH0sCisKKyAgICAgICAgICAgICAgICAnc2Vla2JhY2t3YXJkJyA6IChkZXRh
aWxzKSA9PiB7IHBvc3RNZXNzYWdlKCdzZWVrYmFja3dhcmQgaGFuZGxlcicpIH0sIAorCisgICAg
ICAgICAgICAgICAgJ3ByZXZpb3VzdHJhY2snIDogKCkgPT4geyBwb3N0TWVzc2FnZSgncHJldmlv
dXN0cmFjayBoYW5kbGVyJykgfSwgCisKKyAgICAgICAgICAgICAgICAnbmV4dHRyYWNrJyA6ICgp
ID0+IHsgcG9zdE1lc3NhZ2UoJ25leHR0cmFjayBoYW5kbGVyJykgfSwgCisgICAgICAgICAgICB9
OworCisgICAgICAgICAgICBPYmplY3Qua2V5cyhhY3Rpb25zKS5mb3JFYWNoKGFjdGlvbiA9PiB7
ICBuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLnNldEFjdGlvbkhhbmRsZXIoYWN0aW9uLCBudWxsKTsg
fSk7CisKKyAgICAgICAgICAgIGhhbmRsZXJzLmZvckVhY2goaGFuZGxlciA9PiB7CisgICAgICAg
ICAgICAgICAgaWYgKCFhY3Rpb25zW2hhbmRsZXJdKSB7CisgICAgICAgICAgICAgICAgICAgIGxv
ZyhgYXNrZWQgdG8gcmVnaXN0ZXIgaGFuZGxlciBmb3IgdW5rbm93biBhY3Rpb24gJyR7aGFuZGxl
cn0nYCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICBsb2coYHJlZ2lzdGVyaW5nICcke2hhbmRsZXJ9JyBoYW5kbGVyYCk7
CisgICAgICAgICAgICAgICAgbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5zZXRBY3Rpb25IYW5kbGVy
KGhhbmRsZXIsIGFjdGlvbnNbaGFuZGxlcl0pOyAKKyAgICAgICAgICAgIH0pOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gcG9zdE1lc3NhZ2UobWVzc2FnZSkKKyAgICAgICAgeworICAg
ICAgICAgICAgbG9nKGAke21lc3NhZ2V9YCkKKyAgICAgICAgICAgIGlmICh3aW5kb3cud2Via2l0
KQorICAgICAgICAgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5k
bGVyLnBvc3RNZXNzYWdlKG1lc3NhZ2UpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
cG9zdEV2ZW50KGV2dCkgCisgICAgICAgIHsKKyAgICAgICAgICAgIHBvc3RNZXNzYWdlKGAke2V2
dC50eXBlfSBldmVudGApOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmdW5jdGlvbiBs
b2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgbGV0IHNyYyA9IHBsYXlsaXN0Lm1ldGFkYXRh
WzBdLnVybDsKKyAgICAgICAgICAgIGlmICghd2luZG93LndlYmtpdCkKKyAgICAgICAgICAgICAg
ICBzcmMgPSBgLi4vV2ViS2l0TGVnYWN5L2lvcy8ke3NyY31gOworICAgICAgICAgICAgYXVkaW8u
c3JjID0gc3JjOworICAgICAgICAgICAgYXVkaW8ubG9hZCgpOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBmdW5jdGlvbiBsb2cobXNnKQorICAgICAgICB7CisgICAgICAgICAgICBsZXQg
ZXZlbnRMb2cgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXZlbnRzbG9nJykKKyAgICAgICAg
ICAgIGxldCBub3RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgICAg
ICBub3RlLmlubmVySFRNTCA9IG1zZzsKKyAgICAgICAgICAgIGV2ZW50TG9nLmluc2VydEJlZm9y
ZShub3RlLCBldmVudExvZy5maXJzdENoaWxkKTsKKyAgICAgICAgfQorCisgICAgICAgIAorICAg
ICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGV2dCA9PiB7CisgICAgICAgICAg
ICBhdWRpbyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdhdWRpbycpWzBdOworICAg
ICAgICAgICAgYXVkaW8uYWRkRXZlbnRMaXN0ZW5lcignY2FucGxheXRocm91Z2gnLCBwb3N0RXZl
bnQpOworICAgICAgICAgICAgYXVkaW8uYWRkRXZlbnRMaXN0ZW5lcigncGxheScsIHBvc3RFdmVu
dCk7CisgICAgICAgICAgICBhdWRpby5hZGRFdmVudExpc3RlbmVyKCdwYXVzZScsIHBvc3RFdmVu
dCk7CisgICAgICAgICAgICBhdWRpby5hZGRFdmVudExpc3RlbmVyKCdzZWVrZWQnLCBwb3N0RXZl
bnQpOworICAgICAgICB9LCBmYWxzZSk7CisKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorICAgIDxhdWRpbyBjb250cm9scz4gPC9hdWRpbz4KKyAgICA8YnI+CisgICAgPGJ1dHRvbiBv
bmNsaWNrPSJzZXRFbXB0eUFjdGlvbkhhbmRsZXJzKFsncGxheScsJ3BhdXNlJywnc2Vla3RvJ10p
Ij5FbXB0eSBQbGF5LCBQYXVzZSwgU2Vla1RvPC9idXR0b24+CisgICAgPGJyPgorICAgIDxidXR0
b24gb25jbGljaz0ic2V0RW1wdHlBY3Rpb25IYW5kbGVycyhbJ3BsYXknLCdwYXVzZScsJ3NlZWtm
b3J3YXJkJywnc2Vla2JhY2t3YXJkJ10pIj5FbXB0eSBQbGF5LCBQYXVzZSwgU2VlayBGb3J3YXJk
LCBTZWVrIEJhY2t3YXJkPC9idXR0b24+CisgICAgPGJyPgorICAgIDxidXR0b24gb25jbGljaz0i
bG9hZCgpIj5Mb2FkPC9idXR0b24+CisgICAgPGJyPgorICAgIDxidXR0b24gb25jbGljaz0ic2V0
UGxheWxpc3RNZXRhZGF0YSgwKSI+U2V0IE1ldGFkYXRhIDE8L2J1dHRvbj48YnV0dG9uIG9uY2xp
Y2s9InNldFBsYXlsaXN0TWV0YWRhdGEoMSkiPlNldCBNZXRhZGF0YSAyPC9idXR0b24+CisgICAg
PGJyPgorICAgIDxkaXYgaWQ9J2V2ZW50c2xvZyc+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419462</attachid>
            <date>2021-02-05 14:25:53 -0800</date>
            <delta_ts>2021-02-05 15:19:04 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-221431-20210205142553.patch</filename>
            <type>text/plain</type>
            <size>93745</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNDMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGI5MDc1ZTBiZjZlNmEy
NzMwOTQwZTBjNjMzN2M2ZTAzMGE2MDViNy4uNDVmYzM3OGQ5YzJlMGMxZTFiMGU0MzE0OWI3YWM3
MWYyNWIyZTBkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisyMDIxLTAyLTA0ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIENvbm5l
Y3QgTWVkaWFTZXNzaW9uIHdpdGggTWVkaWFSZW1vdGUgYW5kIE5vd1BsYXlpbmcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTQzMQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNzQwMDAzNjM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSmVyIE5vYmxl
LgorCisgICAgICAgIFJvdXRlIGFsbCByZW1vdGUgY29udHJvbCBjb21tYW5kcyB0byBuYXZpZ2F0
b3IubWVkaWFTZXNzaW9uIHdoZW4gaXQgaGFzIGFueSAKKyAgICAgICAgcmVnaXN0ZXJlZCBhY3Rp
b24gaGFuZGxlcnMsIGFuZCBwYXNzIG5hdmlnYXRvci5tZWRpYVNlc3Npb24ubWV0YWRhdGEgdG8g
Tm93UGxheWluZy4KKworICAgICAgICBUZXN0ZWQgd2l0aCBuZXcgQVBJIHRlc3RzIGluIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTWVkaWFTZXNzaW9uLm1tLgorCisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFJbWFnZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFJbWFnZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhSW1h
Z2U6OmRlY29kZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0
YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYU1ldGFkYXRhOjpzZXRUaXRsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYU1ldGFkYXRhOjpzZXRBcnRpc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFNZXRhZGF0YTo6c2V0QWxidW0pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFNZXRh
ZGF0YTo6c2V0QXJ0d29yayk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFN
ZXRhZGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFNZXRhZGF0YTo6dGl0bGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFNZXRhZGF0YTo6YXJ0aXN0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhTWV0YWRhdGE6OmFsYnVtIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhTWV0YWRhdGE6OmFydHdvcmsgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFNZXRhZGF0YTo6bWV0YWRhdGEgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNz
aW9uL01lZGlhTWV0YWRhdGFJbml0Lmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYU1ldGFkYXRh
SW5pdDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhTWV0YWRhdGFJbml0
OjpkZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpuZXh0TG9nSWRlbnRpZmllcik6CisgICAgICAgIChXZWJD
b3JlOjpsb2dDaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6OmxvZ0NsYXNzTmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpwbGF0Zm9ybUNvbW1hbmRGb3JNZWRpYVNlc3Npb25BY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uOjpNZWRpYVNlc3Npb24pOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTZXNzaW9uOjpzZXRNZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNlc3Npb246OnNldFBsYXliYWNrU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNz
aW9uOjpzZXRBY3Rpb25IYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6
c2V0UG9zaXRpb25TdGF0ZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFT
ZXNzaW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb246Omhhc0FjdGl2ZUFjdGlv
bkhhbmRsZXJzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6bG9nZ2Vy
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6bG9nSWRlbnRpZmllciBj
b25zdCk6CisgICAgICAgIChXVEY6OkxvZ0FyZ3VtZW50PFdlYkNvcmU6Ok1lZGlhU2Vzc2lvblBs
YXliYWNrU3RhdGU+Ojp0b1N0cmluZyk6CisgICAgICAgIChXVEY6OkxvZ0FyZ3VtZW50PFdlYkNv
cmU6Ok1lZGlhU2Vzc2lvbkFjdGlvbj46OnRvU3RyaW5nKToKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmRpZFJlY2VpdmVSZW1v
dGVDb250cm9sQ29tbWFuZCk6CisgICAgICAgICogaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OmRpZFJlY2VpdmVSZW1v
dGVDb250cm9sQ29tbWFuZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9u
Ojpub3dQbGF5aW5nSW5mbyBjb25zdCk6CisgICAgICAgICogaHRtbC9NZWRpYUVsZW1lbnRTZXNz
aW9uLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlQ29t
bWFuZExpc3RlbmVyOjpzY2hlZHVsZVN1cHBvcnRlZENvbW1hbmRzVXBkYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6YWRkU3VwcG9ydGVkQ29tbWFuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW1vdGVDb21tYW5kTGlzdGVuZXI6OnJlbW92ZVN1cHBvcnRlZENv
bW1hbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmg6CisgICAgICAgIChXZWJDb3Jl
OjpOb3dQbGF5aW5nSW5mbzo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0
Zm9ybU1lZGlhU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RW51bWVyYXRp
b25Ub1N0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Np
b24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFn
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6YWRk
U3VwcG9ydGVkQ29tbWFuZCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lv
bk1hbmFnZXI6OnJlbW92ZVN1cHBvcnRlZENvbW1hbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2NoZWR1bGVTZXNzaW9uU3RhdHVzVXBkYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2Vzc2lvbkNh
blByb2R1Y2VBdWRpb0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFu
YWdlckNvY29hOjphZGRTdXBwb3J0ZWRDb21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYTo6cmVtb3ZlU3VwcG9ydGVkQ29tbWFuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJbmZvKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvTWVkaWFSZW1vdGVTb2Z0TGluay5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vbWFjL01lZGlhUmVtb3RlU29mdExpbmsuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Jl
bW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om1lZGlhUmVtb3Rl
Q29tbWFuZEZvclBsYXRmb3JtQ29tbWFuZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVDb21t
YW5kTGlzdGVuZXJNYWM6OmRlZmF1bHRDb21tYW5kcyk6CisgICAgICAgIChXZWJDb3JlOjppc1Nl
ZWtDb21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYzo6
dXBkYXRlU3VwcG9ydGVkQ29tbWFuZHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlQ29tbWFu
ZExpc3RlbmVyTWFjOjpSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMpOgorCiAyMDIxLTAyLTA1ICBQ
YXRyaWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9y
OiBJbXBsZW1lbnQgYmFja2VuZCBzdXBwb3J0IGZvciBtYWludGFpbmluZyBhIGxpc3Qgb2YgR3Jp
ZCBsYXlvdXQgY29udGV4dHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IDA5YjEwY2ExMjc5ZDliODE1
NjZkYThmZmEyZTAxZTQ1ZDUwYjdiZmEuLmRjYjVjOGQ0MjBmOWY0ODY2ZTY4MDNlNDQ3MjUzMWZk
YTE5NDg4NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTAyLTA0
ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNd
IENvbm5lY3QgTWVkaWFTZXNzaW9uIHdpdGggTWVkaWFSZW1vdGUgYW5kIE5vd1BsYXlpbmcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTQzMQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNzQwMDAzNjM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSmVy
IE5vYmxlLgorCisgICAgICAgICogcGFsL3NwaS9tYWMvTWVkaWFSZW1vdGVTUEkuaDoKKwogMjAy
MS0wMi0wMSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29j
b2FdIERpc2FibGUgaW50ZXJzdGl0aWFsIGV2ZW50cyBvbiBBVlBsYXllckl0ZW0uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IDJmOTQxN2U1NmYxZDM1M2FmOGZjZGU1ZjM0NjFjMTEzZTM3Y2JjMzAuLjI1MjgzNDg1Nzk2
OGQ1NWE4YmU5NTY5ZWU4ZjMxNTMzNTgyM2UxOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAK
KzIwMjEtMDItMDQgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgW01hY10gQ29ubmVjdCBNZWRpYVNlc3Npb24gd2l0aCBNZWRpYVJlbW90ZSBhbmQgTm93
UGxheWluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjIxNDMxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NDAwMDM2Mz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBKZXIgTm9ibGUuCisKKyAgICAgICAgQWRkIGEgcHJpdmF0ZSBwcmVmZXJlbmNlIHNv
IHRoZSBuZXcgTWVkaWFTZXNzaW9uIEFQSSB0ZXN0IGNhbiBlbmFibGUgdGhlIGZlYXR1cmUuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW06CisgICAgICAg
ICgtW1dLUHJlZmVyZW5jZXMgX21lZGlhU2Vzc2lvbkVuYWJsZWRdKToKKyAgICAgICAgKC1bV0tQ
cmVmZXJlbmNlcyBfc2V0TWVkaWFTZXNzaW9uRW5hYmxlZDpdKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXNQcml2YXRlLmg6CisKIDIwMjEtMDItMDUgIEthdGUg
Q2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CiAKICAgICAgICAgQVNTRVJUSU9O
IEZBSUxFRDogQ29tcGxldGlvbiBoYW5kbGVyIHNob3VsZCBhbHdheXMgYmUgY2FsbGVkIHVuZGVy
IFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ojpmb3JFYWNoU2Vzc2lvbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFJbWFnZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFJbWFnZS5oCmluZGV4
IGFmMTE5NWVhZDBmYjIwMGYyYjVhYWFhZjA2Yjc4MGMyNjFlMmRhZGQuLjQ5MzI0MDBhMDJmODc2
OWQxOTQ4OWNkMzhhMmRhODAzYTQ4MWMyNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc2Vzc2lvbi9NZWRpYUltYWdlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsOCArMzMsMzMgQEAgc3RydWN0IE1lZGlh
SW1hZ2UgewogICAgIFN0cmluZyBzcmM7CiAgICAgU3RyaW5nIHNpemVzOwogICAgIFN0cmluZyB0
eXBlOworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYp
IGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxNZWRp
YUltYWdlPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
aW5saW5lIHZvaWQgTWVkaWFJbWFnZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7
CisgICAgZW5jb2RlciA8PCBzcmMgPDwgc2l6ZXMgPDwgdHlwZTsKK30KKwordGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gaW5saW5lIE9wdGlvbmFsPE1lZGlhSW1hZ2U+IE1lZGlhSW1hZ2U6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFN0cmluZyBzcmM7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShzcmMpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgU3RyaW5nIHNpemVzOwor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2l6ZXMpKQorICAgICAgICByZXR1cm4geyB9OworCisg
ICAgU3RyaW5nIHR5cGU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0eXBlKSkKKyAgICAgICAg
cmV0dXJuIHsgfTsKKworICAgIHJldHVybiBNZWRpYUltYWdlIHsgV1RGTW92ZShzcmMpLCBXVEZN
b3ZlKHNpemVzKSwgV1RGTW92ZSh0eXBlKSB9OworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUo
TUVESUFfU0VTU0lPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
ZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNl
c3Npb24vTWVkaWFNZXRhZGF0YS5jcHAKaW5kZXggYTZmNDQ5YzQyNjBmY2ZiN2NhNDZjMDZkMTk4
ZWM3ZTY1NjI4MWQ5ZC4uZjZmZjMxZmIwOGRkNDk4MWEzYmNlOTAzOTJiZGJkMmNkYTVmY2RiNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRh
ZGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFN
ZXRhZGF0YS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNjQsMjUgKzY0LDI4IEBAIHZvaWQgTWVkaWFNZXRhZGF0YTo6cmVzZXRNZWRp
YVNlc3Npb24oKQogCiB2b2lkIE1lZGlhTWV0YWRhdGE6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYg
dGl0bGUpCiB7Ci0gICAgaWYgKG1fdGl0bGUgPT0gdGl0bGUpCisgICAgaWYgKG1fbWV0YWRhdGEu
dGl0bGUgPT0gdGl0bGUpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3RpdGxlID0gdGl0bGU7CisK
KyAgICBtX21ldGFkYXRhLnRpdGxlID0gdGl0bGU7CiAgICAgbWV0YWRhdGFVcGRhdGVkKCk7CiB9
CiAKIHZvaWQgTWVkaWFNZXRhZGF0YTo6c2V0QXJ0aXN0KGNvbnN0IFN0cmluZyYgYXJ0aXN0KQog
ewotICAgIGlmIChtX2FydGlzdCA9PSBhcnRpc3QpCisgICAgaWYgKG1fbWV0YWRhdGEuYXJ0aXN0
ID09IGFydGlzdCkKICAgICAgICAgcmV0dXJuOwotICAgIG1fYXJ0aXN0ID0gYXJ0aXN0OworCisg
ICAgbV9tZXRhZGF0YS5hcnRpc3QgPSBhcnRpc3Q7CiAgICAgbWV0YWRhdGFVcGRhdGVkKCk7CiB9
CiAKIHZvaWQgTWVkaWFNZXRhZGF0YTo6c2V0QWxidW0oY29uc3QgU3RyaW5nJiBhbGJ1bSkKIHsK
LSAgICBpZiAobV9hbGJ1bSA9PSBhbGJ1bSkKKyAgICBpZiAobV9tZXRhZGF0YS5hbGJ1bSA9PSBh
bGJ1bSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fYWxidW0gPSBhbGJ1bTsKKworICAgIG1fbWV0
YWRhdGEuYWxidW0gPSBhbGJ1bTsKICAgICBtZXRhZGF0YVVwZGF0ZWQoKTsKIH0KIApAQCAtOTcs
NyArMTAwLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTWVkaWFNZXRhZGF0YTo6c2V0QXJ0d29yayhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBWZWMKICAgICAgICAgcmVzb2x2ZWRBcnR3
b3JrLnVuY2hlY2tlZEFwcGVuZChNZWRpYUltYWdlIHsgcmVzb2x2ZWRTcmMuc3RyaW5nKCksIGlt
YWdlLnNpemVzLCBpbWFnZS50eXBlIH0pOwogICAgIH0KIAotICAgIG1fYXJ0d29yayA9IFdURk1v
dmUocmVzb2x2ZWRBcnR3b3JrKTsKKyAgICBtX21ldGFkYXRhLmFydHdvcmsgPSBXVEZNb3ZlKHJl
c29sdmVkQXJ0d29yayk7CiAgICAgbWV0YWRhdGFVcGRhdGVkKCk7CiAgICAgcmV0dXJuIHsgfTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlh
TWV0YWRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0
YWRhdGEuaAppbmRleCAyNjRlZWNjYTk1MGIyMmVhNDUzYjcxZTQyZGZhODA0NjBhOTc2YmNhLi4z
MGUwOTNkNmQyN2RkYjc0MTUyODFlZThiNWQxMDA0ZWZjZmFhNWRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDYgKzI3
LDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQogCisjaW5jbHVkZSAiTWVkaWFNZXRh
ZGF0YUluaXQuaCIKICNpbmNsdWRlICJNZWRpYVNlc3Npb24uaCIKICNpbmNsdWRlIDx3dGYvT3B0
aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0zNCwxMCArMzUsOSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIERvY3VtZW50OwotY2xhc3MgTWVkaWFTZXNzaW9u
Owogc3RydWN0IE1lZGlhSW1hZ2U7Ci1zdHJ1Y3QgTWVkaWFNZXRhZGF0YUluaXQ7CisKK3VzaW5n
IE1lZGlhU2Vzc2lvbk1ldGFkYXRhID0gTWVkaWFNZXRhZGF0YUluaXQ7CiAKIGNsYXNzIE1lZGlh
TWV0YWRhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYU1ldGFkYXRhPiB7CiBwdWJsaWM6CkBA
IC00NywyNyArNDcsMjYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TWVkaWFTZXNzaW9uKE1lZGlh
U2Vzc2lvbiYpOwogICAgIHZvaWQgcmVzZXRNZWRpYVNlc3Npb24oKTsKIAotICAgIGNvbnN0IFN0
cmluZyYgdGl0bGUoKSBjb25zdCB7IHJldHVybiBtX3RpdGxlOyB9CisgICAgY29uc3QgU3RyaW5n
JiB0aXRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRhdGEudGl0bGU7IH0KICAgICB2b2lkIHNl
dFRpdGxlKGNvbnN0IFN0cmluZyYpOwogCi0gICAgY29uc3QgU3RyaW5nJiBhcnRpc3QoKSBjb25z
dCB7IHJldHVybiBtX2FydGlzdDsgfQorICAgIGNvbnN0IFN0cmluZyYgYXJ0aXN0KCkgY29uc3Qg
eyByZXR1cm4gbV9tZXRhZGF0YS5hcnRpc3Q7IH0KICAgICB2b2lkIHNldEFydGlzdChjb25zdCBT
dHJpbmcmKTsKIAotICAgIGNvbnN0IFN0cmluZyYgYWxidW0oKSBjb25zdCB7IHJldHVybiBtX2Fs
YnVtOyB9CisgICAgY29uc3QgU3RyaW5nJiBhbGJ1bSgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRh
dGEuYWxidW07IH0KICAgICB2b2lkIHNldEFsYnVtKGNvbnN0IFN0cmluZyYpOwogCi0gICAgY29u
c3QgVmVjdG9yPE1lZGlhSW1hZ2U+JiBhcnR3b3JrKCkgY29uc3QgeyByZXR1cm4gbV9hcnR3b3Jr
OyB9CisgICAgY29uc3QgVmVjdG9yPE1lZGlhSW1hZ2U+JiBhcnR3b3JrKCkgY29uc3QgeyByZXR1
cm4gbV9tZXRhZGF0YS5hcnR3b3JrOyB9CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0QXJ0d29y
ayhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgVmVjdG9yPE1lZGlhSW1hZ2U+JiYpOwogCisgICAg
Y29uc3QgTWVkaWFTZXNzaW9uTWV0YWRhdGEmIG1ldGFkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9t
ZXRhZGF0YTsgfQorCiBwcml2YXRlOgogICAgIE1lZGlhTWV0YWRhdGEoKTsKICAgICB2b2lkIG1l
dGFkYXRhVXBkYXRlZCgpOwogCiAgICAgV2Vha1B0cjxNZWRpYVNlc3Npb24+IG1fc2Vzc2lvbjsK
LSAgICBTdHJpbmcgbV90aXRsZTsKLSAgICBTdHJpbmcgbV9hcnRpc3Q7Ci0gICAgU3RyaW5nIG1f
YWxidW07Ci0gICAgVmVjdG9yPE1lZGlhSW1hZ2U+IG1fYXJ0d29yazsKKyAgICBNZWRpYVNlc3Np
b25NZXRhZGF0YSBtX21ldGFkYXRhOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YUluaXQuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGFJbml0LmgKaW5kZXggMDEyZWMy
ZDA5NWY5M2JiZmUyOGEzOGQ2M2FhZWE0MjEyNmFiNTZlNS4uNjY5ZGVmZmEyZDY5NDA4NWYwOGYx
MGRmMWI5MTZlZjQ0ZTg4NWUwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YUluaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhSW5pdC5oCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDggKzM2LDM3IEBAIHN0cnVj
dCBNZWRpYU1ldGFkYXRhSW5pdCB7CiAgICAgU3RyaW5nIGFydGlzdDsKICAgICBTdHJpbmcgYWxi
dW07CiAgICAgVmVjdG9yPE1lZGlhSW1hZ2U+IGFydHdvcms7CisKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPE1lZGlhTWV0YWRhdGFJbml0PiBkZWNvZGUoRGVj
b2RlciYpOwogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gaW5saW5lIHZvaWQgTWVkaWFN
ZXRhZGF0YUluaXQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29k
ZXIgPDwgdGl0bGUgPDwgYXJ0aXN0IDw8IGFsYnVtIDw8IGFydHdvcms7Cit9CisKK3RlbXBsYXRl
PGNsYXNzIERlY29kZXI+IGlubGluZSBPcHRpb25hbDxNZWRpYU1ldGFkYXRhSW5pdD4gTWVkaWFN
ZXRhZGF0YUluaXQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFN0cmluZyB0aXRs
ZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHRpdGxlKSkKKyAgICAgICAgcmV0dXJuIHsgfTsK
KworICAgIFN0cmluZyBhcnRpc3Q7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhcnRpc3QpKQor
ICAgICAgICByZXR1cm4geyB9OworCisgICAgU3RyaW5nIGFsYnVtOworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoYWxidW0pKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgVmVjdG9yPE1lZGlh
SW1hZ2U+IGFydHdvcms7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhcnR3b3JrKSkKKyAgICAg
ICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiBNZWRpYU1ldGFkYXRhSW5pdCB7IFdURk1vdmUo
dGl0bGUpLCBXVEZNb3ZlKGFydGlzdCksIFdURk1vdmUoYWxidW0pLCBXVEZNb3ZlKGFydHdvcmsp
IH07Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TRVNTSU9OKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAKaW5k
ZXggMWFiNjIyNDgzMmVlZmExMjkyZjEzODYxM2I0MWYwNzcwOTk2MjNjZS4uMjQ4YjEzNzU2ODMy
OWZhOTk0MmJlZDVhZWViNjBkNDkzM2RiMDk0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDExICsyOCw0NiBAQAog
CiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCiAKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5j
bHVkZSAiTWVkaWFNZXRhZGF0YS5oIgogI2luY2x1ZGUgIk5hdmlnYXRvci5oIgorI2luY2x1ZGUg
IlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K3N0YXRpYyBjb25zdCB2b2lkKiBuZXh0TG9nSWRlbnRpZmllcigpCit7CisgICAgc3RhdGljIHVp
bnQ2NF90IGxvZ0lkZW50aWZpZXIgPSBjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpOwor
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPigrK2xvZ0lkZW50aWZpZXIp
OworfQorCitzdGF0aWMgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIHsgcmV0dXJuIExvZ01l
ZGlhOyB9CitzdGF0aWMgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgeyByZXR1cm4gIk1lZGlh
U2Vzc2lvbiI7IH0KKworc3RhdGljIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9s
Q29tbWFuZFR5cGUgcGxhdGZvcm1Db21tYW5kRm9yTWVkaWFTZXNzaW9uQWN0aW9uKE1lZGlhU2Vz
c2lvbkFjdGlvbiBhY3Rpb24pCit7CisgICAgc3RhdGljIGNvbnN0IGF1dG8gY29tbWFuZE1hcCA9
IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAgIHVzaW5nIEFjdGlvblRvQ29tbWFuZE1h
cCA9IEhhc2hNYXA8TWVkaWFTZXNzaW9uQWN0aW9uLCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVt
b3RlQ29udHJvbENvbW1hbmRUeXBlLCBXVEY6OkludEhhc2g8TWVkaWFTZXNzaW9uQWN0aW9uPiwg
V1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxNZWRpYVNlc3Npb25BY3Rpb24+PjsKKworICAgICAg
ICByZXR1cm4gQWN0aW9uVG9Db21tYW5kTWFwIHsKKyAgICAgICAgICAgIHsgTWVkaWFTZXNzaW9u
QWN0aW9uOjpQbGF5LCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheUNvbW1hbmQgfSwKKyAgICAg
ICAgICAgIHsgTWVkaWFTZXNzaW9uQWN0aW9uOjpQYXVzZSwgUGxhdGZvcm1NZWRpYVNlc3Npb246
OlBhdXNlQ29tbWFuZCB9LAorICAgICAgICAgICAgeyBNZWRpYVNlc3Npb25BY3Rpb246OlNlZWtm
b3J3YXJkLCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEZvcndhcmRDb21tYW5kIH0sCisgICAg
ICAgICAgICB7IE1lZGlhU2Vzc2lvbkFjdGlvbjo6U2Vla2JhY2t3YXJkLCBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6U2tpcEJhY2t3YXJkQ29tbWFuZCB9LAorICAgICAgICAgICAgeyBNZWRpYVNlc3Np
b25BY3Rpb246OlByZXZpb3VzdHJhY2ssIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOZXh0VHJhY2tD
b21tYW5kIH0sCisgICAgICAgICAgICB7IE1lZGlhU2Vzc2lvbkFjdGlvbjo6TmV4dHRyYWNrLCBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UHJldmlvdXNUcmFja0NvbW1hbmQgfSwKKyAgICAgICAgICAg
IHsgTWVkaWFTZXNzaW9uQWN0aW9uOjpTdG9wLCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U3RvcENv
bW1hbmQgfSwKKyAgICAgICAgICAgIHsgTWVkaWFTZXNzaW9uQWN0aW9uOjpTZWVrdG8sIFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpTZWVrVG9QbGF5YmFja1Bvc2l0aW9uQ29tbWFuZCB9LAorICAgICAg
ICB9OworICAgIH0oKSk7CisKKyAgICBhdXRvIGl0ID0gY29tbWFuZE1hcC5nZXQoKS5maW5kKGFj
dGlvbik7CisgICAgaWYgKGl0ICE9IGNvbW1hbmRNYXAuZ2V0KCkuZW5kKCkpCisgICAgICAgIHJl
dHVybiBpdC0+dmFsdWU7CisKKyAgICByZXR1cm4gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5vQ29t
bWFuZDsKK30KKwogUmVmPE1lZGlhU2Vzc2lvbj4gTWVkaWFTZXNzaW9uOjpjcmVhdGUoTmF2aWdh
dG9yJiBuYXZpZ2F0b3IpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFTZXNzaW9u
KG5hdmlnYXRvcikpOwpAQCAtNDEsMTIgKzc2LDE4IEBAIFJlZjxNZWRpYVNlc3Npb24+IE1lZGlh
U2Vzc2lvbjo6Y3JlYXRlKE5hdmlnYXRvciYgbmF2aWdhdG9yKQogTWVkaWFTZXNzaW9uOjpNZWRp
YVNlc3Npb24oTmF2aWdhdG9yJiBuYXZpZ2F0b3IpCiAgICAgOiBtX25hdmlnYXRvcihtYWtlV2Vh
a1B0cihuYXZpZ2F0b3IpKQogeworICAgIG1fbG9nZ2VyID0gbWFrZVJlZlB0cihEb2N1bWVudDo6
c2hhcmVkTG9nZ2VyKCkpOworICAgIG1fbG9nSWRlbnRpZmllciA9IG5leHRMb2dJZGVudGlmaWVy
KCk7CisKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwogfQogCiBNZWRpYVNlc3Npb246
On5NZWRpYVNlc3Npb24oKSA9IGRlZmF1bHQ7CiAKIHZvaWQgTWVkaWFTZXNzaW9uOjpzZXRNZXRh
ZGF0YShSZWZQdHI8TWVkaWFNZXRhZGF0YT4mJiBtZXRhZGF0YSkKIHsKKyAgICBBTFdBWVNfTE9H
KExPR0lERU5USUZJRVIpOworCiAgICAgaWYgKG1fbWV0YWRhdGEpCiAgICAgICAgIG1fbWV0YWRh
dGEtPnJlc2V0TWVkaWFTZXNzaW9uKCk7CiAgICAgbV9tZXRhZGF0YSA9IFdURk1vdmUobWV0YWRh
dGEpOwpAQCAtNjAsNiArMTAxLDggQEAgdm9pZCBNZWRpYVNlc3Npb246OnNldFBsYXliYWNrU3Rh
dGUoTWVkaWFTZXNzaW9uUGxheWJhY2tTdGF0ZSBzdGF0ZSkKICAgICBpZiAobV9wbGF5YmFja1N0
YXRlID09IHN0YXRlKQogICAgICAgICByZXR1cm47CiAKKyAgICBBTFdBWVNfTE9HKExPR0lERU5U
SUZJRVIsIHN0YXRlKTsKKwogICAgIGF1dG8gY3VycmVudFBvc2l0aW9uID0gdGhpcy0+Y3VycmVu
dFBvc2l0aW9uKCk7CiAgICAgaWYgKG1fcG9zaXRpb25TdGF0ZSAmJiBjdXJyZW50UG9zaXRpb24p
IHsKICAgICAgICAgbV9wb3NpdGlvblN0YXRlLT5wb3NpdGlvbiA9ICpjdXJyZW50UG9zaXRpb247
CkBAIC03MCwxMCArMTEzLDE4IEBAIHZvaWQgTWVkaWFTZXNzaW9uOjpzZXRQbGF5YmFja1N0YXRl
KE1lZGlhU2Vzc2lvblBsYXliYWNrU3RhdGUgc3RhdGUpCiAKIHZvaWQgTWVkaWFTZXNzaW9uOjpz
ZXRBY3Rpb25IYW5kbGVyKE1lZGlhU2Vzc2lvbkFjdGlvbiBhY3Rpb24sIFJlZlB0cjxNZWRpYVNl
c3Npb25BY3Rpb25IYW5kbGVyPiYmIGhhbmRsZXIpCiB7Ci0gICAgaWYgKGhhbmRsZXIpCisgICAg
aWYgKGhhbmRsZXIpIHsKKyAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiYWRkaW5n
ICIsIGFjdGlvbik7CiAgICAgICAgIG1fYWN0aW9uSGFuZGxlcnMuc2V0KGFjdGlvbiwgaGFuZGxl
cik7Ci0gICAgZWxzZQotICAgICAgICBtX2FjdGlvbkhhbmRsZXJzLnJlbW92ZShhY3Rpb24pOwor
ICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5hZGRT
dXBwb3J0ZWRDb21tYW5kKHBsYXRmb3JtQ29tbWFuZEZvck1lZGlhU2Vzc2lvbkFjdGlvbihhY3Rp
b24pKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAobV9hY3Rpb25IYW5kbGVycy5jb250YWlu
cyhhY3Rpb24pKSB7CisgICAgICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJyZW1v
dmluZyAiLCBhY3Rpb24pOworICAgICAgICAgICAgbV9hY3Rpb25IYW5kbGVycy5yZW1vdmUoYWN0
aW9uKTsKKyAgICAgICAgfQorICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNo
YXJlZE1hbmFnZXIoKS5yZW1vdmVTdXBwb3J0ZWRDb21tYW5kKHBsYXRmb3JtQ29tbWFuZEZvck1l
ZGlhU2Vzc2lvbkFjdGlvbihhY3Rpb24pKTsKKyAgICB9CisgICAgCiAgICAgYWN0aW9uSGFuZGxl
cnNVcGRhdGVkKCk7CiB9CiAKQEAgLTg5LDYgKzE0MCw4IEBAIFJlZlB0cjxNZWRpYVNlc3Npb25B
Y3Rpb25IYW5kbGVyPiBNZWRpYVNlc3Npb246OmhhbmRsZXJGb3JBY3Rpb24oTWVkaWFTZXNzaW9u
QWN0CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IE1lZGlhU2Vzc2lvbjo6c2V0UG9zaXRpb25TdGF0ZShP
cHRpb25hbDxNZWRpYVBvc2l0aW9uU3RhdGU+JiYgc3RhdGUpCiB7CisgICAgQUxXQVlTX0xPRyhM
T0dJREVOVElGSUVSKTsKKwogICAgIGlmICghc3RhdGUpIHsKICAgICAgICAgbV9wb3NpdGlvblN0
YXRlID0gV1RGOjpudWxsb3B0OwogICAgICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaAppbmRleCAzZjY0ZjNi
MDI0Njg0ZTRmN2VjNjQ0ODdiNDE3ZjVlZDE3M2E3OTA5Li40ZjRiZTQ3NzI2NDQwODZiNzdkNjFk
OWY1YjA4MjNhMTVkMDUwNTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNywxMCArMjcsMTQgQEAKIAogI2lmIEVOQUJMRShN
RURJQV9TRVNTSU9OKQogCisjaW5jbHVkZSAiSlNNZWRpYVBvc2l0aW9uU3RhdGUuaCIKKyNpbmNs
dWRlICJKU01lZGlhU2Vzc2lvbkFjdGlvbi5oIgorI2luY2x1ZGUgIkpTTWVkaWFTZXNzaW9uUGxh
eWJhY2tTdGF0ZS5oIgogI2luY2x1ZGUgIk1lZGlhUG9zaXRpb25TdGF0ZS5oIgogI2luY2x1ZGUg
Ik1lZGlhU2Vzc2lvbkFjdGlvbi5oIgogI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbkFjdGlvbkhhbmRs
ZXIuaCIKICNpbmNsdWRlICJNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRlLmgiCisjaW5jbHVkZSA8
d3RmL0xvZ2dlci5oPgogI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CiAjaW5jbHVkZSA8
d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgpAQCAtNTcsMTMgKzYx
LDE4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxkb3VibGU+IGN1cnJl
bnRQb3NpdGlvbigpIGNvbnN0OwogCiAgICAgdm9pZCBtZXRhZGF0YVVwZGF0ZWQoKTsKKwogICAg
IHZvaWQgYWN0aW9uSGFuZGxlcnNVcGRhdGVkKCk7CiAgICAgYm9vbCBoYXNBY3Rpb25IYW5kbGVy
KE1lZGlhU2Vzc2lvbkFjdGlvbikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPE1l
ZGlhU2Vzc2lvbkFjdGlvbkhhbmRsZXI+IGhhbmRsZXJGb3JBY3Rpb24oTWVkaWFTZXNzaW9uQWN0
aW9uKSBjb25zdDsKKyAgICBib29sIGhhc0FjdGl2ZUFjdGlvbkhhbmRsZXJzKCkgY29uc3QgeyBy
ZXR1cm4gIW1fYWN0aW9uSGFuZGxlcnMuaXNFbXB0eSgpOyB9CiAKIHByaXZhdGU6CiAgICAgZXhw
bGljaXQgTWVkaWFTZXNzaW9uKE5hdmlnYXRvciYpOwogCisgICAgY29uc3QgTG9nZ2VyJiBsb2dn
ZXIoKSBjb25zdCB7IHJldHVybiAqbV9sb2dnZXIuZ2V0KCk7IH0KKyAgICBjb25zdCB2b2lkKiBs
b2dJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9CisKICAgICBX
ZWFrUHRyPE5hdmlnYXRvcj4gbV9uYXZpZ2F0b3I7CiAgICAgUmVmUHRyPE1lZGlhTWV0YWRhdGE+
IG1fbWV0YWRhdGE7CiAgICAgTWVkaWFTZXNzaW9uUGxheWJhY2tTdGF0ZSBtX3BsYXliYWNrU3Rh
dGUgeyBNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRlOjpOb25lIH07CkBAIC03MSw2ICs4MCwyMCBA
QCBwcml2YXRlOgogICAgIE9wdGlvbmFsPGRvdWJsZT4gbV9sYXN0UmVwb3J0ZWRQb3NpdGlvbjsK
ICAgICBNb25vdG9uaWNUaW1lIG1fdGltZUF0TGFzdFBvc2l0aW9uVXBkYXRlOwogICAgIEhhc2hN
YXA8TWVkaWFTZXNzaW9uQWN0aW9uLCBSZWZQdHI8TWVkaWFTZXNzaW9uQWN0aW9uSGFuZGxlcj4s
IFdURjo6SW50SGFzaDxNZWRpYVNlc3Npb25BY3Rpb24+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJh
aXRzPE1lZGlhU2Vzc2lvbkFjdGlvbj4+IG1fYWN0aW9uSGFuZGxlcnM7CisgICAgUmVmUHRyPGNv
bnN0IExvZ2dlcj4gbV9sb2dnZXI7CisgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOwor
fTsKKworfQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgTG9nQXJndW1l
bnQ8V2ViQ29yZTo6TWVkaWFTZXNzaW9uUGxheWJhY2tTdGF0ZT4geworICAgIHN0YXRpYyBTdHJp
bmcgdG9TdHJpbmcoV2ViQ29yZTo6TWVkaWFTZXNzaW9uUGxheWJhY2tTdGF0ZSBzdGF0ZSkgeyBy
ZXR1cm4gY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoc3RhdGUpOyB9Cit9OworCit0ZW1wbGF0
ZTw+IHN0cnVjdCBMb2dBcmd1bWVudDxXZWJDb3JlOjpNZWRpYVNlc3Npb25BY3Rpb24+IHsKKyAg
ICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkFjdGlvbiBhY3Rp
b24pIHsgcmV0dXJuIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKGFjdGlvbik7IH0KIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9NZWRpYVJlbW90
ZVNQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL01lZGlhUmVtb3RlU1BJLmgK
aW5kZXggNjUxNWMwZDc2ZjA1ZGEwMDYxODBhMmE1NzUxM2VmMmU2NDVjODFlNC4uMGZiN2JiNGY3
MDAyNzg1NzRiMzY0ZGRiNTI1MDAwMGI4NTRlN2U4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9zcGkvbWFjL01lZGlhUmVtb3RlU1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9zcGkvbWFjL01lZGlhUmVtb3RlU1BJLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTIsNiArOTIsOCBAQCBlbnVtIHsKIHR5
cGVkZWYgdWludDMyX3QgTVJOb3dQbGF5aW5nQ2xpZW50VmlzaWJpbGl0eTsKIAogdHlwZWRlZiB1
aW50MzJfdCBNUk1lZGlhUmVtb3RlRXJyb3I7Cit0eXBlZGVmIHVpbnQzMl90IE1SU2VuZENvbW1h
bmRBcHBPcHRpb25zOwordHlwZWRlZiB1aW50MzJfdCBNUlNlbmRDb21tYW5kRXJyb3I7CiB0eXBl
ZGVmIHN0cnVjdCBfTVJPcmlnaW4gKk1ST3JpZ2luUmVmOwogdHlwZWRlZiBzdHJ1Y3QgX01STWVk
aWFSZW1vdGVDb21tYW5kSW5mbyAqTVJNZWRpYVJlbW90ZUNvbW1hbmRJbmZvUmVmOwogdHlwZWRl
ZiB2b2lkICpNUk5vd1BsYXlpbmdDbGllbnRSZWY7CkBAIC0xMDMsOCArMTA1LDEwIEBAIFdURl9F
WFRFUk5fQ19CRUdJTgogCiB2b2lkKiBNUk1lZGlhUmVtb3RlQWRkQXN5bmNDb21tYW5kSGFuZGxl
ckJsb2NrKE1STWVkaWFSZW1vdGVBc3luY0NvbW1hbmRIYW5kbGVyQmxvY2spOwogdm9pZCBNUk1l
ZGlhUmVtb3RlUmVtb3ZlQ29tbWFuZEhhbmRsZXJCbG9jayh2b2lkICpvYnNlcnZlcik7Ci12b2lk
IE1STWVkaWFSZW1vdGVTZXRTdXBwb3J0ZWRDb21tYW5kcyhDRkFycmF5UmVmIGNvbW1hbmRzLCBN
Uk9yaWdpblJlZiwgZGlzcGF0Y2hfcXVldWVfdCByZXBseVEsIHZvaWQoXmNvbXBsZXRpb24pKE1S
TWVkaWFSZW1vdGVFcnJvciBlcnIpKTsKK3ZvaWQgTVJNZWRpYVJlbW90ZVNldFN1cHBvcnRlZENv
bW1hbmRzKENGQXJyYXlSZWYsIE1ST3JpZ2luUmVmLCBkaXNwYXRjaF9xdWV1ZV90LCB2b2lkKF5j
b21wbGV0aW9uKShNUk1lZGlhUmVtb3RlRXJyb3IpKTsKK3ZvaWQgTVJNZWRpYVJlbW90ZUdldFN1
cHBvcnRlZENvbW1hbmRzRm9yT3JpZ2luKE1ST3JpZ2luUmVmLCBkaXNwYXRjaF9xdWV1ZV90LCB2
b2lkKF5jb21wbGV0aW9uKShDRkFycmF5UmVmKSk7CiB2b2lkIE1STWVkaWFSZW1vdGVTZXROb3dQ
bGF5aW5nVmlzaWJpbGl0eShNUk9yaWdpblJlZiwgTVJOb3dQbGF5aW5nQ2xpZW50VmlzaWJpbGl0
eSk7CitCb29sZWFuIE1STWVkaWFSZW1vdGVTZW5kQ29tbWFuZFRvQXBwKE1STWVkaWFSZW1vdGVD
b21tYW5kLCBDRkRpY3Rpb25hcnlSZWYsIE1ST3JpZ2luUmVmLCBDRlN0cmluZ1JlZiwgTVJTZW5k
Q29tbWFuZEFwcE9wdGlvbnMsIGRpc3BhdGNoX3F1ZXVlX3QsIHZvaWQoXmNvbXBsZXRpb24pKE1S
U2VuZENvbW1hbmRFcnJvciwgQ0ZBcnJheVJlZikpOwogCiAjcHJhZ21hIG1hcmsgLSBNUk9yaWdp
bgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggZmE2YzI5ZjRiNGJhZmY0MWI3MDhmMjIwYjc2MGZjOTJlZTQyZDBhMS4uYmQzYmMx
NjBkOGJhZjQ3YjQxNjIyODgwNzc2NTYwMmI1ZDJiNDQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM5LDYgKzEzOSwxMCBA
QAogCQkwNzdBRjE0MzE4RjRCMUJCMDAwMUVENjEgLyogU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1
ZU1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc3
QUYxNDExOEY0QjFCQjAwMDFFRDYxIC8qIFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVNYWMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwNzdCNjQx
MzFCOTRGMTJFMDAzRTlBRDUgLyogTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3N0I2NDExMUI5NEYx
MkUwMDNFOUFENSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3N0I2NDE3MUI5NUY3MDMw
MDNFOUFENSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc3QjY0MTUxQjk1RjcwMzAwM0U5QUQ1IC8qIE1l
ZGlhUGxheWJhY2tUYXJnZXRNb2NrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJMDc4Mjg5NDgyNUMyM0ZFNTAwQTdCQTAzIC8qIE1lZGlhTWV0YWRh
dGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERERF
QTJEMjUzOENFMDQwMEExMzAwQyAvKiBNZWRpYU1ldGFkYXRhLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMDc4Mjg5NEEyNUMzNkZDRjAwQTdCQTAz
IC8qIE1lZGlhU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0REREVBMjMyNTM4Q0Q4MDAwQTEzMDBDIC8qIE1lZGlhU2Vzc2lvbi5oICovOyB9
OworCQkwNzgyODk0QjI1QzM2RkVEMDBBN0JBMDMgLyogTWVkaWFJbWFnZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0REREVBMzIyNTM4Q0UzNTAwQTEz
MDBDIC8qIE1lZGlhSW1hZ2UuaCAqLzsgfTsKKwkJMDc4Mjg5NEMyNUMzNzAwQjAwQTdCQTAzIC8q
IE1lZGlhTWV0YWRhdGFJbml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRERERUEzMDI1MzhDRTFFMDBBMTMwMEMgLyogTWVkaWFNZXRhZGF0YUluaXQu
aCAqLzsgfTsKIAkJMDc4MzIyODUxODAxM0VEODAwOTk5RTBDIC8qIE1lZGlhU3RyZWFtQXVkaW9T
b3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3
ODMyMjgzMTgwMTNFRDgwMDk5OUUwQyAvKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmggKi87IH07
CiAJCTA3ODQ2MzQzMTQ1QjE1MUEwMEE1OERGMSAvKiBKU1RyYWNrRXZlbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3ODQ2MzQxMTQ1QjE1MUEwMEE1
OERGMSAvKiBKU1RyYWNrRXZlbnQuaCAqLzsgfTsKIAkJMDc4NDYzODUxNDVCMUI4RTAwQTU4REYx
IC8qIEpTVHJhY2tDdXN0b20uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3ODQ2Mzg0MTQ1QjFCOEUwMEE1OERGMSAvKiBKU1RyYWNrQ3VzdG9tLmggKi87
IH07CkBAIC0zMzcwMiwxMCArMzM3MDYsMTMgQEAKIAkJCQlFNDQ2MTNBRDBDRDYzMzEwMDBGQURB
NzUgLyogTWVkaWFFcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEUxOTU5MjIwQTM5REFCQTAw
MjIwRkU1IC8qIE1lZGlhRmVhdHVyZU5hbWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwN0E2RDFF
QzE0OTExMzc3MDAwNTFEMEMgLyogTWVkaWFGcmFnbWVudFVSSVBhcnNlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMDc4Mjg5NEIyNUMzNkZFRDAwQTdCQTAzIC8qIE1lZGlhSW1hZ2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUNERjRCNzFBMUUwMUQzRDAwMEUyMzVBMiAvKiBNZWRpYUtleVNlc3Npb25U
eXBlLmlkbCBpbiBIZWFkZXJzICovLAogCQkJCUNERjRCNzI4MUUwM0M1NzMwMEUyMzVBMiAvKiBN
ZWRpYUtleXNSZXF1aXJlbWVudC5pZGwgaW4gSGVhZGVycyAqLywKIAkJCQlDREY0QjcxODFFMDFD
QjkxMDBFMjM1QTIgLyogTWVkaWFLZXlzUmVzdHJpY3Rpb25zLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBOEVBODAwRTBBMTk1MTZFMDBBOEVGNUYgLyogTWVkaWFMaXN0LmggaW4gSGVhZGVycyAqLywK
KwkJCQkwNzgyODk0ODI1QzIzRkU1MDBBN0JBMDMgLyogTWVkaWFNZXRhZGF0YS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMDc4Mjg5NEMyNUMzNzAwQjAwQTdCQTAzIC8qIE1lZGlhTWV0YWRhdGFJbml0
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1RUJCODkzMTFDNzc3N0ZGMDBDNjVENDEgLyogTWVkaWFQ
YXlsb2FkLmggaW4gSGVhZGVycyAqLywKIAkJCQkwN0UzREZEMTFBOUU3ODY1MDA3NjRDQTggLyog
TWVkaWFQbGF5YmFja1RhcmdldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc5MjE2NTUxQUE1NjBB
QTAwQTNDMDQ5IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRDbGllbnQuaCBpbiBIZWFkZXJzICovLApA
QCAtMzM3NDYsNiArMzM3NTMsNyBAQAogCQkJCTFCMTI0RDhEMUQzODBCNzAwMEVDREZCMCAvKiBN
ZWRpYVNhbXBsZUFWRk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQkVBRUFEMTlEOTJCNkMw
MEJFQkE4OCAvKiBNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTE3RDI3NUUxRUFDNTc5ODAwQkYwMUU3IC8qIE1lZGlhU2VsZWN0aW9uT3B0aW9uLmggaW4g
SGVhZGVycyAqLywKKwkJCQkwNzgyODk0QTI1QzM2RkNGMDBBN0JBMDMgLyogTWVkaWFTZXNzaW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTZFQ0FFNTI1QjU4Q0M0MDBCMzREQTUgLyogTWVkaWFT
ZXNzaW9uR3JvdXBJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREE5NTkzRjI0MTJC
QUUwMDA5MTBFRUYgLyogTWVkaWFTZXNzaW9uSGVscGVySU9TLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MTQ0NjBBMjI0MTI5OTQ1MDA4MTRCRTcgLyogTWVkaWFTZXNzaW9uSWRlbnRpZmllci5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRl
eCA2OTk0MTg0NTA4MTIzYTc3MTI1N2NiZWJmYWRlNmRiMzNhYjg0MjRkLi42YjRiZWI3YzZkMTRl
NWYzOWJiYmU1YzFiMzA5NjY0MjI1ZjdmYWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA3LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC03NTE5LDYgKzc1MTksNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
UmVtbwogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgY29tbWFuZCk7CiAKICAgICBVc2Vy
R2VzdHVyZUluZGljYXRvciByZW1vdGVDb250cm9sVXNlckdlc3R1cmUoUHJvY2Vzc2luZ1VzZXJH
ZXN0dXJlLCAmZG9jdW1lbnQoKSk7CisgICAgZG91YmxlIG9mZnNldCA9IDE1OwogICAgIHN3aXRj
aCAoY29tbWFuZCkgewogICAgIGNhc2UgUGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXlDb21tYW5k
OgogICAgICAgICBwbGF5KCk7CkBAIC03NTQwLDYgKzc1NDEsMTYgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Np
b246OlJlbW8KICAgICBjYXNlIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRTZWVraW5nRm9yd2Fy
ZENvbW1hbmQ6CiAgICAgICAgIGVuZFNjYW5uaW5nKCk7CiAgICAgICAgIGJyZWFrOworICAgIGNh
c2UgUGxhdGZvcm1NZWRpYVNlc3Npb246OlNraXBGb3J3YXJkQ29tbWFuZDoKKyAgICAgICAgaWYg
KGFyZ3VtZW50KQorICAgICAgICAgICAgb2Zmc2V0ID0gYXJndW1lbnQtPmFzRG91YmxlOworICAg
ICAgICBoYW5kbGVTZWVrVG9QbGF5YmFja1Bvc2l0aW9uKG9mZnNldCk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgUGxhdGZvcm1NZWRpYVNlc3Npb246OlNraXBCYWNrd2FyZENvbW1hbmQ6Cisg
ICAgICAgIGlmIChhcmd1bWVudCkKKyAgICAgICAgICAgIG9mZnNldCA9IGFyZ3VtZW50LT5hc0Rv
dWJsZTsKKyAgICAgICAgaGFuZGxlU2Vla1RvUGxheWJhY2tQb3NpdGlvbigwIC0gb2Zmc2V0KTsK
KyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2Vla1RvUGxh
eWJhY2tQb3NpdGlvbkNvbW1hbmQ6CiAgICAgICAgIEFTU0VSVChhcmd1bWVudCk7CiAgICAgICAg
IGlmIChhcmd1bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVt
ZW50U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24u
Y3BwCmluZGV4IDU4ZDQyZWNlNDEyNmQ5YzZiMzQxODgwYzBkYTcwMzNhNDkwY2UwNWMuLmQxYzAz
NzM4OGUxYzc0M2E4N2IwOGM5MjkwYmQzOTM4ZWEzODY3MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE0LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NCw2ICs1NCwxMiBAQAogI2luY2x1ZGUgIlNv
dXJjZUJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAorI2lm
IEVOQUJMRShNRURJQV9TRVNTSU9OKQorI2luY2x1ZGUgIk1lZGlhTWV0YWRhdGEuaCIKKyNpbmNs
dWRlICJNZWRpYVNlc3Npb24uaCIKKyNpbmNsdWRlICJOYXZpZ2F0b3JNZWRpYVNlc3Npb24uaCIK
KyNlbmRpZgorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlICJBdWRpb1Nlc3Np
b24uaCIKICNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKQEAgLTEwMjEsNiAr
MTAyNyw3MCBAQCBib29sIE1lZGlhRWxlbWVudFNlc3Npb246OmFsbG93c1BsYXliYWNrQ29udHJv
bHNGb3JBdXRvcGxheWluZ0F1ZGlvKCkgY29uc3QKICAgICByZXR1cm4gcGFnZSAmJiBwYWdlLT5h
bGxvd3NQbGF5YmFja0NvbnRyb2xzRm9yQXV0b3BsYXlpbmdBdWRpbygpOwogfQogCisjaWYgRU5B
QkxFKE1FRElBX1NFU1NJT04pCit2b2lkIE1lZGlhRWxlbWVudFNlc3Npb246OmRpZFJlY2VpdmVS
ZW1vdGVDb250cm9sQ29tbWFuZChSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgY29tbWFuZFR5cGUs
IGNvbnN0IFJlbW90ZUNvbW1hbmRBcmd1bWVudCogYXJndW1lbnQpCit7CisgICAgYXV0byogd2lu
ZG93ID0gbV9lbGVtZW50LmRvY3VtZW50KCkuZG9tV2luZG93KCk7CisgICAgYXV0byogc2Vzc2lv
biA9IHdpbmRvdyA/ICZOYXZpZ2F0b3JNZWRpYVNlc3Npb246Om1lZGlhU2Vzc2lvbih3aW5kb3ct
Pm5hdmlnYXRvcigpKSA6IG51bGxwdHI7CisgICAgaWYgKCFzZXNzaW9uIHx8ICFzZXNzaW9uLT5o
YXNBY3RpdmVBY3Rpb25IYW5kbGVycygpKSB7CisgICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoY29tbWFuZFR5cGUsIGFyZ3VtZW50KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE1lZGlhU2Vzc2lvbkFjdGlvbkRldGFpbHMg
YWN0aW9uRGV0YWlsczsKKyAgICBzd2l0Y2ggKGNvbW1hbmRUeXBlKSB7CisgICAgY2FzZSBOb0Nv
bW1hbmQ6CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFBsYXlDb21tYW5kOgorICAgICAgICBh
Y3Rpb25EZXRhaWxzLmFjdGlvbiA9IE1lZGlhU2Vzc2lvbkFjdGlvbjo6UGxheTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBQYXVzZUNvbW1hbmQ6CisgICAgICAgIGFjdGlvbkRldGFpbHMuYWN0
aW9uID0gTWVkaWFTZXNzaW9uQWN0aW9uOjpQYXVzZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBTdG9wQ29tbWFuZDoKKyAgICAgICAgYWN0aW9uRGV0YWlscy5hY3Rpb24gPSBNZWRpYVNlc3Np
b25BY3Rpb246OlN0b3A7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVG9nZ2xlUGxheVBhdXNl
Q29tbWFuZDoKKyAgICAgICAgYWN0aW9uRGV0YWlscy5hY3Rpb24gPSBtX2VsZW1lbnQucGF1c2Vk
KCkgPyBNZWRpYVNlc3Npb25BY3Rpb246OlBsYXkgOiBNZWRpYVNlc3Npb25BY3Rpb246OlBhdXNl
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNlZWtUb1BsYXliYWNrUG9zaXRpb25Db21tYW5k
OgorICAgICAgICBBU1NFUlQoYXJndW1lbnQpOworICAgICAgICBpZiAoIWFyZ3VtZW50KQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBhY3Rpb25EZXRhaWxzLmFjdGlvbiA9IE1lZGlhU2Vz
c2lvbkFjdGlvbjo6U2Vla3RvOworICAgICAgICBhY3Rpb25EZXRhaWxzLnNlZWtUaW1lID0gYXJn
dW1lbnQtPmFzRG91YmxlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNraXBGb3J3YXJkQ29t
bWFuZDoKKyAgICAgICAgaWYgKGFyZ3VtZW50KQorICAgICAgICAgICAgYWN0aW9uRGV0YWlscy5z
ZWVrT2Zmc2V0ID0gYXJndW1lbnQtPmFzRG91YmxlOworICAgICAgICBhY3Rpb25EZXRhaWxzLmFj
dGlvbiA9IE1lZGlhU2Vzc2lvbkFjdGlvbjo6U2Vla2ZvcndhcmQ7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgU2tpcEJhY2t3YXJkQ29tbWFuZDoKKyAgICAgICAgaWYgKGFyZ3VtZW50KQorICAg
ICAgICAgICAgYWN0aW9uRGV0YWlscy5zZWVrT2Zmc2V0ID0gYXJndW1lbnQtPmFzRG91YmxlOwor
ICAgICAgICBhY3Rpb25EZXRhaWxzLmFjdGlvbiA9IE1lZGlhU2Vzc2lvbkFjdGlvbjo6U2Vla2Jh
Y2t3YXJkOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE5leHRUcmFja0NvbW1hbmQ6CisgICAg
ICAgIGFjdGlvbkRldGFpbHMuYWN0aW9uID0gTWVkaWFTZXNzaW9uQWN0aW9uOjpOZXh0dHJhY2s7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHJldmlvdXNUcmFja0NvbW1hbmQ6CisgICAgICAg
IGFjdGlvbkRldGFpbHMuYWN0aW9uID0gTWVkaWFTZXNzaW9uQWN0aW9uOjpQcmV2aW91c3RyYWNr
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEJlZ2luU2Vla2luZ0JhY2t3YXJkQ29tbWFuZDoK
KyAgICBjYXNlIEVuZFNlZWtpbmdCYWNrd2FyZENvbW1hbmQ6CisgICAgY2FzZSBCZWdpblNlZWtp
bmdGb3J3YXJkQ29tbWFuZDoKKyAgICBjYXNlIEVuZFNlZWtpbmdGb3J3YXJkQ29tbWFuZDoKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAK
KyAgICBpZiAoYXV0byBoYW5kbGVyID0gc2Vzc2lvbi0+aGFuZGxlckZvckFjdGlvbihhY3Rpb25E
ZXRhaWxzLmFjdGlvbikpCisgICAgICAgIGhhbmRsZXItPmhhbmRsZUV2ZW50KGFjdGlvbkRldGFp
bHMpOworICAgIGVsc2UKKyAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiSWdub3Jp
bmcgY29tbWFuZCwgbm8gYWN0aW9uIGhhbmRsZXIgcmVnaXN0ZXJlZCBmb3IgIiwgYWN0aW9uRGV0
YWlscy5hY3Rpb24pOworfQorI2VuZGlmCisKIE9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvPiBNZWRp
YUVsZW1lbnRTZXNzaW9uOjpub3dQbGF5aW5nSW5mbygpIGNvbnN0CiB7CiAgICAgYXV0byogcGFn
ZSA9IG1fZWxlbWVudC5kb2N1bWVudCgpLnBhZ2UoKTsKQEAgLTEwMzIsNyArMTEwMiwxNCBAQCBP
cHRpb25hbDxOb3dQbGF5aW5nSW5mbz4gTWVkaWFFbGVtZW50U2Vzc2lvbjo6bm93UGxheWluZ0lu
Zm8oKSBjb25zdAogICAgIGlmICghc3RkOjppc2Zpbml0ZShjdXJyZW50VGltZSkgfHwgIXN1cHBv
cnRzU2Vla2luZykKICAgICAgICAgY3VycmVudFRpbWUgPSBNZWRpYVBsYXllcjo6aW52YWxpZFRp
bWUoKTsKIAotICAgIHJldHVybiBOb3dQbGF5aW5nSW5mbyB7IG1fZWxlbWVudC5tZWRpYVNlc3Np
b25UaXRsZSgpLCBtX2VsZW1lbnQuc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKCksIGR1cmF0
aW9uLCBjdXJyZW50VGltZSwgc3VwcG9ydHNTZWVraW5nLCBtX2VsZW1lbnQubWVkaWFTZXNzaW9u
VW5pcXVlSWRlbnRpZmllcigpLCBpc1BsYXlpbmcsIGFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zp
c2liaWxpdHkgfTsKKyNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKKyAgICBhdXRvKiB3aW5kb3cg
PSBtX2VsZW1lbnQuZG9jdW1lbnQoKS5kb21XaW5kb3coKTsKKyAgICBhdXRvKiBzZXNzaW9uTWV0
YWRhdGEgPSB3aW5kb3cgPyBOYXZpZ2F0b3JNZWRpYVNlc3Npb246Om1lZGlhU2Vzc2lvbih3aW5k
b3ctPm5hdmlnYXRvcigpKS5tZXRhZGF0YSgpIDogbnVsbHB0cjsKKyAgICBpZiAoc2Vzc2lvbk1l
dGFkYXRhKQorICAgICAgICByZXR1cm4gTm93UGxheWluZ0luZm8geyBzZXNzaW9uTWV0YWRhdGEt
PnRpdGxlKCksIHNlc3Npb25NZXRhZGF0YS0+YXJ0aXN0KCksIHNlc3Npb25NZXRhZGF0YS0+YWxi
dW0oKSwgbV9lbGVtZW50LnNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcigpLCBkdXJhdGlvbiwg
Y3VycmVudFRpbWUsIHN1cHBvcnRzU2Vla2luZywgbV9lbGVtZW50Lm1lZGlhU2Vzc2lvblVuaXF1
ZUlkZW50aWZpZXIoKSwgaXNQbGF5aW5nLCBhbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmls
aXR5IH07CisjZW5kaWYKKworICAgIHJldHVybiBOb3dQbGF5aW5nSW5mbyB7IG1fZWxlbWVudC5t
ZWRpYVNlc3Npb25UaXRsZSgpLCBlbXB0eVN0cmluZygpLCBlbXB0eVN0cmluZygpLCBtX2VsZW1l
bnQuc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKCksIGR1cmF0aW9uLCBjdXJyZW50VGltZSwg
c3VwcG9ydHNTZWVraW5nLCBtX2VsZW1lbnQubWVkaWFTZXNzaW9uVW5pcXVlSWRlbnRpZmllcigp
LCBpc1BsYXlpbmcsIGFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHkgfTsKIH0KIAog
dm9pZCBNZWRpYUVsZW1lbnRTZXNzaW9uOjp1cGRhdGVNZWRpYVVzYWdlSWZDaGFuZ2VkKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmgKaW5kZXggMWFiNDYyZjQ0NjFh
NDRmY2NlY2VkOWZiZDEyM2I2ZTc1MmI3NzQyMy4uZDcxZTRkYmI0ZjAzYzQzNmVmMzRlYzk0Y2Vl
NDcwMmFlYTJhMDFiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1l
bnRTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9u
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0xNzQsNiArMTc0LDEwIEBAIHB1YmxpYzoKICAgICBjb25zdCBjaGFyKiBsb2dDbGFz
c05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiTWVkaWFFbGVtZW50U2Vzc2lvbiI7IH0KICNl
bmRpZgogCisjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCisgICAgdm9pZCBkaWRSZWNlaXZlUmVt
b3RlQ29udHJvbENvbW1hbmQoUmVtb3RlQ29udHJvbENvbW1hbmRUeXBlLCBjb25zdCBSZW1vdGVD
b21tYW5kQXJndW1lbnQqID0gbnVsbHB0cikgZmluYWw7CisjZW5kaWYKKwogcHJpdmF0ZToKIAog
I2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVD
bGllbnQuaAppbmRleCA2NzAxYTJkZTA3NDAyODQzNWE0YmY3MzZiZmI2ZmYyOWEwNDhmZGI1Li4x
YWQ0M2ZlNTM2YWQzY2FjYmQyYzRlN2UwNGIxNTAyNjdlOWU4YjAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2hyb21lQ2xpZW50LmgKQEAgLTEwMSw3ICsxMDEsNiBAQCBjbGFzcyBIVE1MTWVkaWFFbGVtZW50
OwogY2xhc3MgSFRNTFZpZGVvRWxlbWVudDsKIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CiBjbGFzcyBJ
bnRSZWN0OwotY2xhc3MgTWVkaWFTZXNzaW9uTWV0YWRhdGE7CiBjbGFzcyBOYXZpZ2F0aW9uQWN0
aW9uOwogY2xhc3MgTm9kZTsKIGNsYXNzIFBhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmNwcAppbmRleCBhZjM0ZDUwZDNhNWE4YTY1ZTVi
Yzk1ZTg3NzUzMWE3YWJmNDQ3OTY3Li41YjJhOTFmMmM1YjQ4MGZmZjVjZDg0MjI5NjMxMjI1ODQ4
NTE1Y2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZW1vdGVDb21tYW5k
TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlbW90ZUNvbW1hbmRM
aXN0ZW5lci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzcsNCArMzcsMjUgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNvbW1hbmRM
aXN0ZW5lcj4gUmVtb3RlQ29tbWFuZExpc3RlbmVyOjpjcmVhdGUoUmVtb3RlQ29tbWEKIAogI2Vu
ZGlmCiAKK3ZvaWQgUmVtb3RlQ29tbWFuZExpc3RlbmVyOjpzY2hlZHVsZVN1cHBvcnRlZENvbW1h
bmRzVXBkYXRlKCkKK3sKKyAgICBpZiAoIW1fdXBkYXRlQ29tbWFuZHNUYXNrLmhhc1BlbmRpbmdU
YXNrKCkpIHsKKyAgICAgICAgbV91cGRhdGVDb21tYW5kc1Rhc2suc2NoZWR1bGVUYXNrKFt0aGlz
XSAoKSAgeworICAgICAgICAgICAgdXBkYXRlU3VwcG9ydGVkQ29tbWFuZHMoKTsKKyAgICAgICAg
fSk7CisgICAgfQorfQorCit2b2lkIFJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6YWRkU3VwcG9ydGVk
Q29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlIGNv
bW1hbmQpCit7CisgICAgbV9yZWdpc3RlcmVkQ29tbWFuZHMuYWRkKGNvbW1hbmQpOworICAgIHNj
aGVkdWxlU3VwcG9ydGVkQ29tbWFuZHNVcGRhdGUoKTsKK30KKwordm9pZCBSZW1vdGVDb21tYW5k
TGlzdGVuZXI6OnJlbW92ZVN1cHBvcnRlZENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJl
bW90ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21tYW5kKQoreworICAgIG1fcmVnaXN0ZXJlZENvbW1h
bmRzLnJlbW92ZShjb21tYW5kKTsKKyAgICBzY2hlZHVsZVN1cHBvcnRlZENvbW1hbmRzVXBkYXRl
KCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlbW90ZUNv
bW1hbmRMaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExp
c3RlbmVyLmgKaW5kZXggMmI0MzRhZWY2ZTc1ZWEzNTBjODg4NWYwZWVmNzBjNTk2ZTAxMWU5Ny4u
NjdhY2JhYTg2NGQxMTZiZjAyMzExYjE0MzQ4ODAzNGJhMDZjOTZiZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNiArMjYsNyBAQAog
I2lmbmRlZiBSZW1vdGVDb21tYW5kTGlzdGVuZXJfaAogI2RlZmluZSBSZW1vdGVDb21tYW5kTGlz
dGVuZXJfaAogCisjaW5jbHVkZSAiRGVmZXJyYWJsZVRhc2suaCIKICNpbmNsdWRlICJQbGF0Zm9y
bU1lZGlhU2Vzc2lvbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NSwxMiArNDYsMjAg
QEAgcHVibGljOgogICAgIFJlbW90ZUNvbW1hbmRMaXN0ZW5lcihSZW1vdGVDb21tYW5kTGlzdGVu
ZXJDbGllbnQmIGNsaWVudCkgOiBtX2NsaWVudChjbGllbnQpIHsgfQogICAgIHZpcnR1YWwgflJl
bW90ZUNvbW1hbmRMaXN0ZW5lcigpID0gZGVmYXVsdDsKIAorICAgIHZvaWQgYWRkU3VwcG9ydGVk
Q29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlKTsK
KyAgICB2b2lkIHJlbW92ZVN1cHBvcnRlZENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJl
bW90ZUNvbnRyb2xDb21tYW5kVHlwZSk7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVN1cHBvcnRl
ZENvbW1hbmRzKCkgeyB9CisgICAgdm9pZCBzY2hlZHVsZVN1cHBvcnRlZENvbW1hbmRzVXBkYXRl
KCk7CiAKICAgICBSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQmIGNsaWVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fY2xpZW50OyB9CiAKIHByb3RlY3RlZDoKICAgICBSZW1vdGVDb21tYW5kTGlzdGVu
ZXJDbGllbnQmIG1fY2xpZW50OworCisgICAgdXNpbmcgUmVtb3RlQ29tbWFuZHNTZXQgPSBIYXNo
U2V0PFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIFdURjo6
SW50SGFzaDxQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlPiwg
V1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29u
dHJvbENvbW1hbmRUeXBlPj47CisgICAgUmVtb3RlQ29tbWFuZHNTZXQgbV9yZWdpc3RlcmVkQ29t
bWFuZHM7CisKKyAgICBEZWZlcnJhYmxlVGFzazxUaW1lcj4gbV91cGRhdGVDb21tYW5kc1Rhc2s7
CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQ
bGF5aW5nSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0lu
Zm8uaAppbmRleCA2N2U5MWUyMmRmOGYwMGRiNDQ1ODJlOTgwZmI2MjJhOGEwNzg5MGU1Li43NTQ4
MjdhYTYwZjI5NTA3ZGUzMTdhYmRjNzcyN2YxYTE4ZjRkYmYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsNiArMzIsOCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBOb3dQbGF5aW5nSW5mbyB7CiAgICAgU3RyaW5nIHRpdGxl
OworICAgIFN0cmluZyBhcnRpc3Q7CisgICAgU3RyaW5nIGFsYnVtOwogICAgIFN0cmluZyBzb3Vy
Y2VBcHBsaWNhdGlvbklkZW50aWZpZXI7CiAgICAgZG91YmxlIGR1cmF0aW9uIHsgMCB9OwogICAg
IGRvdWJsZSBjdXJyZW50VGltZSB7IDAgfTsKQEAgLTU1LDYgKzU3LDE0IEBAIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IGlubGluZSBPcHRpb25hbDxOb3dQbGF5aW5nSW5mbz4gTm93UGxheWluZ0lu
Zm86OmRlY29kZShECiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0aXRsZSkpCiAgICAgICAgIHJl
dHVybiB7IH07CiAKKyAgICBTdHJpbmcgYXJ0aXN0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
YXJ0aXN0KSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIFN0cmluZyBhbGJ1bTsKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGFsYnVtKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKwogICAgIFN0
cmluZyBzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXI7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIpKQogICAgICAgICByZXR1cm4geyB9OwpAQCAt
ODMsNyArOTMsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUgT3B0aW9uYWw8Tm93
UGxheWluZ0luZm8+IE5vd1BsYXlpbmdJbmZvOjpkZWNvZGUoRAogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoYWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSkpCiAgICAgICAgIHJldHVy
biB7IH07CiAKLSAgICByZXR1cm4gTm93UGxheWluZ0luZm8geyBXVEZNb3ZlKHRpdGxlKSwgV1RG
TW92ZShzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIpLCBkdXJhdGlvbiwgY3VycmVudFRpbWUs
IHN1cHBvcnRzU2Vla2luZywgdW5pcXVlSWRlbnRpZmllciwgaXNQbGF5aW5nLCBhbGxvd3NOb3dQ
bGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5IH07CisgICAgcmV0dXJuIE5vd1BsYXlpbmdJbmZvIHsg
V1RGTW92ZSh0aXRsZSksIFdURk1vdmUoYXJ0aXN0KSwgV1RGTW92ZShhbGJ1bSksIFdURk1vdmUo
c291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKSwgZHVyYXRpb24sIGN1cnJlbnRUaW1lLCBzdXBw
b3J0c1NlZWtpbmcsIHVuaXF1ZUlkZW50aWZpZXIsIGlzUGxheWluZywgYWxsb3dzTm93UGxheWlu
Z0NvbnRyb2xzVmlzaWJpbGl0eSB9OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lv
bi5jcHAKaW5kZXggOTI2OWFkMzkzZTYyMDU5MWM4MGI0MjE4ZjU5ODQ0NTlmZWY5ZmJhMy4uNDM3
YzZkMGE1MTY2NDU5MGE0NjliYWQxYmI1ODIyYzE5ODJlMTk0ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTkzLDYgKzkzLDEwIEBAIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlCiAgICAgICAgIE1BS0VfU1RB
VElDX1NUUklOR19JTVBMKCJCZWdpblNlZWtpbmdGb3J3YXJkQ29tbWFuZCIpLAogICAgICAgICBN
QUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiRW5kU2Vla2luZ0ZvcndhcmRDb21tYW5kIiksCiAgICAg
ICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJTZWVrVG9QbGF5YmFja1Bvc2l0aW9uQ29tbWFu
ZCIpLAorICAgICAgICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiU2tpcEZvcndhcmRDb21tYW5k
IiksCisgICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJTa2lwQmFja3dhcmRDb21tYW5k
IiksCisgICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJOZXh0VHJhY2tDb21tYW5kIiks
CisgICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJQcmV2aW91c1RyYWNrQ29tbWFuZCIp
LAogICAgIH07CiAgICAgc3RhdGljX2Fzc2VydCghc3RhdGljX2Nhc3Q8c2l6ZV90PihQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6Tm9Db21tYW5kKSwgIlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb0NvbW1h
bmQgaXMgbm90IDAgYXMgZXhwZWN0ZWQiKTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0
PHNpemVfdD4oUGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXlDb21tYW5kKSA9PSAxLCAiUGxhdGZv
cm1NZWRpYVNlc3Npb246OlBsYXlDb21tYW5kIGlzIG5vdCAxIGFzIGV4cGVjdGVkIik7CkBAIC0x
MDQsNiArMTA4LDEwIEBAIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlCiAgICAgc3RhdGljX2Fzc2Vy
dChzdGF0aWNfY2FzdDxzaXplX3Q+KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpCZWdpblNlZWtpbmdG
b3J3YXJkQ29tbWFuZCkgPT0gNywgIlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpCZWdpblNlZWtpbmdG
b3J3YXJkQ29tbWFuZCBpcyBub3QgNyBhcyBleHBlY3RlZCIpOwogICAgIHN0YXRpY19hc3NlcnQo
c3RhdGljX2Nhc3Q8c2l6ZV90PihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW5kU2Vla2luZ0Zvcndh
cmRDb21tYW5kKSA9PSA4LCAiUGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZFNlZWtpbmdGb3J3YXJk
Q29tbWFuZCBpcyBub3QgOCBhcyBleHBlY3RlZCIpOwogICAgIHN0YXRpY19hc3NlcnQoc3RhdGlj
X2Nhc3Q8c2l6ZV90PihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2Vla1RvUGxheWJhY2tQb3NpdGlv
bkNvbW1hbmQpID09IDksICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2Vla1RvUGxheWJhY2tQb3Np
dGlvbkNvbW1hbmQgaXMgbm90IDkgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0
YXRpY19jYXN0PHNpemVfdD4oUGxhdGZvcm1NZWRpYVNlc3Npb246OlNraXBGb3J3YXJkQ29tbWFu
ZCkgPT0gMTAsICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEZvcndhcmRDb21tYW5kIGlzIG5v
dCAxMCBhcyBleHBlY3RlZCIpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90
PihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEJhY2t3YXJkQ29tbWFuZCkgPT0gMTEsICJQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEJhY2t3YXJkQ29tbWFuZCBpcyBub3QgMTEgYXMgZXhwZWN0
ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oUGxhdGZvcm1NZWRp
YVNlc3Npb246Ok5leHRUcmFja0NvbW1hbmQpID09IDEyLCAiUGxhdGZvcm1NZWRpYVNlc3Npb246
Ok5leHRUcmFja0NvbW1hbmQgaXMgbm90IDEyIGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fz
c2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQcmV2aW91c1Ry
YWNrQ29tbWFuZCkgPT0gMTMsICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UHJldmlvdXNUcmFja0Nv
bW1hbmQgaXMgbm90IDEzIGFzIGV4cGVjdGVkIik7CiAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHNp
emVfdD4oY29tbWFuZCkgPCBXVEZfQVJSQVlfTEVOR1RIKHZhbHVlcykpOwogICAgIHJldHVybiB2
YWx1ZXNbc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb21tYW5kKV07CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaAppbmRleCBjOTgx
MjEzZDVlOTA3NmU0MmViOTBkYjRmM2ExMTU2YjUyZjRiNjI2Li5kOTUyZmE5NWIzZjI3MzcwZTYw
YjRjNjkxMmU5NTFhNWQ2OGQwZGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzAsOSArMTMwLDEzIEBAIHB1
YmxpYzoKICAgICAgICAgQmVnaW5TZWVraW5nRm9yd2FyZENvbW1hbmQsCiAgICAgICAgIEVuZFNl
ZWtpbmdGb3J3YXJkQ29tbWFuZCwKICAgICAgICAgU2Vla1RvUGxheWJhY2tQb3NpdGlvbkNvbW1h
bmQsCisgICAgICAgIFNraXBGb3J3YXJkQ29tbWFuZCwKKyAgICAgICAgU2tpcEJhY2t3YXJkQ29t
bWFuZCwKKyAgICAgICAgTmV4dFRyYWNrQ29tbWFuZCwKKyAgICAgICAgUHJldmlvdXNUcmFja0Nv
bW1hbmQsCiAgICAgfTsKICAgICBib29sIGNhblJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZHMo
KSBjb25zdDsKLSAgICB2b2lkIGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChSZW1vdGVD
b250cm9sQ29tbWFuZFR5cGUsIGNvbnN0IFJlbW90ZUNvbW1hbmRBcmd1bWVudCogYXJndW1lbnQg
PSBudWxscHRyKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21t
YW5kKFJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgY29uc3QgUmVtb3RlQ29tbWFuZEFyZ3VtZW50
KiA9IG51bGxwdHIpOwogICAgIGJvb2wgc3VwcG9ydHNTZWVraW5nKCkgY29uc3Q7CiAKICAgICBl
bnVtIERpc3BsYXlUeXBlIDogdWludDhfdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oCmluZGV4IDFm
Y2IzMzQyNGYwYjU1ZmQyMjA5YjYzNGNlZGRlZTgzOWM0ZDdlZDYuLjIzZGQ5OWM2ZGVmMmZmNGRh
ZWY4N2EwNTA5OGI3NzVhODA3ZGNhMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTUy
LDYgKzE1Miw5IEBAIHB1YmxpYzoKICAgICBib29sIGlzSW50ZXJydXB0ZWQoKSBjb25zdCB7IHJl
dHVybiBtX2ludGVycnVwdGVkOyB9CiAgICAgYm9vbCBoYXNOb1Nlc3Npb24oKSBjb25zdDsKIAor
ICAgIHZpcnR1YWwgdm9pZCBhZGRTdXBwb3J0ZWRDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUpIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
U3VwcG9ydGVkQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1h
bmRUeXBlKSB7IH07CisKIHByb3RlY3RlZDoKICAgICBmcmllbmQgY2xhc3MgUGxhdGZvcm1NZWRp
YVNlc3Npb247CiAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2Vy
Q29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lv
bk1hbmFnZXJDb2NvYS5oCmluZGV4IDQxYmEyZDUwYzhhYTZhYWJhOTk2Mjc1OTVlZTA0MmRlNDZi
NzJhMmUuLmQ5ZTM3YWE4MzdkNjU4YTk3MmU2YmI0MzI2NmM2Y2RkNjBkZmE5NzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFn
ZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTg0LDYgKzg0LDkgQEAgcHJvdGVjdGVkOgogCiAgICAgR2Vu
ZXJpY1Rhc2tRdWV1ZTxUaW1lcj4mIHRhc2tRdWV1ZSgpIHsgcmV0dXJuIG1fdGFza1F1ZXVlOyB9
CiAKKyAgICB2b2lkIGFkZFN1cHBvcnRlZENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJl
bW90ZUNvbnRyb2xDb21tYW5kVHlwZSkgZmluYWw7CisgICAgdm9pZCByZW1vdmVTdXBwb3J0ZWRD
b21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUpIGZp
bmFsOworCiBwcml2YXRlOgogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGNvbnN0IGNo
YXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJNZWRpYVNlc3Npb25N
YW5hZ2VyQ29jb2EiOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KaW5kZXggMDZmZmZl
NzA0NDZlODFiYzExYmVlNmUzZTlkM2E4NjZiZjkyNzdjNy4uZDM0ZmM5MGQ3YWE4YjY0MDgwNzlh
MzE0ODhhYjAyZjgwYjdmMjg5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTE1Myw2ICsxNTMsOSBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6cHJlcGFyZVRv
U2VuZFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KCkKIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdl
ckNvY29hOjpzY2hlZHVsZVNlc3Npb25TdGF0dXNVcGRhdGUoKQogewogICAgIG1fdGFza1F1ZXVl
LmVucXVldWVUYXNrKFt0aGlzXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKG1fcmVtb3RlQ29t
bWFuZExpc3RlbmVyKQorICAgICAgICAgICAgbV9yZW1vdGVDb21tYW5kTGlzdGVuZXItPnVwZGF0
ZVN1cHBvcnRlZENvbW1hbmRzKCk7CisKICAgICAgICAgdXBkYXRlTm93UGxheWluZ0luZm8oKTsK
IAogICAgICAgICBmb3JFYWNoU2Vzc2lvbihbXSAoYXV0byYgc2Vzc2lvbikgewpAQCAtMjMyLDEw
ICsyMzUsMjMgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OmNsaWVudENoYXJhY3Rl
cmlzdGljc0NoYW5nZWQoUGxhdGZvcm1NZWRpYVNlc3Npb24KIAogdm9pZCBNZWRpYVNlc3Npb25N
YW5hZ2VyQ29jb2E6OnNlc3Npb25DYW5Qcm9kdWNlQXVkaW9DaGFuZ2VkKCkKIHsKKyAgICBBTFdB
WVNfTE9HKExPR0lERU5USUZJRVIpOwogICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6
c2Vzc2lvbkNhblByb2R1Y2VBdWRpb0NoYW5nZWQoKTsKICAgICBzY2hlZHVsZVNlc3Npb25TdGF0
dXNVcGRhdGUoKTsKIH0KIAordm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OmFkZFN1cHBv
cnRlZENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlw
ZSBjb21tYW5kKQoreworICAgIGlmIChtX3JlbW90ZUNvbW1hbmRMaXN0ZW5lcikKKyAgICAgICAg
bV9yZW1vdGVDb21tYW5kTGlzdGVuZXItPmFkZFN1cHBvcnRlZENvbW1hbmQoY29tbWFuZCk7Cit9
CisKK3ZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpyZW1vdmVTdXBwb3J0ZWRDb21tYW5k
KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgY29tbWFuZCkK
K3sKKyAgICBpZiAobV9yZW1vdGVDb21tYW5kTGlzdGVuZXIpCisgICAgICAgIG1fcmVtb3RlQ29t
bWFuZExpc3RlbmVyLT5yZW1vdmVTdXBwb3J0ZWRDb21tYW5kKGNvbW1hbmQpOworfQorCiB2b2lk
IE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6Y2xlYXJOb3dQbGF5aW5nSW5mbygpCiB7CiAgICAg
aWYgKGNhbkxvYWRfTWVkaWFSZW1vdGVfTVJNZWRpYVJlbW90ZVNldE5vd1BsYXlpbmdWaXNpYmls
aXR5KCkpCkBAIC0yNjAsNiArMjc2LDEyIEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29h
OjpzZXROb3dQbGF5aW5nSW5mbyhib29sIHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uCiAKICAg
ICBhdXRvIGluZm8gPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgNCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURp
Y3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogCisgICAgaWYgKCFub3dQbGF5aW5nSW5mby5hcnRp
c3QuaXNFbXB0eSgpKQorICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBr
TVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0aXN0LCBub3dQbGF5aW5nSW5mby5hcnRpc3Qu
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisKKyAgICBpZiAoIW5vd1BsYXlpbmdJbmZvLmFsYnVt
LmlzRW1wdHkoKSkKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01S
TWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FsYnVtLCBub3dQbGF5aW5nSW5mby5hbGJ1bS5jcmVh
dGVDRlN0cmluZygpLmdldCgpKTsKKwogICAgIGlmICghbm93UGxheWluZ0luZm8udGl0bGUuaXNF
bXB0eSgpKQogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRp
YVJlbW90ZU5vd1BsYXlpbmdJbmZvVGl0bGUsIG5vd1BsYXlpbmdJbmZvLnRpdGxlLmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvTWVkaWFSZW1vdGVTb2Z0TGluay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL01l
ZGlhUmVtb3RlU29mdExpbmsuaAppbmRleCA4YjVjZDIzZmIwMmFhMjY0NjYwZWRmMzgxNGU3N2Zi
ODYyZmQ1MGM4Li4wYWU4M2RkMDIyOTlhMmY5NmIyMTc3NDgyYjNjNzcyYmI2OTBkMDY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTWVkaWFSZW1vdGVTb2Z0TGluay5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9NZWRpYVJlbW90ZVNvZnRMaW5rLmgK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NTgsNiArNTgsMTQgQEAgU09GVF9MSU5LX0ZVTkNUSU9OX01BWV9GQUlMX0ZPUl9IRUFERVIoV2Vi
Q29yZSwgTWVkaWFSZW1vdGUsIE1STWVkaWFSZW1vdGVTZXRQYXIKICNkZWZpbmUgTVJNZWRpYVJl
bW90ZVNldFBhcmVudEFwcGxpY2F0aW9uIHNvZnRMaW5rX01lZGlhUmVtb3RlX01STWVkaWFSZW1v
dGVTZXRQYXJlbnRBcHBsaWNhdGlvbgogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoV2Vi
Q29yZSwgTWVkaWFSZW1vdGUsIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9UaXRsZSwgQ0ZT
dHJpbmdSZWYpOwogI2RlZmluZSBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvVGl0bGUgZ2V0
X01lZGlhUmVtb3RlX2tNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9UaXRsZSgpCitTT0ZUX0xJ
TktfQ09OU1RBTlRfRk9SX0hFQURFUihXZWJDb3JlLCBNZWRpYVJlbW90ZSwga01STWVkaWFSZW1v
dGVOb3dQbGF5aW5nSW5mb0FydGlzdCwgQ0ZTdHJpbmdSZWYpOworI2RlZmluZSBrTVJNZWRpYVJl
bW90ZU5vd1BsYXlpbmdJbmZvQXJ0aXN0IGdldF9NZWRpYVJlbW90ZV9rTVJNZWRpYVJlbW90ZU5v
d1BsYXlpbmdJbmZvQXJ0aXN0KCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFdlYkNv
cmUsIE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQWxidW0sIENGU3Ry
aW5nUmVmKTsKKyNkZWZpbmUga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FsYnVtIGdldF9N
ZWRpYVJlbW90ZV9rTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQWxidW0oKQorU09GVF9MSU5L
X0NPTlNUQU5UX0ZPUl9IRUFERVIoV2ViQ29yZSwgTWVkaWFSZW1vdGUsIGtNUk1lZGlhUmVtb3Rl
Tm93UGxheWluZ0luZm9BcnR3b3JrRGF0YSwgQ0ZTdHJpbmdSZWYpOworI2RlZmluZSBrTVJNZWRp
YVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya0RhdGEgZ2V0X01lZGlhUmVtb3RlX2tNUk1lZGlh
UmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrRGF0YSgpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9S
X0hFQURFUihXZWJDb3JlLCBNZWRpYVJlbW90ZSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5m
b0FydHdvcmtNSU1FVHlwZSwgQ0ZTdHJpbmdSZWYpOworI2RlZmluZSBrTVJNZWRpYVJlbW90ZU5v
d1BsYXlpbmdJbmZvQXJ0d29ya01JTUVUeXBlIGdldF9NZWRpYVJlbW90ZV9rTVJNZWRpYVJlbW90
ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya01JTUVUeXBlKCkKIFNPRlRfTElOS19DT05TVEFOVF9GT1Jf
SEVBREVSKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZv
RHVyYXRpb24sIENGU3RyaW5nUmVmKTsKICNkZWZpbmUga01STWVkaWFSZW1vdGVOb3dQbGF5aW5n
SW5mb0R1cmF0aW9uIGdldF9NZWRpYVJlbW90ZV9rTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZv
RHVyYXRpb24oKQogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoV2ViQ29yZSwgTWVkaWFS
ZW1vdGUsIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9FbGFwc2VkVGltZSwgQ0ZTdHJpbmdS
ZWYpOwpAQCAtNjgsNiArNzYsOCBAQCBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihXZWJD
b3JlLCBNZWRpYVJlbW90ZSwga01STWVkaWFSZW1vdGVPcHRpb25QbGF5YmFjawogI2RlZmluZSBr
TVJNZWRpYVJlbW90ZU9wdGlvblBsYXliYWNrUG9zaXRpb24gZ2V0X01lZGlhUmVtb3RlX2tNUk1l
ZGlhUmVtb3RlT3B0aW9uUGxheWJhY2tQb3NpdGlvbigpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9S
X0hFQURFUihXZWJDb3JlLCBNZWRpYVJlbW90ZSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5m
b1VuaXF1ZUlkZW50aWZpZXIsIENGU3RyaW5nUmVmKTsKICNkZWZpbmUga01STWVkaWFSZW1vdGVO
b3dQbGF5aW5nSW5mb1VuaXF1ZUlkZW50aWZpZXIgZ2V0X01lZGlhUmVtb3RlX2tNUk1lZGlhUmVt
b3RlTm93UGxheWluZ0luZm9VbmlxdWVJZGVudGlmaWVyKCkKK1NPRlRfTElOS19DT05TVEFOVF9G
T1JfSEVBREVSKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU9wdGlvblNraXBJ
bnRlcnZhbCwgQ0ZTdHJpbmdSZWYpOworI2RlZmluZSBrTVJNZWRpYVJlbW90ZU9wdGlvblNraXBJ
bnRlcnZhbCBnZXRfTWVkaWFSZW1vdGVfa01STWVkaWFSZW1vdGVPcHRpb25Ta2lwSW50ZXJ2YWwo
KQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVB
REVSKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBNUk1lZGlhUmVtb3RlQ29weVBpY2thYmxlUm91dGVz
LCBDRkFycmF5UmVmLCAoKSwgKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvTWVkaWFSZW1vdGVTb2Z0TGluay5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9NZWRpYVJlbW90ZVNvZnRMaW5rLm1tCmluZGV4IDg0ZGFjYjg1MWY4Y2Y2YzFiZDY2N2E5NmU3
YmMwOWY3MzkyZjlkNTQuLjczZTdiMjBkOWJmNTUyNzA0N2FjMzgxMTUyMDA2ZjNlODUyMTVlMzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9NZWRpYVJlbW90ZVNvZnRM
aW5rLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9NZWRpYVJlbW90ZVNvZnRM
aW5rLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC00NCwxMSArNDQsMTYgQEAgU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2Vi
Q29yZSwgTWVkaWFSZW1vdGUsIE1STWVkaWFSZW1vdGVTZXROb3dQbGF5aW5nSW4KIFNPRlRfTElO
S19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBNUk1lZGlhUmVtb3Rl
U2V0Tm93UGxheWluZ0FwcGxpY2F0aW9uUGxheWJhY2tTdGF0ZUZvck9yaWdpbiwgdm9pZCwgKE1S
T3JpZ2luUmVmIG9yaWdpbiwgTVJQbGF5YmFja1N0YXRlIHBsYXliYWNrU3RhdGUsIGRpc3BhdGNo
X3F1ZXVlX3QgcmVwbHlRLCB2b2lkKF5jb21wbGV0aW9uKShNUk1lZGlhUmVtb3RlRXJyb3IpKSwg
KG9yaWdpbiwgcGxheWJhY2tTdGF0ZSwgcmVwbHlRLCBjb21wbGV0aW9uKSkKIFNPRlRfTElOS19G
VU5DVElPTl9NQVlfRkFJTF9GT1JfU09VUkNFKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBNUk1lZGlh
UmVtb3RlU2V0UGFyZW50QXBwbGljYXRpb24sIHZvaWQsIChNUk9yaWdpblJlZiBvcmlnaW4sIENG
U3RyaW5nUmVmIHBhcmVudEFwcERpc3BsYXlJRCksIChvcmlnaW4sIHBhcmVudEFwcERpc3BsYXlJ
RCkpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShXZWJDb3JlLCBNZWRpYVJlbW90ZSwg
a01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb1RpdGxlLCBDRlN0cmluZ1JlZik7CitTT0ZUX0xJ
TktfQ09OU1RBTlRfRk9SX1NPVVJDRShXZWJDb3JlLCBNZWRpYVJlbW90ZSwga01STWVkaWFSZW1v
dGVOb3dQbGF5aW5nSW5mb0FydGlzdCwgQ0ZTdHJpbmdSZWYpOworU09GVF9MSU5LX0NPTlNUQU5U
X0ZPUl9TT1VSQ0UoV2ViQ29yZSwgTWVkaWFSZW1vdGUsIGtNUk1lZGlhUmVtb3RlTm93UGxheWlu
Z0luZm9BbGJ1bSwgQ0ZTdHJpbmdSZWYpOworU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0Uo
V2ViQ29yZSwgTWVkaWFSZW1vdGUsIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3Jr
RGF0YSwgQ0ZTdHJpbmdSZWYpOworU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoV2ViQ29y
ZSwgTWVkaWFSZW1vdGUsIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrTUlNRVR5
cGUsIENGU3RyaW5nUmVmKTsKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFdlYkNvcmUs
IE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRHVyYXRpb24sIENGU3Ry
aW5nUmVmKTsKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFdlYkNvcmUsIE1lZGlhUmVt
b3RlLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRWxhcHNlZFRpbWUsIENGU3RyaW5nUmVm
KTsKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBr
TVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvUGxheWJhY2tSYXRlLCBDRlN0cmluZ1JlZik7CiBT
T0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShXZWJDb3JlLCBNZWRpYVJlbW90ZSwga01STWVk
aWFSZW1vdGVPcHRpb25QbGF5YmFja1Bvc2l0aW9uLCBDRlN0cmluZ1JlZik7CiBTT0ZUX0xJTktf
Q09OU1RBTlRfRk9SX1NPVVJDRShXZWJDb3JlLCBNZWRpYVJlbW90ZSwga01STWVkaWFSZW1vdGVO
b3dQbGF5aW5nSW5mb1VuaXF1ZUlkZW50aWZpZXIsIENGU3RyaW5nUmVmKTsKK1NPRlRfTElOS19D
T05TVEFOVF9GT1JfU09VUkNFKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU9w
dGlvblNraXBJbnRlcnZhbCwgQ0ZTdHJpbmdSZWYpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBN
Uk1lZGlhUmVtb3RlQ29weVBpY2thYmxlUm91dGVzLCBDRkFycmF5UmVmLCAoKSwgKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1JlbW90ZUNvbW1hbmRMaXN0ZW5l
ck1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1JlbW90ZUNvbW1hbmRMaXN0ZW5l
ck1hYy5oCmluZGV4IDk0YTQyZTE5MTcxYjJkY2I5ZmU5YjkwZjFkNThjMjNjOWY3OGEyM2IuLmI3
MWNhZDg2ODE4ODg0ZDk5NGFmYWVlODM4MjY5Yzk1ZjcxZGNjNjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9SZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzks
OSArMzksMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflJlbW90ZUNvbW1hbmRMaXN0ZW5lck1h
YygpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCB1cGRhdGVTdXBwb3J0ZWRDb21tYW5kcygpIG92
ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVkQ29tbWFuZHMoKSBmaW5hbDsKIAogICAg
IHZvaWQqIG1fY29tbWFuZEhhbmRsZXIgeyBudWxscHRyIH07CisKKyAgICBjb25zdCBSZW1vdGVD
b21tYW5kc1NldCYgZGVmYXVsdENvbW1hbmRzKCk7CisgICAgUmVtb3RlQ29tbWFuZHNTZXQgbV9j
dXJyZW50Q29tbWFuZHM7CisgICAgYm9vbCBtX3N1cHBvcnRzU2Vla2luZyB7IGZhbHNlIH07CiB9
OwogICAgIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1JlbW90
ZUNvbW1hbmRMaXN0ZW5lck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9SZW1v
dGVDb21tYW5kTGlzdGVuZXJNYWMubW0KaW5kZXggNGVhODM5MjA3MjcxODQ0OGE4NjIyZmZlMmQz
MjVjZjczNzEyNDYyOC4uMzhhYTU3Zjg3OGNkZmMzZjNlZGJjYmI2Y2RkOTdmN2QyNTM4M2Q2YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1JlbW90ZUNvbW1hbmRMaXN0
ZW5lck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUmVtb3RlQ29tbWFu
ZExpc3RlbmVyTWFjLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zNSw0MiArMzUsOTUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitzdGF0aWMgT3B0aW9uYWw8TVJNZWRpYVJlbW90ZUNvbW1hbmQ+IG1lZGlhUmVtb3RlQ29tbWFu
ZEZvclBsYXRmb3JtQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENv
bW1hbmRUeXBlIGNvbW1hbmQpCit7CisgICAgc3RhdGljIGNvbnN0IGF1dG8gY29tbWFuZE1hcCA9
IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAgIHVzaW5nIENvbW1hbmRUb0FjdGlvbk1h
cCA9IEhhc2hNYXA8UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlw
ZSwgTVJNZWRpYVJlbW90ZUNvbW1hbmQsIFdURjo6SW50SGFzaDxQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlPj47CisKKyAgICAg
ICAgcmV0dXJuIENvbW1hbmRUb0FjdGlvbk1hcCB7CisgICAgICAgICAgICB7IFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpQbGF5Q29tbWFuZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRQbGF5IH0sCisgICAg
ICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQYXVzZUNvbW1hbmQsIE1STWVkaWFSZW1v
dGVDb21tYW5kUGF1c2UgfSwKKyAgICAgICAgICAgIHsgUGxhdGZvcm1NZWRpYVNlc3Npb246OlN0
b3BDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZFN0b3AgfSwKKyAgICAgICAgICAgIHsgUGxh
dGZvcm1NZWRpYVNlc3Npb246OlRvZ2dsZVBsYXlQYXVzZUNvbW1hbmQsIE1STWVkaWFSZW1vdGVD
b21tYW5kVG9nZ2xlUGxheVBhdXNlIH0sCisgICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpCZWdpblNlZWtpbmdCYWNrd2FyZENvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kQmVn
aW5SZXdpbmQgfSwKKyAgICAgICAgICAgIHsgUGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZFNlZWtp
bmdCYWNrd2FyZENvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kRW5kUmV3aW5kIH0sCisgICAg
ICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpCZWdpblNlZWtpbmdGb3J3YXJkQ29tbWFu
ZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRCZWdpbkZhc3RGb3J3YXJkIH0sCisgICAgICAgICAgICB7
IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRTZWVraW5nRm9yd2FyZENvbW1hbmQsIE1STWVkaWFS
ZW1vdGVDb21tYW5kRW5kRmFzdEZvcndhcmQgfSwKKyAgICAgICAgICAgIHsgUGxhdGZvcm1NZWRp
YVNlc3Npb246OlNlZWtUb1BsYXliYWNrUG9zaXRpb25Db21tYW5kLCBNUk1lZGlhUmVtb3RlQ29t
bWFuZFNlZWtUb1BsYXliYWNrUG9zaXRpb24gfSwKKyAgICAgICAgICAgIHsgUGxhdGZvcm1NZWRp
YVNlc3Npb246OlNraXBGb3J3YXJkQ29tbWFuZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRTa2lwRm9y
d2FyZCB9LAorICAgICAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEJhY2t3YXJk
Q29tbWFuZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRTa2lwQmFja3dhcmQgfSwKKyAgICAgICAgICAg
IHsgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5leHRUcmFja0NvbW1hbmQsIE1STWVkaWFSZW1vdGVD
b21tYW5kTmV4dFRyYWNrIH0sCisgICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQ
cmV2aW91c1RyYWNrQ29tbWFuZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRQcmV2aW91c1RyYWNrIH0s
CisgICAgICAgIH07CisgICAgfSgpKTsKKworICAgIGF1dG8gaXQgPSBjb21tYW5kTWFwLmdldCgp
LmZpbmQoY29tbWFuZCk7CisgICAgaWYgKGl0ICE9IGNvbW1hbmRNYXAuZ2V0KCkuZW5kKCkpCisg
ICAgICAgIHJldHVybiB7IGl0LT52YWx1ZSB9OworCisgICAgcmV0dXJuIHsgfTsKK30KKwogc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZUNvbW1hbmRMaXN0ZW5lcj4gUmVtb3RlQ29tbWFuZExpc3RlbmVy
OjpjcmVhdGUoUmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50JiBjbGllbnQpCiB7CiAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8UmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjPihjbGllbnQpOwogfQogCitj
b25zdCBSZW1vdGVDb21tYW5kTGlzdGVuZXI6OlJlbW90ZUNvbW1hbmRzU2V0JiBSZW1vdGVDb21t
YW5kTGlzdGVuZXJNYWM6OmRlZmF1bHRDb21tYW5kcygpCit7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFJlbW90ZUNvbW1hbmRzU2V0PiBjb21tYW5kcyhzdGQ6OmluaXRpYWxpemVyX2xpc3Q8
UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZT4geworICAgICAg
ICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheUNvbW1hbmQsCisgICAgICAgIFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpQYXVzZUNvbW1hbmQsCisgICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpU
b2dnbGVQbGF5UGF1c2VDb21tYW5kLAorICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QmVn
aW5TZWVraW5nRm9yd2FyZENvbW1hbmQsCisgICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpF
bmRTZWVraW5nRm9yd2FyZENvbW1hbmQsCisgICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpC
ZWdpblNlZWtpbmdCYWNrd2FyZENvbW1hbmQsCisgICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpFbmRTZWVraW5nQmFja3dhcmRDb21tYW5kLAorICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6U2Vla1RvUGxheWJhY2tQb3NpdGlvbkNvbW1hbmQsCisgICAgICAgIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpTa2lwRm9yd2FyZENvbW1hbmQsCisgICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpTa2lwQmFja3dhcmRDb21tYW5kLAorICAgIH0pOworCisgICAgcmV0dXJuIGNvbW1hbmRzOwor
fQorCitzdGF0aWMgYm9vbCBpc1NlZWtDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1v
dGVDb250cm9sQ29tbWFuZFR5cGUgY29tbWFuZCkKK3sKKyAgICByZXR1cm4gY29tbWFuZCA9PSBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2Vla1RvUGxheWJhY2tQb3NpdGlvbkNvbW1hbmQKKyAgICAg
ICAgfHwgY29tbWFuZCA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEZvcndhcmRDb21tYW5k
CisgICAgICAgIHx8IGNvbW1hbmQgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OlNraXBCYWNrd2Fy
ZENvbW1hbmQKKyAgICAgICAgfHwgY29tbWFuZCA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QmVn
aW5TZWVraW5nRm9yd2FyZENvbW1hbmQKKyAgICAgICAgfHwgY29tbWFuZCA9PSBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6QmVnaW5TZWVraW5nQmFja3dhcmRDb21tYW5kOworfQorCiB2b2lkIFJlbW90
ZUNvbW1hbmRMaXN0ZW5lck1hYzo6dXBkYXRlU3VwcG9ydGVkQ29tbWFuZHMoKQogewogICAgIGlm
ICghaXNNZWRpYVJlbW90ZUZyYW1ld29ya0F2YWlsYWJsZSgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBzdGF0aWMgY29uc3QgTVJNZWRpYVJlbW90ZUNvbW1hbmQgc3VwcG9ydGVkQ29tbWFuZHNb
XSA9IHsKLSAgICAgICAgTVJNZWRpYVJlbW90ZUNvbW1hbmRQbGF5LAotICAgICAgICBNUk1lZGlh
UmVtb3RlQ29tbWFuZFBhdXNlLAotICAgICAgICBNUk1lZGlhUmVtb3RlQ29tbWFuZFRvZ2dsZVBs
YXlQYXVzZSwKLSAgICAgICAgTVJNZWRpYVJlbW90ZUNvbW1hbmRCZWdpbkZhc3RGb3J3YXJkLAot
ICAgICAgICBNUk1lZGlhUmVtb3RlQ29tbWFuZEVuZEZhc3RGb3J3YXJkLAotICAgICAgICBNUk1l
ZGlhUmVtb3RlQ29tbWFuZEJlZ2luUmV3aW5kLAotICAgICAgICBNUk1lZGlhUmVtb3RlQ29tbWFu
ZEVuZFJld2luZCwKLSAgICAgICAgTVJNZWRpYVJlbW90ZUNvbW1hbmRTZWVrVG9QbGF5YmFja1Bv
c2l0aW9uLAotICAgIH07CisgICAgYXV0byYgc3VwcG9ydGVkQ29tbWFuZHMgPSAhbV9yZWdpc3Rl
cmVkQ29tbWFuZHMuaXNFbXB0eSgpID8gbV9yZWdpc3RlcmVkQ29tbWFuZHMgOiBkZWZhdWx0Q29t
bWFuZHMoKTsKKyAgICBpZiAobV9zdXBwb3J0c1NlZWtpbmcgPT0gY2xpZW50KCkuc3VwcG9ydHNT
ZWVraW5nKCkgJiYgbV9jdXJyZW50Q29tbWFuZHMgPT0gc3VwcG9ydGVkQ29tbWFuZHMpCisgICAg
ICAgIHJldHVybjsKKworICAgIGF1dG8gY29tbWFuZEluZm9BcnJheSA9IGFkb3B0Q0YoQ0ZBcnJh
eUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3VwcG9ydGVkQ29tbWFuZHMuc2l6
ZSgpLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CisgICAgZm9yIChhdXRvIHBsYXRmb3JtQ29t
bWFuZCA6IHN1cHBvcnRlZENvbW1hbmRzKSB7CisgICAgICAgIGlmIChpc1NlZWtDb21tYW5kKHBs
YXRmb3JtQ29tbWFuZCkgJiYgIWNsaWVudCgpLnN1cHBvcnRzU2Vla2luZygpKQorICAgICAgICAg
ICAgY29udGludWU7CiAKLSAgICBhdXRvIGNvbW1hbmRJbmZvQXJyYXkgPSBhZG9wdENGKENGQXJy
YXlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHNpemVvZihzdXBwb3J0ZWRDb21t
YW5kcykgLyBzaXplb2YoTVJNZWRpYVJlbW90ZUNvbW1hbmQpLCAma0NGVHlwZUFycmF5Q2FsbEJh
Y2tzKSk7CisgICAgICAgIGF1dG8gY29tbWFuZCA9IG1lZGlhUmVtb3RlQ29tbWFuZEZvclBsYXRm
b3JtQ29tbWFuZChwbGF0Zm9ybUNvbW1hbmQpOworICAgICAgICBBU1NFUlQoY29tbWFuZCk7Cisg
ICAgICAgIGlmICghY29tbWFuZCkKKyAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgZm9yIChh
dXRvIGNvbW1hbmQgOiBzdXBwb3J0ZWRDb21tYW5kcykgewogICAgICAgICBhdXRvIGNvbW1hbmRJ
bmZvID0gYWRvcHRDRihNUk1lZGlhUmVtb3RlQ29tbWFuZEluZm9DcmVhdGUoa0NGQWxsb2NhdG9y
RGVmYXVsdCkpOwotICAgICAgICBNUk1lZGlhUmVtb3RlQ29tbWFuZEluZm9TZXRDb21tYW5kKGNv
bW1hbmRJbmZvLmdldCgpLCBjb21tYW5kKTsKKyAgICAgICAgTVJNZWRpYVJlbW90ZUNvbW1hbmRJ
bmZvU2V0Q29tbWFuZChjb21tYW5kSW5mby5nZXQoKSwgY29tbWFuZC52YWx1ZSgpKTsKICAgICAg
ICAgTVJNZWRpYVJlbW90ZUNvbW1hbmRJbmZvU2V0RW5hYmxlZChjb21tYW5kSW5mby5nZXQoKSwg
dHJ1ZSk7CiAgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShjb21tYW5kSW5mb0FycmF5LmdldCgp
LCBjb21tYW5kSW5mby5nZXQoKSk7CiAgICAgfQogCi0gICAgYXV0byBzZWVrQ29tbWFuZEluZm8g
PSBhZG9wdENGKE1STWVkaWFSZW1vdGVDb21tYW5kSW5mb0NyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0KSk7Ci0gICAgTVJNZWRpYVJlbW90ZUNvbW1hbmRJbmZvU2V0Q29tbWFuZChzZWVrQ29tbWFu
ZEluZm8uZ2V0KCksIE1STWVkaWFSZW1vdGVDb21tYW5kU2Vla1RvUGxheWJhY2tQb3NpdGlvbik7
Ci0gICAgTVJNZWRpYVJlbW90ZUNvbW1hbmRJbmZvU2V0RW5hYmxlZChzZWVrQ29tbWFuZEluZm8u
Z2V0KCksIGNsaWVudCgpLnN1cHBvcnRzU2Vla2luZygpKTsKLSAgICBDRkFycmF5QXBwZW5kVmFs
dWUoY29tbWFuZEluZm9BcnJheS5nZXQoKSwgc2Vla0NvbW1hbmRJbmZvLmdldCgpKTsKLQogICAg
IE1STWVkaWFSZW1vdGVTZXRTdXBwb3J0ZWRDb21tYW5kcyhjb21tYW5kSW5mb0FycmF5LmdldCgp
LCBNUk1lZGlhUmVtb3RlR2V0TG9jYWxPcmlnaW4oKSwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAg
bV9jdXJyZW50Q29tbWFuZHMgPSBzdXBwb3J0ZWRDb21tYW5kczsKKyAgICBtX3N1cHBvcnRzU2Vl
a2luZyA9IGNsaWVudCgpLnN1cHBvcnRzU2Vla2luZygpOwogfQogCiBSZW1vdGVDb21tYW5kTGlz
dGVuZXJNYWM6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYyhSZW1vdGVDb21tYW5kTGlzdGVuZXJD
bGllbnQmIGNsaWVudCkKQEAgLTc5LDcgKzEzMiw3IEBAIFJlbW90ZUNvbW1hbmRMaXN0ZW5lck1h
Yzo6UmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjKFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCYK
ICAgICBpZiAoIWlzTWVkaWFSZW1vdGVGcmFtZXdvcmtBdmFpbGFibGUoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgdXBkYXRlU3VwcG9ydGVkQ29tbWFuZHMoKTsKKyAgICBzY2hlZHVsZVN1cHBv
cnRlZENvbW1hbmRzVXBkYXRlKCk7CiAKICAgICBhdXRvIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIo
KnRoaXMpOwogICAgIG1fY29tbWFuZEhhbmRsZXIgPSBNUk1lZGlhUmVtb3RlQWRkQXN5bmNDb21t
YW5kSGFuZGxlckJsb2NrKF4oTVJNZWRpYVJlbW90ZUNvbW1hbmQgY29tbWFuZCwgQ0ZEaWN0aW9u
YXJ5UmVmIG9wdGlvbnMsIHZvaWQoXmNvbXBsZXRpb24pKENGQXJyYXlSZWYpKSB7CkBAIC04OCw2
ICsxNDEsNyBAQCBSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWM6OlJlbW90ZUNvbW1hbmRMaXN0ZW5l
ck1hYyhSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQmCiAKICAgICAgICAgUGxhdGZvcm1NZWRp
YVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBwbGF0Zm9ybUNvbW1hbmQgeyBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9Db21tYW5kIH07CiAgICAgICAgIFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpSZW1vdGVDb21tYW5kQXJndW1lbnQgYXJndW1lbnQgeyAwIH07CisgICAgICAgIFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb21tYW5kQXJndW1lbnQqIGFyZ3VtZW50UHRyID0gbnVs
bHB0cjsKICAgICAgICAgTVJNZWRpYVJlbW90ZUNvbW1hbmRIYW5kbGVyU3RhdHVzIHN0YXR1cyA9
IE1STWVkaWFSZW1vdGVDb21tYW5kSGFuZGxlclN0YXR1c1N1Y2Nlc3M7CiAKICAgICAgICAgc3dp
dGNoIChjb21tYW5kKSB7CkBAIC0xMjgsMTYgKzE4MiwzNyBAQCBSZW1vdGVDb21tYW5kTGlzdGVu
ZXJNYWM6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYyhSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGll
bnQmCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIENGTnVtYmVyR2V0VmFsdWUocG9zaXRp
b25SZWYsIGtDRk51bWJlckRvdWJsZVR5cGUsICZhcmd1bWVudC5hc0RvdWJsZSk7CisgICAgICAg
ICAgICBhcmd1bWVudFB0ciA9ICZhcmd1bWVudDsKICAgICAgICAgICAgIHBsYXRmb3JtQ29tbWFu
ZCA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTZWVrVG9QbGF5YmFja1Bvc2l0aW9uQ29tbWFuZDsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2UgTVJNZWRpYVJlbW90
ZUNvbW1hbmRTa2lwRm9yd2FyZDoKKyAgICAgICAgY2FzZSBNUk1lZGlhUmVtb3RlQ29tbWFuZFNr
aXBCYWNrd2FyZDoKKyAgICAgICAgICAgIGlmICghY2xpZW50LnN1cHBvcnRzU2Vla2luZygpKSB7
CisgICAgICAgICAgICAgICAgc3RhdHVzID0gTVJNZWRpYVJlbW90ZUNvbW1hbmRIYW5kbGVyU3Rh
dHVzQ29tbWFuZEZhaWxlZDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgaWYgKGF1dG8gcG9zaXRpb25SZWYgPSBzdGF0aWNfY2FzdDxDRk51bWJl
clJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUob3B0aW9ucywga01STWVkaWFSZW1vdGVPcHRpb25T
a2lwSW50ZXJ2YWwpKSkgeworICAgICAgICAgICAgICAgIENGTnVtYmVyR2V0VmFsdWUocG9zaXRp
b25SZWYsIGtDRk51bWJlckRvdWJsZVR5cGUsICZhcmd1bWVudC5hc0RvdWJsZSk7CisgICAgICAg
ICAgICAgICAgYXJndW1lbnRQdHIgPSAmYXJndW1lbnQ7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHBsYXRmb3JtQ29tbWFuZCA9IChjb21tYW5kID09IE1STWVkaWFSZW1vdGVDb21tYW5k
U2tpcEZvcndhcmQpID8gUGxhdGZvcm1NZWRpYVNlc3Npb246OlNraXBGb3J3YXJkQ29tbWFuZCA6
IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTa2lwQmFja3dhcmRDb21tYW5kOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgTVJNZWRpYVJlbW90ZUNvbW1hbmROZXh0VHJhY2s6CisgICAg
ICAgICAgICBwbGF0Zm9ybUNvbW1hbmQgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TmV4dFRyYWNr
Q29tbWFuZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1STWVkaWFSZW1vdGVD
b21tYW5kUHJldmlvdXNUcmFjazoKKyAgICAgICAgICAgIHBsYXRmb3JtQ29tbWFuZCA9IFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpQcmV2aW91c1RyYWNrQ29tbWFuZDsKKyAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgTE9HKE1lZGlhLCAiUmVtb3RlQ29tbWFu
ZExpc3RlbmVyTWFjOjpSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMgLSBjb21tYW5kICV1IG5vdCBz
dXBwb3J0ZWQhIiwgY29tbWFuZCk7CiAgICAgICAgICAgICBzdGF0dXMgPSBNUk1lZGlhUmVtb3Rl
Q29tbWFuZEhhbmRsZXJTdGF0dXNDb21tYW5kRmFpbGVkOwogICAgICAgICB9OwogCiAgICAgICAg
IGlmICh3ZWFrVGhpcyAmJiBzdGF0dXMgIT0gTVJNZWRpYVJlbW90ZUNvbW1hbmRIYW5kbGVyU3Rh
dHVzQ29tbWFuZEZhaWxlZCkKLSAgICAgICAgICAgIHdlYWtUaGlzLT5tX2NsaWVudC5kaWRSZWNl
aXZlUmVtb3RlQ29udHJvbENvbW1hbmQocGxhdGZvcm1Db21tYW5kLCAmYXJndW1lbnQpOworICAg
ICAgICAgICAgd2Vha1RoaXMtPm1fY2xpZW50LmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFu
ZChwbGF0Zm9ybUNvbW1hbmQsIGFyZ3VtZW50UHRyKTsKIAogICAgICAgICBjb21wbGV0aW9uKChf
X2JyaWRnZSBDRkFycmF5UmVmKUBbQChzdGF0dXMpXSk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCmluZGV4IDYyZGNi
MzA2YTg5OWNhOGJhNDI4NDkyZjkzNzYxMGY2OGE5ZmU0NTMuLjBjNzliZmZlZDViZWRjNzc5YTJj
OTgxMjNmMjhlNzIzNjYwNTRjM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCkBAIC0xNDc5LDYgKzE0NzksMTYgQEAgc3RhdGlj
IFdlYkNvcmU6OkVkaXRhYmxlTGlua0JlaGF2aW9yIHRvRWRpdGFibGVMaW5rQmVoYXZpb3IoX1dL
RWRpdGFibGVMaW5rQmVoYXYKICAgICBfcHJlZmVyZW5jZXMtPnNldFBpdGNoQ29ycmVjdGlvbkFs
Z29yaXRobShwaXRjaENvcnJlY3Rpb25BbGdvcml0aG0pOwogfQogCistIChCT09MKV9tZWRpYVNl
c3Npb25FbmFibGVkCit7CisgICAgcmV0dXJuIF9wcmVmZXJlbmNlcy0+bWVkaWFTZXNzaW9uRW5h
YmxlZCgpOworfQorCistICh2b2lkKV9zZXRNZWRpYVNlc3Npb25FbmFibGVkOihCT09MKW1lZGlh
U2Vzc2lvbkVuYWJsZWQKK3sKKyAgICBfcHJlZmVyZW5jZXMtPnNldE1lZGlhU2Vzc2lvbkVuYWJs
ZWQobWVkaWFTZXNzaW9uRW5hYmxlZCk7Cit9CisKIEBlbmQKIAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCmlu
ZGV4IGYwNjkxZmQ1NzUwNGYzY2E4MTFlNzRiMGQwYTM5ZTNkNzhhOGQ0MTEuLjc2NjY5NjAwOGZl
MmJiNGFkM2ZmNjIxM2QyNWIzN2JmZmVkYzJiZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCkBAIC0xNzAs
NiArMTcwLDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLUGl0Y2hDb3JyZWN0aW9u
QWxnb3JpdGhtKSB7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRTcGVlY2hSZWNv
Z25pdGlvbkVuYWJsZWQ6KSBCT09MIF9zcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCBzZXR0ZXI9X3NldFByaXZhdGVDbGlja01lYXN1cmVtZW50RW5hYmxlZDopIEJP
T0wgX3ByaXZhdGVDbGlja01lYXN1cmVtZW50RW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29z
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHNl
dHRlcj1fc2V0UGl0Y2hDb3JyZWN0aW9uQWxnb3JpdGhtOikgX1dLUGl0Y2hDb3JyZWN0aW9uQWxn
b3JpdGhtIF9waXRjaENvcnJlY3Rpb25BbGdvcml0aG0gV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0
ZXI9X3NldE1lZGlhU2Vzc2lvbkVuYWJsZWQ6KSBCT09MIF9tZWRpYVNlc3Npb25FbmFibGVkIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKICNp
ZiAhVEFSR0VUX09TX0lQSE9ORQogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0V2Vi
R0xFbmFibGVkOikgQk9PTCBfd2ViR0xFbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAu
MTMuNCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDI3NDFmNTI1NjdlZmE3MTgwZmQ5NTNjZDI2YTFiZmRiOTNjYjA0NmMuLmE5OGFiY2E0Yzk3
MjlhOTRmMDhlNWM0NmU4YTZiYjRkYjI1NzNiNzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAyMS0wMi0wNCAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWFjXSBDb25u
ZWN0IE1lZGlhU2Vzc2lvbiB3aXRoIE1lZGlhUmVtb3RlIGFuZCBOb3dQbGF5aW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE0MzEKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzc0MDAwMzYzPgorCisgICAgICAgIFJldmlld2VkIGJ5IEplciBOb2Js
ZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
TWVkaWFTZXNzaW9uLm1tOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vz
c2lvblRlc3Q6OndlYlZpZXcpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9u
VGVzdDo6d2ViVmlld1BpZCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25U
ZXN0OjpnZXROb3dQbGF5aW5nQ2xpZW50KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlh
U2Vzc2lvblRlc3Q6OmdldE5vd1BsYXlpbmdDbGllbnRQaWQpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6TWVkaWFTZXNzaW9uVGVzdDo6bG9hZFBhZ2VBbmRCZWNvbWVOb3dQbGF5aW5nKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvblRlc3Q6OnJ1blNjcmlwdFdpdGhVc2Vy
R2VzdHVyZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25UZXN0OjpwbGF5
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvblRlc3Q6OnBhdXNlKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvblRlc3Q6OnNlbmRNZWRpYVJlbW90ZUNv
bW1hbmQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uVGVzdDo6c2VuZE1l
ZGlhUmVtb3RlU2Vla0NvbW1hbmQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNz
aW9uVGVzdDo6bGlzdGVuRm9yRXZlbnRNZXNzYWdlcyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpNZWRpYVNlc3Npb25UZXN0OjpldmVudExpc3RlbmVyV2FzQ2FsbGVkKToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvblRlc3Q6OndhaXRGb3JFdmVudExpc3RlbmVyVG9CZUNh
bGxlZCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25UZXN0OjpsaXN0ZW5G
b3JTZXNzaW9uSGFuZGxlck1lc3NhZ2VzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlh
U2Vzc2lvblRlc3Q6OnNlc3Npb25IYW5kbGVyV2FzQ2FsbGVkKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6Ok1lZGlhU2Vzc2lvblRlc3Q6OndhaXRGb3JTZXNzaW9uSGFuZGxlclRvQmVDYWxsZWQp
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uVGVzdDo6Z2V0U3VwcG9ydGVk
Q29tbWFuZHMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL21lZGlhLXJlbW90ZS5odG1sOiBBZGRlZC4K
KwogMjAyMS0wMi0wNSAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgW2V3c10gY29tbWl0LXF1ZXVlIHNob3VsZCB1c2UgY29tbWl0cy53ZWJraXQub3JnIHVy
bCBpbnN0ZWFkIG9mIHRyYWMgdXJsCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDVjNTk3YTcx
ZDJlYjM4Nzg2MDdkZTJhZmYzYmQyYzgxNzM2ODMzNmIuLjBiNDhlN2VhZTVhMmJmODZiZDYxYmQw
ZDkyYjFhZWRlYzcyMzE5OGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01Niw2ICs1Niw4
IEBACiAJCTA3NDk5NDUyMUVBNTAzNEIwMDBEQTQ0RSAvKiBnZXRVc2VyTWVkaWEyLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFCQUY0
RTIyNUFDOURCODAwRDgyRjMyIC8qIGdldFVzZXJNZWRpYTIuaHRtbCAqLzsgfTsKIAkJMDc2RTUw
N0YxRjQ1MTNENjAwNkU5RjVBIC8qIExvZ2dpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2RTUwN0UxRjQ1MDMxRTAwNkU5RjVBIC8qIExvZ2dp
bmcuY3BwICovOyB9OwogCQkwNzdBNUFGMzIzMDYzOEE2MDBBNzEwNUMgLyogQWNjZXNzaWJpbGl0
eVRlc3RQbHVnaW4ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwNzQ2NjQ1ODIyRkY2MzA1MDBFMzQ1MUEgLyogQWNjZXNzaWJpbGl0eVRlc3RQbHVnaW4u
bW0gKi87IH07CisJCTA3OTQ3NDBEMjVDQTBCREUwMEM1OTdFQiAvKiBNZWRpYVNlc3Npb24ubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzk0NzQwQzI1
Q0EwQkRFMDBDNTk3RUIgLyogTWVkaWFTZXNzaW9uLm1tICovOyB9OworCQkwNzk0NzQyRDI1Q0Iz
M0ZEMDBDNTk3RUIgLyogbWVkaWEtcmVtb3RlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5NDc0MkMyNUNCMzNCMDAwQzU5N0VCIC8q
IG1lZGlhLXJlbW90ZS5odG1sICovOyB9OwogCQkwNzk5QzM0OTFFQkEyRDdCMDAzQjc1MzIgLyog
VXNlck1lZGlhRGlzYWJsZWQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwN0VERUZBQzFFQjk0MDBDMDBENDMyOTIgLyogVXNlck1lZGlhRGlzYWJsZWQu
bW0gKi87IH07CiAJCTA3OTlDMzRCMUVCQTMzMDEwMDNCNzUzMiAvKiBkaXNhYmxlR2V0VXNlck1l
ZGlhLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDc5OUMzNEExRUJBMzJGNDAwM0I3NTMyIC8qIGRpc2FibGVHZXRVc2VyTWVkaWEuaHRt
bCAqLzsgfTsKIAkJMDdDMDQ2Q0ExRTQyNjJBODAwNzIwMUU3IC8qIENBUmluZ0J1ZmZlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0MwNDZDOTFF
NDI1NzNFMDA3MjAxRTcgLyogQ0FSaW5nQnVmZmVyLmNwcCAqLzsgfTsKQEAgLTE1NTksNiArMTU2
MSw3IEBACiAJCQkJQUQ1N0FDMjIxREE3NDY2RTAwRkYxQkRFIC8qIG1hbnktaWZyYW1lcy5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTc3NzJFQ0UxMjJGRTA2QzYwMDA5QTc5OSAvKiBt
YW55LXNhbWUtb3JpZ2luLWlmcmFtZXMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlD
RDgzOTRERjIzMkFGN0MwMDAxNDk0OTUgLyogbWVkaWEtbG9hZGluZy5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovLAorCQkJCTA3OTQ3NDJEMjVDQjMzRkQwMEM1OTdFQiAvKiBtZWRpYS1yZW1vdGUu
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlDREEzMTU5QTFFRDU0OEYxMDA5RjYwRDMg
LyogTWVkaWFQbGF5YmFja1NsZWVwQXNzZXJ0aW9uLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8s
CiAJCQkJQ0RDOTQ0MkYxRUYyMDVENjAwNTlDM0M0IC8qIG1lZGlhc3RyZWFtdHJhY2stZGV0YWNo
ZWQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlFMTIyMERDQTE1NUIyOEFBMDAxM0Uy
RkMgLyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLywKQEAgLTE3MjIsNiArMTcyNSw4IEBACiAJCTA3NDkyQjNBMURG
OEFFMkQwMDYzM0RFMSAvKiBFbnVtZXJhdGVNZWRpYURldmljZXMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRW51bWVyYXRlTWVkaWFEZXZpY2VzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2NkREMUYxQTVBRDUyMDAwMjNFM0JCIC8qIFBlbmRp
bmdBUElSZXF1ZXN0VVJMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFBlbmRpbmdBUElSZXF1ZXN0VVJMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MDc2RTUwN0UxRjQ1MDMxRTAwNkU5RjVBIC8qIExvZ2dpbmcuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTG9nZ2luZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTA3OTQ3NDBDMjVDQTBCREUwMEM1OTdFQiAvKiBNZWRpYVNlc3Npb24ubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZWRpYVNlc3Npb24ubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3OTQ3NDJDMjVDQjMzQjAwMEM1OTdFQiAvKiBtZWRp
YS1yZW1vdGUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJtZWRpYS1yZW1vdGUu
aHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3OTlDMzRBMUVCQTMyRjQwMDNC
NzUzMiAvKiBkaXNhYmxlR2V0VXNlck1lZGlhLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBh
dGggPSBkaXNhYmxlR2V0VXNlck1lZGlhLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA3QzA0NkM5MUU0MjU3M0UwMDcyMDFFNyAvKiBDQVJpbmdCdWZmZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ0FSaW5nQnVmZmVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdDQzdERkQyMjY2MzMwODAwRTM5MTgxIC8qIE1lZGlhQnVm
ZmVyaW5nUG9saWN5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
TWVkaWFCdWZmZXJpbmdQb2xpY3kubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0z
MzU5LDYgKzMzNjQsNyBAQAogCQkJCTk1QjZCM0I2MjUxRUJGMkYwMEZDNDM4MiAvKiBNZWRpYURv
Y3VtZW50Lm1tICovLAogCQkJCUNEMDM3MEUyMjRBNDRCN0EwMEJBM0NBRSAvKiBNZWRpYUxvYWRp
bmcubW0gKi8sCiAJCQkJMDdFRjc2RDQyNTQwRkMwNjAwNTNFRDUzIC8qIE1lZGlhTXV0ZWRTdGF0
ZS5tbSAqLywKKwkJCQkwNzk0NzQwQzI1Q0EwQkRFMDBDNTk3RUIgLyogTWVkaWFTZXNzaW9uLm1t
ICovLAogCQkJCTUxQkU5RTY1MjM3NjA4OTUwMEI0RTExNyAvKiBNZWRpYVR5cGUubW0gKi8sCiAJ
CQkJNTE2NUZFMDMyMDFFRTYxNzAwOUY3RUMzIC8qIE1lc3NhZ2VQb3J0UHJvdmlkZXJzLm1tICov
LAogCQkJCTUxQ0QxQzZBMUIzOENFMzYwMDE0MkNBNSAvKiBNb2RhbEFsZXJ0cy5tbSAqLywKQEAg
LTM5MjIsNiArMzkyOCw3IEBACiAJCQkJNDZDNTE5RTMxRDM1NjI5NjAwREFBNTFBIC8qIExvY2Fs
U3RvcmFnZU51bGxFbnRyaWVzLmxvY2Fsc3RvcmFnZSAqLywKIAkJCQk0NkM1MTlFNDFEMzU2Mjk2
MDBEQUE1MUEgLyogTG9jYWxTdG9yYWdlTnVsbEVudHJpZXMubG9jYWxzdG9yYWdlLXNobSAqLywK
IAkJCQk3QTZBMkM3MTFEQ0NGQjAyMDBDMEQwODUgLyogTG9jYWxTdG9yYWdlUXVpcmtFbmFibGVk
Lmh0bWwgKi8sCisJCQkJMDc5NDc0MkMyNUNCMzNCMDAwQzU5N0VCIC8qIG1lZGlhLXJlbW90ZS5o
dG1sICovLAogCQkJCTlCNTlGMTI5MjAzNDA4NTQwMDlFNjNENSAvKiBtc28tbGlzdC1jb21wYXQt
bW9kZS5odG1sICovLAogCQkJCTlCQ0Q0MTE5MjA2RDVFRDcwMDFENzFCRSAvKiBtc28tbGlzdC1v
bi1oNC5odG1sICovLAogCQkJCTlCRjM1NkNDMjAyRDQ0RjIwMEY3MTE2MCAvKiBtc28tbGlzdC5o
dG1sICovLApAQCAtNTM4Myw2ICs1MzkwLDcgQEAKIAkJCQlDRDAzNzBFMzI0QTQ0RDk2MDBCQTND
QUUgLyogTWVkaWFMb2FkaW5nLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDdFRjc2RDUyNTQwRkMw
NjAwNTNFRDUzIC8qIE1lZGlhTXV0ZWRTdGF0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQTMx
NTk4MUVENTM2NTEwMDlGNjBEMyAvKiBNZWRpYVBsYXliYWNrU2xlZXBBc3NlcnRpb24ubW0gaW4g
U291cmNlcyAqLywKKwkJCQkwNzk0NzQwRDI1Q0EwQkRFMDBDNTk3RUIgLyogTWVkaWFTZXNzaW9u
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RDOTQ0MkUxRUYxRkMwODAwNTlDM0M0IC8qIE1lZGlh
U3RyZWFtVHJhY2tEZXRhY2hlZC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxQkU5RTY2MjM3NjA4
OUYwMEI0RTExNyAvKiBNZWRpYVR5cGUubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VDNTFB
NDExQTdFMDA0NDdDNEMgLyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVs
ZWdhdGUubW0gaW4gU291cmNlcyAqLywKQEAgLTU0MjEsNiArNTQyOSw3IEBACiAJCQkJQzEwNEJD
MUYyNTQ3MjM3MTAwQzA3OEM5IC8qIE92ZXJyaWRlQXBwbGVMYW5ndWFnZXNQcmVmZXJlbmNlLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJQ0VCQ0ExMkYxRTNBNjYwMTAwQzczMjkzIC8qIE92ZXJyaWRl
Q29udGVudFNlY3VyaXR5UG9saWN5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRBMjU4NkYyMjVD
NjdEQzAwQjQ1QzFDIC8qIE92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMubW0gaW4gU291cmNlcyAq
LywKKwkJCQk5NTNBQkIzNTI1QzBENjgyMDA0QzhCNzMgLyogUGFnZUV4dGVuZGVkQmFja2dyb3Vu
ZENvbG9yLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDQjREQTkxQzgzQUU3MzAwQ0M2OTE4IC8q
IFBhZ2VHcm91cC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YwNzFBNDExQUU2MDA0NDdD
NEMgLyogUGFnZUxvYWRCYXNpYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YwODFBNDEx
QUU2MDA0NDdDNEMgLyogUGFnZUxvYWREaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2VGb3JGcmFt
ZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTU0NjQsNyArNTQ3Myw2IEBACiAJCQkJNTE4QzExNTMy
MDVCMDUwNDAwMUZGNEFFIC8qIFByb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRkVDMkE4NTYyNENFQjY1RjAwQURCQzM1IC8qIFByb3BlcnR5U2xvdC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk3QzgzRTBDMTFEMEE2NTJGMDBGRUJDRjMgLyogUHJvdmlzaW9uYWxV
UkxOb3RDaGFuZ2UubW0gaW4gU291cmNlcyAqLywKLQkJCQk5NTNBQkIzNTI1QzBENjgyMDA0QzhC
NzMgLyogUGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NUNGQUNGNjUyMjZGRDJEQzAwNTZDN0QwIC8qIFByb3h5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MDQxQTFFMzQyMTZGRkRCQzAwNzg5RTBBIC8qIFB1YmxpY1N1ZmZpeC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk3QzgzRTBDMjFEMEE2NTM1MDBGRUJDRjMgLyogUXVpY2tMb29rLm1tIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L01lZGlhU2Vzc2lvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
TWVkaWFTZXNzaW9uLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5MjkzYWEwMGFhOGU3MjNhMDM2ODI1YzBjYzZm
Zjg0MDYxOWNiNDgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL01lZGlhU2Vzc2lvbi5tbQpAQCAtMCwwICsxLDM4OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoTUVE
SUFfU0VTU0lPTikKKworI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRl
c3QuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgPFdlYktpdC9XS1ByZWZl
cmVuY2VzUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Q
cml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgorI2ltcG9ydCA8
V2ViS2l0L1dlYlZpZXdQcml2YXRlLmg+CisjaW1wb3J0IDxwYWwvc3BpL21hYy9NZWRpYVJlbW90
ZVNQSS5oPgorI2ltcG9ydCA8d3RmL0Z1bmN0aW9uLmg+CisjaW1wb3J0IDx3dGYvSGFzaFNldC5o
PgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW1wb3J0IDx3dGYvU29mdExpbmtp
bmcuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbXBvcnQgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgorCitTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUksoTWVkaWFSZW1vdGUp
CisKK1NPRlRfTElOSyhNZWRpYVJlbW90ZSwgTVJNZWRpYVJlbW90ZVNlbmRDb21tYW5kVG9BcHAs
IEJvb2xlYW4sIChNUk1lZGlhUmVtb3RlQ29tbWFuZCBjb21tYW5kLCBDRkRpY3Rpb25hcnlSZWYg
b3B0aW9ucywgTVJPcmlnaW5SZWYgb3JpZ2luLCBDRlN0cmluZ1JlZiBhcHBEaXNwbGF5SUQsIE1S
U2VuZENvbW1hbmRBcHBPcHRpb25zIGFwcE9wdGlvbnMsIGRpc3BhdGNoX3F1ZXVlX3QgcmVwbHlR
LCB2b2lkKF5jb21wbGV0aW9uKShNUlNlbmRDb21tYW5kRXJyb3IgZXJyLCBDRkFycmF5UmVmIGhh
bmRsZXJSZXR1cm5TdGF0dXNlcykpLCAoY29tbWFuZCwgb3B0aW9ucywgb3JpZ2luLCBhcHBEaXNw
bGF5SUQsIGFwcE9wdGlvbnMsIHJlcGx5USwgY29tcGxldGlvbikpOworI2RlZmluZSBNUk1lZGlh
UmVtb3RlU2VuZENvbW1hbmRUb0FwcCBzb2Z0TGlua01STWVkaWFSZW1vdGVTZW5kQ29tbWFuZFRv
QXBwCisKK1NPRlRfTElOSyhNZWRpYVJlbW90ZSwgTVJNZWRpYVJlbW90ZUdldExvY2FsT3JpZ2lu
LCBNUk9yaWdpblJlZiwgKCksICgpKTsKKyNkZWZpbmUgTVJNZWRpYVJlbW90ZUdldExvY2FsT3Jp
Z2luIHNvZnRMaW5rTVJNZWRpYVJlbW90ZUdldExvY2FsT3JpZ2luCisKK1NPRlRfTElOSyhNZWRp
YVJlbW90ZSwgTVJNZWRpYVJlbW90ZUdldFN1cHBvcnRlZENvbW1hbmRzRm9yT3JpZ2luLCB2b2lk
LCAoTVJPcmlnaW5SZWYgb3JpZ2luLCBkaXNwYXRjaF9xdWV1ZV90IHF1ZXVlLCB2b2lkKF5jb21w
bGV0aW9uKShDRkFycmF5UmVmIGNvbW1hbmRzKSksIChvcmlnaW4sIHF1ZXVlLCBjb21wbGV0aW9u
KSk7CisjZGVmaW5lIE1STWVkaWFSZW1vdGVHZXRTdXBwb3J0ZWRDb21tYW5kc0Zvck9yaWdpbiBz
b2Z0TGlua01STWVkaWFSZW1vdGVHZXRTdXBwb3J0ZWRDb21tYW5kc0Zvck9yaWdpbgorCitTT0ZU
X0xJTksoTWVkaWFSZW1vdGUsIE1STWVkaWFSZW1vdGVHZXROb3dQbGF5aW5nQ2xpZW50LCB2b2lk
LCAoZGlzcGF0Y2hfcXVldWVfdCBxdWV1ZSwgdm9pZCheY29tcGxldGlvbikoTVJOb3dQbGF5aW5n
Q2xpZW50UmVmLCBDRkVycm9yUmVmKSksIChxdWV1ZSwgY29tcGxldGlvbikpCisjZGVmaW5lIE1S
TWVkaWFSZW1vdGVHZXROb3dQbGF5aW5nQ2xpZW50IHNvZnRMaW5rTVJNZWRpYVJlbW90ZUdldE5v
d1BsYXlpbmdDbGllbnQKKworU09GVF9MSU5LKE1lZGlhUmVtb3RlLCBNUk5vd1BsYXlpbmdDbGll
bnRHZXRQcm9jZXNzSWRlbnRpZmllciwgcGlkX3QsIChNUk5vd1BsYXlpbmdDbGllbnRSZWYgY2xp
ZW50KSwgKGNsaWVudCkpCisjZGVmaW5lIE1STm93UGxheWluZ0NsaWVudEdldFByb2Nlc3NJZGVu
dGlmaWVyIHNvZnRMaW5rTVJOb3dQbGF5aW5nQ2xpZW50R2V0UHJvY2Vzc0lkZW50aWZpZXIKKwor
U09GVF9MSU5LX0NPTlNUQU5UKE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU9wdGlvblNraXBJ
bnRlcnZhbCwgQ0ZTdHJpbmdSZWYpCisjZGVmaW5lIGtNUk1lZGlhUmVtb3RlT3B0aW9uU2tpcElu
dGVydmFsIGdldGtNUk1lZGlhUmVtb3RlT3B0aW9uU2tpcEludGVydmFsKCkKKworU09GVF9MSU5L
X0NPTlNUQU5UKE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU9wdGlvblBsYXliYWNrUG9zaXRp
b24sIENGU3RyaW5nUmVmKQorI2RlZmluZSBrTVJNZWRpYVJlbW90ZU9wdGlvblBsYXliYWNrUG9z
aXRpb24gZ2V0a01STWVkaWFSZW1vdGVPcHRpb25QbGF5YmFja1Bvc2l0aW9uKCkKKworI2lmICFV
U0UoQVBQTEVfSU5URVJOQUxfU0RLKQorQGludGVyZmFjZSBNUkNvbW1hbmRJbmZvIDogTlNPYmpl
Y3QKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTVJNZWRpYVJlbW90ZUNvbW1hbmQg
Y29tbWFuZDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgZ2V0dGVyPWlzRW5hYmxl
ZCkgQk9PTCBlbmFibGVkOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBudWxsYWJs
ZSwgY29weSkgTlNEaWN0aW9uYXJ5ICpvcHRpb25zOworQGVuZAorI2VuZGlmCisKK25hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJIHsKKworY2xhc3MgTWVkaWFTZXNzaW9uVGVzdCA6IHB1YmxpYyB0ZXN0
aW5nOjpUZXN0IHsKK3B1YmxpYzoKKyAgICB2b2lkIFNldFVwKCkgZmluYWwKKyAgICB7CisgICAg
ICAgIF9jb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdKTsKKyAgICAgICAgW19jb25maWd1cmF0aW9uIHNldE1lZGlhVHlwZXNSZXF1aXJp
bmdVc2VyQWN0aW9uRm9yUGxheWJhY2s6V0tBdWRpb3Zpc3VhbE1lZGlhVHlwZUF1ZGlvXTsKKwor
ICAgICAgICBfd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMzAwLCAzMDApIGNvbmZpZ3VyYXRpb246X2NvbmZpZ3Vy
YXRpb24uZ2V0KCkgYWRkVG9XaW5kb3c6WUVTXSk7CisKKyAgICAgICAgV0tQcmVmZXJlbmNlcyAq
cHJlZmVyZW5jZXMgPSBbX3dlYlZpZXcgY29uZmlndXJhdGlvbl0ucHJlZmVyZW5jZXM7CisgICAg
ICAgIHByZWZlcmVuY2VzLl9tZWRpYVNlc3Npb25FbmFibGVkID0gWUVTOworCisgICAgICAgIF9t
ZXNzYWdlSGFuZGxlcnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsK
KyAgICB9CisKKyAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIFtf
d2ViVmlldyBjbGVhck1lc3NhZ2VIYW5kbGVyczpfbWVzc2FnZUhhbmRsZXJzLmdldCgpXTsKKyAg
ICB9CisKKyAgICBUZXN0V0tXZWJWaWV3KiB3ZWJWaWV3KCkgeyByZXR1cm4gX3dlYlZpZXcuZ2V0
KCk7IH0KKworICAgIHBpZF90IHdlYlZpZXdQaWQoKSB7IHJldHVybiBbX3dlYlZpZXcgX3dlYlBy
b2Nlc3NJZGVudGlmaWVyXTsgfQorCisgICAgUmV0YWluUHRyPE1STm93UGxheWluZ0NsaWVudFJl
Zj4gZ2V0Tm93UGxheWluZ0NsaWVudCgpCisgICAgeworICAgICAgICBib29sIGdvdE5vd1BsYXlp
bmcgPSBmYWxzZTsKKyAgICAgICAgUmV0YWluUHRyPE1STm93UGxheWluZ0NsaWVudFJlZj4gbm93
UGxheWluZ0NsaWVudDsKKyAgICAgICAgTVJNZWRpYVJlbW90ZUdldE5vd1BsYXlpbmdDbGllbnQo
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgWyZdIChNUk5vd1BsYXlpbmdDbGllbnRSZWYgcGxh
eWVyLCBDRkVycm9yUmVmIGVycm9yKSB7CisgICAgICAgICAgICBpZiAoIWVycm9yICYmIHBsYXll
cikKKyAgICAgICAgICAgICAgICBub3dQbGF5aW5nQ2xpZW50ID0gcGxheWVyOworICAgICAgICAg
ICAgZ290Tm93UGxheWluZyA9IHRydWU7CisgICAgICAgIH0pOworICAgICAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmdvdE5vd1BsYXlpbmcpOworICAgICAgICByZXR1cm4gbm93UGxheWlu
Z0NsaWVudDsKKyAgICB9CisKKyAgICBwaWRfdCBnZXROb3dQbGF5aW5nQ2xpZW50UGlkKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBNUk5vd1BsYXlpbmdDbGllbnRHZXRQcm9jZXNzSWRlbnRpZmll
cihnZXROb3dQbGF5aW5nQ2xpZW50KCkuZ2V0KCkpOworICAgIH0KKworICAgIHZvaWQgbG9hZFBh
Z2VBbmRCZWNvbWVOb3dQbGF5aW5nKGNvbnN0IFN0cmluZyYgcGFnZU5hbWUpCisgICAgeworICAg
ICAgICBbX3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOnBhZ2VOYW1lXTsK
KworICAgICAgICBib29sIGNhbnBsYXl0aHJvdWdoID0gZmFsc2U7CisgICAgICAgIFt3ZWJWaWV3
KCkgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAImNhbnBsYXl0aHJvdWdoIGV2ZW50IiBh
Y3Rpb246WyZdIHsKKyAgICAgICAgICAgIGNhbnBsYXl0aHJvdWdoID0gdHJ1ZTsKKyAgICAgICAg
fV07CisgICAgICAgIHJ1blNjcmlwdFdpdGhVc2VyR2VzdHVyZSgibG9hZCgpIik7CisgICAgICAg
IFV0aWw6OnJ1bigmY2FucGxheXRocm91Z2gpOworCisgICAgICAgIHBsYXkoKTsKKyAgICAgICAg
cGF1c2UoKTsKKyAgICAgICAgQVNTRVJUX0VRKHdlYlZpZXdQaWQoKSwgZ2V0Tm93UGxheWluZ0Ns
aWVudFBpZCgpKTsKKyAgICB9CisKKyAgICB2b2lkIHJ1blNjcmlwdFdpdGhVc2VyR2VzdHVyZShj
b25zdCBTdHJpbmcmIHNjcmlwdCkKKyAgICB7CisgICAgICAgIGJvb2wgY29tcGxldGUgPSBmYWxz
ZTsKKyAgICAgICAgW193ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpzY3JpcHQgY29tcGxldGlv
bkhhbmRsZXI6WyZdIChpZCwgTlNFcnJvciAqKSB7IGNvbXBsZXRlID0gdHJ1ZTsgfV07CisgICAg
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmY29tcGxldGUpOworICAgIH0KKworICAgIHZv
aWQgcGxheSgpCisgICAgeworICAgICAgICBib29sIHBsYXlpbmcgPSBmYWxzZTsKKyAgICAgICAg
W193ZWJWaWV3IHBlcmZvcm1BZnRlclJlY2VpdmluZ01lc3NhZ2U6QCJwbGF5IGV2ZW50IiBhY3Rp
b246WyZdIHsgcGxheWluZyA9IHRydWU7IH1dOworICAgICAgICBydW5TY3JpcHRXaXRoVXNlckdl
c3R1cmUoImF1ZGlvLnBsYXkoKSIpOworICAgICAgICBVdGlsOjpydW4oJnBsYXlpbmcpOworICAg
IH0KKworICAgIHZvaWQgcGF1c2UoKQorICAgIHsKKyAgICAgICAgYm9vbCBwYXVzZWQgPSBmYWxz
ZTsKKyAgICAgICAgW193ZWJWaWV3IHBlcmZvcm1BZnRlclJlY2VpdmluZ01lc3NhZ2U6QCJwYXVz
ZSBldmVudCIgYWN0aW9uOlsmXSB7IHBhdXNlZCA9IHRydWU7IH1dOworICAgICAgICBydW5TY3Jp
cHRXaXRoVXNlckdlc3R1cmUoImF1ZGlvLnBhdXNlKCkiKTsKKyAgICAgICAgVXRpbDo6cnVuKCZw
YXVzZWQpOworICAgIH0KKworICAgIGJvb2wgc2VuZE1lZGlhUmVtb3RlQ29tbWFuZChNUk1lZGlh
UmVtb3RlQ29tbWFuZCBjb21tYW5kLCBDRkRpY3Rpb25hcnlSZWYgb3B0aW9ucyA9IG51bGxwdHIp
CisgICAgeworICAgICAgICBib29sIGNvbXBsZXRlZCA9IGZhbHNlOworICAgICAgICBib29sIHN1
Y2Nlc3M7CisKKyAgICAgICAgTVJNZWRpYVJlbW90ZVNlbmRDb21tYW5kVG9BcHAoY29tbWFuZCwg
b3B0aW9ucywgTlVMTCwgTlVMTCwgc3RhdGljX2Nhc3Q8TVJTZW5kQ29tbWFuZEFwcE9wdGlvbnM+
KDApLCBOVUxMLCBbJl0gKE1SU2VuZENvbW1hbmRFcnJvciBlcnJvciwgQ0ZBcnJheVJlZikgewor
ICAgICAgICAgICAgc3VjY2VzcyA9ICFlcnJvcjsKKyAgICAgICAgICAgIGNvbXBsZXRlZCA9IHRy
dWU7CisgICAgICAgIH0pOworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmNvbXBs
ZXRlZCk7CisKKyAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7CisgICAgfQorCisgICAgYm9vbCBzZW5k
TWVkaWFSZW1vdGVTZWVrQ29tbWFuZChNUk1lZGlhUmVtb3RlQ29tbWFuZCBjb21tYW5kLCBkb3Vi
bGUgaW50ZXJ2YWwpCisgICAgeworICAgICAgICBDRlN0cmluZ1JlZiBzZWVrSW50ZXJ2YWwgPSAo
Y29tbWFuZCA9PSBNUk1lZGlhUmVtb3RlQ29tbWFuZFNlZWtUb1BsYXliYWNrUG9zaXRpb24pID8g
a01STWVkaWFSZW1vdGVPcHRpb25QbGF5YmFja1Bvc2l0aW9uIDoga01STWVkaWFSZW1vdGVPcHRp
b25Ta2lwSW50ZXJ2YWw7CisgICAgICAgIE5TRGljdGlvbmFyeSAqb3B0aW9ucyA9IEB7KF9fYnJp
ZGdlIE5TU3RyaW5nICopc2Vla0ludGVydmFsIDogQChpbnRlcnZhbCl9OworICAgICAgICByZXR1
cm4gc2VuZE1lZGlhUmVtb3RlQ29tbWFuZChjb21tYW5kLCAoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5
UmVmKW9wdGlvbnMpOworICAgIH0KKworICAgIHZvaWQgbGlzdGVuRm9yRXZlbnRNZXNzYWdlcyhz
dGQ6OmluaXRpYWxpemVyX2xpc3Q8Y29uc3QgY2hhcio+IGV2ZW50cykKKyAgICB7CisgICAgICAg
IGZvciAoYXV0byogZXZlbnQgOiBldmVudHMpIHsKKyAgICAgICAgICAgIGF1dG8gZXZlbnRNZXNz
YWdlID0gbWFrZVN0cmluZyhldmVudCwgIiBldmVudCIpOworICAgICAgICAgICAgW19tZXNzYWdl
SGFuZGxlcnMgYWRkT2JqZWN0OmV2ZW50TWVzc2FnZV07CisgICAgICAgICAgICBbd2ViVmlldygp
IHBlcmZvcm1BZnRlclJlY2VpdmluZ01lc3NhZ2U6ZXZlbnRNZXNzYWdlIGFjdGlvbjpbdGhpcywg
ZXZlbnRNZXNzYWdlID0gV1RGTW92ZShldmVudE1lc3NhZ2UpXSB7CisgICAgICAgICAgICAgICAg
X2V2ZW50TGlzdGVuZXJzQ2FsbGVkLmFkZChldmVudE1lc3NhZ2UpOworICAgICAgICAgICAgfV07
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBib29sIGV2ZW50TGlzdGVuZXJXYXNDYWxsZWQoY29u
c3QgU3RyaW5nJiBldmVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBfZXZlbnRMaXN0ZW5lcnND
YWxsZWQuY29udGFpbnMobWFrZVN0cmluZyhldmVudCwgIiBldmVudCIpKTsKKyAgICB9CisKKyAg
ICB2b2lkIGNsZWFyRXZlbnRMaXN0ZW5lclN0YXRlKCkKKyAgICB7CisgICAgICAgIF9ldmVudExp
c3RlbmVyc0NhbGxlZC5jbGVhcigpOworICAgIH0KKworICAgIHZvaWQgd2FpdEZvckV2ZW50TGlz
dGVuZXJUb0JlQ2FsbGVkKGNvbnN0IFN0cmluZyYgZXZlbnQpCisgICAgeworICAgICAgICBpbnQg
dHJpZXMgPSAwOworICAgICAgICBkbyB7CisgICAgICAgICAgICBpZiAoZXZlbnRMaXN0ZW5lcldh
c0NhbGxlZChldmVudCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgVXRp
bDo6c2xlZXAoMC4xKTsKKyAgICAgICAgfSB3aGlsZSAoKyt0cmllcyA8PSA1MCk7CisKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIHZvaWQgbGlzdGVuRm9yU2Vzc2lvbkhhbmRsZXJNZXNz
YWdlcyhzdGQ6OmluaXRpYWxpemVyX2xpc3Q8Y29uc3QgY2hhcio+IGhhbmRsZXJzKQorICAgIHsK
KyAgICAgICAgZm9yIChhdXRvKiBoYW5kbGVyIDogaGFuZGxlcnMpIHsKKyAgICAgICAgICAgIGF1
dG8gaGFuZGxlck1lc3NhZ2UgPSBtYWtlU3RyaW5nKGhhbmRsZXIsICIgaGFuZGxlciIpOworICAg
ICAgICAgICAgW19tZXNzYWdlSGFuZGxlcnMgYWRkT2JqZWN0OmhhbmRsZXJNZXNzYWdlXTsKKyAg
ICAgICAgICAgIFt3ZWJWaWV3KCkgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpoYW5kbGVy
TWVzc2FnZSBhY3Rpb246W3RoaXMsIGhhbmRsZXJNZXNzYWdlID0gV1RGTW92ZShoYW5kbGVyTWVz
c2FnZSldIHsKKyAgICAgICAgICAgICAgICBfbWVkaWFTZXNzaW9uSGFuZGxlcnNDYWxsZWQuYWRk
KGhhbmRsZXJNZXNzYWdlKTsKKyAgICAgICAgICAgIH1dOworICAgICAgICB9CisgICAgfQorCisg
ICAgYm9vbCBzZXNzaW9uSGFuZGxlcldhc0NhbGxlZChjb25zdCBTdHJpbmcmIGhhbmRsZXIpCisg
ICAgeworICAgICAgICByZXR1cm4gX21lZGlhU2Vzc2lvbkhhbmRsZXJzQ2FsbGVkLmNvbnRhaW5z
KG1ha2VTdHJpbmcoaGFuZGxlciwgIiBoYW5kbGVyIikpOworICAgIH0KKworICAgIHZvaWQgd2Fp
dEZvclNlc3Npb25IYW5kbGVyVG9CZUNhbGxlZChjb25zdCBTdHJpbmcmIGhhbmRsZXIpCisgICAg
eworICAgICAgICBpbnQgdHJpZXMgPSAwOworICAgICAgICBkbyB7CisgICAgICAgICAgICBpZiAo
c2Vzc2lvbkhhbmRsZXJXYXNDYWxsZWQoaGFuZGxlcikpCisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgVXRpbDo6c2xlZXAoMC4xKTsKKyAgICAgICAgfSB3aGlsZSAoKyt0cmll
cyA8PSA1MCk7CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJldGFpblB0cjxOU0Fy
cmF5PiBnZXRTdXBwb3J0ZWRDb21tYW5kcygpCisgICAgeworICAgICAgICBib29sIGNvbXBsZXRl
ZCA9IGZhbHNlOworICAgICAgICBSZXRhaW5QdHI8TlNBcnJheT4gcmVzdWx0OworCisgICAgICAg
IE1STWVkaWFSZW1vdGVHZXRTdXBwb3J0ZWRDb21tYW5kc0Zvck9yaWdpbihNUk1lZGlhUmVtb3Rl
R2V0TG9jYWxPcmlnaW4oKSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgWyZdIChDRkFycmF5
UmVmIGNvbW1hbmRzKSB7CisgICAgICAgICAgICByZXN1bHQgPSAoX19icmlkZ2UgTlNBcnJheSAq
KWNvbW1hbmRzOworICAgICAgICAgICAgY29tcGxldGVkID0gdHJ1ZTsKKyAgICAgICAgfSk7CisK
KyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZjb21wbGV0ZWQpOworCisgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgfQorCitwcml2YXRlOgorICAgIFJldGFpblB0cjxXS1dlYlZp
ZXdDb25maWd1cmF0aW9uPiBfY29uZmlndXJhdGlvbjsKKyAgICBSZXRhaW5QdHI8VGVzdFdLV2Vi
Vmlldz4gX3dlYlZpZXc7CisKKyAgICBIYXNoU2V0PFN0cmluZz4gX21lZGlhU2Vzc2lvbkhhbmRs
ZXJzQ2FsbGVkOworICAgIEhhc2hTZXQ8U3RyaW5nPiBfZXZlbnRMaXN0ZW5lcnNDYWxsZWQ7Cisg
ICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBfbWVzc2FnZUhhbmRsZXJzOworfTsKKworVEVT
VF9GKE1lZGlhU2Vzc2lvblRlc3QsIE9ubHlPbmVIYW5kbGVyKQoreworICAgIGxvYWRQYWdlQW5k
QmVjb21lTm93UGxheWluZygibWVkaWEtcmVtb3RlIik7CisKKyAgICBbd2ViVmlldygpIG9iamVj
dEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJzZXRFbXB0eUFjdGlvbkhhbmRsZXJzKFsgJ3BsYXkn
IF0pIl07CisKKyAgICBsaXN0ZW5Gb3JTZXNzaW9uSGFuZGxlck1lc3NhZ2VzKHsgInBsYXkiLCAi
cGF1c2UiLCAic2Vla3RvIiwgInNlZWtmb3J3YXJkIiwgInNlZWtiYWNrd2FyZCIsICJwcmV2aW91
c3RyYWNrIiwgIm5leHR0cmFjayIgfSk7CisgICAgbGlzdGVuRm9yRXZlbnRNZXNzYWdlcyh7ICJw
bGF5IiwgInBhdXNlIiwgInNlZWtlZCIgfSk7CisKKyAgICBzdGF0aWMgVmVjdG9yPE1STWVkaWFS
ZW1vdGVDb21tYW5kPiByZWdpc3RlcmVkQ29tbWFuZHMgPSB7IE1STWVkaWFSZW1vdGVDb21tYW5k
UGxheSB9OworICAgIGF1dG8gY3VycmVudENvbW1hbmRzID0gZ2V0U3VwcG9ydGVkQ29tbWFuZHMo
KTsKKyAgICBmb3IgKE1SQ29tbWFuZEluZm8gKmNvbW1hbmQgaW4gY3VycmVudENvbW1hbmRzLmdl
dCgpKSB7CisgICAgICAgIGlmICghY29tbWFuZC5lbmFibGVkKQorICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIAorICAgICAgICBBU1NFUlRfVFJVRShyZWdpc3RlcmVkQ29tbWFuZHMuY29u
dGFpbnMoY29tbWFuZC5jb21tYW5kKSk7CisgICAgfQorCisgICAgQVNTRVJUX1RSVUUoc2VuZE1l
ZGlhUmVtb3RlQ29tbWFuZChNUk1lZGlhUmVtb3RlQ29tbWFuZFBsYXkpKTsKKyAgICB3YWl0Rm9y
U2Vzc2lvbkhhbmRsZXJUb0JlQ2FsbGVkKCJwbGF5Iik7CisgICAgQVNTRVJUX1RSVUUoc2Vzc2lv
bkhhbmRsZXJXYXNDYWxsZWQoInBsYXkiKSk7CisgICAgQVNTRVJUX0ZBTFNFKGV2ZW50TGlzdGVu
ZXJXYXNDYWxsZWQoInBsYXkiKSk7CisKKyAgICAvLyBUaGUgbWVkaWEgc2Vzc2lvbiBvbmx5IHJl
Z2lzdGVyZWQgZm9yIFBsYXksIGJ1dCBubyBvdGhlciBjb21tYW5kcyBzaG91bGQgcmVhY2ggSFRN
TE1lZGlhRWxlbWVudC4KKyAgICBBU1NFUlRfVFJVRShzZW5kTWVkaWFSZW1vdGVTZWVrQ29tbWFu
ZChNUk1lZGlhUmVtb3RlQ29tbWFuZFNraXBGb3J3YXJkLCAxKSk7CisgICAgQVNTRVJUX0ZBTFNF
KHNlc3Npb25IYW5kbGVyV2FzQ2FsbGVkKCJzZWVrZm9yd2FyZCIpKTsKKyAgICBBU1NFUlRfRkFM
U0UoZXZlbnRMaXN0ZW5lcldhc0NhbGxlZCgic2Vla2VkIikpOworCisgICAgQVNTRVJUX1RSVUUo
c2VuZE1lZGlhUmVtb3RlU2Vla0NvbW1hbmQoTVJNZWRpYVJlbW90ZUNvbW1hbmRTa2lwQmFja3dh
cmQsIDEwKSk7CisgICAgQVNTRVJUX0ZBTFNFKHNlc3Npb25IYW5kbGVyV2FzQ2FsbGVkKCJzZWVr
YmFja3dhcmQiKSk7CisgICAgQVNTRVJUX0ZBTFNFKGV2ZW50TGlzdGVuZXJXYXNDYWxsZWQoInNl
ZWtlZCIpKTsKKworICAgIEFTU0VSVF9UUlVFKHNlbmRNZWRpYVJlbW90ZVNlZWtDb21tYW5kKE1S
TWVkaWFSZW1vdGVDb21tYW5kU2Vla1RvUGxheWJhY2tQb3NpdGlvbiwgNikpOworICAgIEFTU0VS
VF9GQUxTRShzZXNzaW9uSGFuZGxlcldhc0NhbGxlZCgic2Vla3RvIikpOworICAgIEFTU0VSVF9G
QUxTRShldmVudExpc3RlbmVyV2FzQ2FsbGVkKCJzZWVrZWQiKSk7CisKKyAgICBBU1NFUlRfVFJV
RShzZW5kTWVkaWFSZW1vdGVDb21tYW5kKE1STWVkaWFSZW1vdGVDb21tYW5kTmV4dFRyYWNrKSk7
CisgICAgQVNTRVJUX0ZBTFNFKHNlc3Npb25IYW5kbGVyV2FzQ2FsbGVkKCJuZXh0dHJhY2siKSk7
CisKKyAgICBBU1NFUlRfVFJVRShzZW5kTWVkaWFSZW1vdGVDb21tYW5kKE1STWVkaWFSZW1vdGVD
b21tYW5kUHJldmlvdXNUcmFjaykpOworICAgIEFTU0VSVF9GQUxTRShzZXNzaW9uSGFuZGxlcldh
c0NhbGxlZCgicHJldmlvdXN0cmFjayIpKTsKK30KKworVEVTVF9GKE1lZGlhU2Vzc2lvblRlc3Qs
IFJlbW90ZUNvbW1hbmRzKQoreworICAgIGxvYWRQYWdlQW5kQmVjb21lTm93UGxheWluZygibWVk
aWEtcmVtb3RlIik7CisKKyAgICBbd2ViVmlldygpIG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6QCJzZXRFbXB0eUFjdGlvbkhhbmRsZXJzKFsgJ3BsYXknLCAncGF1c2UnLCAnc2Vla3RvJywg
J3NlZWtmb3J3YXJkJywgJ3NlZWtiYWNrd2FyZCcsICdwcmV2aW91c3RyYWNrJywgJ25leHR0cmFj
aycgXSkiXTsKKworICAgIGxpc3RlbkZvclNlc3Npb25IYW5kbGVyTWVzc2FnZXMoeyAicGxheSIs
ICJwYXVzZSIsICJzZWVrdG8iLCAic2Vla2ZvcndhcmQiLCAic2Vla2JhY2t3YXJkIiwgInByZXZp
b3VzdHJhY2siLCAibmV4dHRyYWNrIiB9KTsKKyAgICBsaXN0ZW5Gb3JFdmVudE1lc3NhZ2VzKHsg
InBsYXkiLCAicGF1c2UiLCAic2Vla2VkIiB9KTsKKworICAgIHN0YXRpYyBWZWN0b3I8TVJNZWRp
YVJlbW90ZUNvbW1hbmQ+IHJlZ2lzdGVyZWRDb21tYW5kcyA9IHsgTVJNZWRpYVJlbW90ZUNvbW1h
bmRQbGF5LCBNUk1lZGlhUmVtb3RlQ29tbWFuZFBhdXNlLCBNUk1lZGlhUmVtb3RlQ29tbWFuZFNl
ZWtUb1BsYXliYWNrUG9zaXRpb24sIE1STWVkaWFSZW1vdGVDb21tYW5kU2tpcEZvcndhcmQsIE1S
TWVkaWFSZW1vdGVDb21tYW5kU2tpcEJhY2t3YXJkLCBNUk1lZGlhUmVtb3RlQ29tbWFuZFByZXZp
b3VzVHJhY2ssIE1STWVkaWFSZW1vdGVDb21tYW5kTmV4dFRyYWNrIH07CisgICAgYXV0byBjdXJy
ZW50Q29tbWFuZHMgPSBnZXRTdXBwb3J0ZWRDb21tYW5kcygpOworICAgIGZvciAoTVJDb21tYW5k
SW5mbyAqY29tbWFuZCBpbiBjdXJyZW50Q29tbWFuZHMuZ2V0KCkpIHsKKyAgICAgICAgaWYgKCFj
b21tYW5kLmVuYWJsZWQpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgCisgICAgICAg
IEFTU0VSVF9UUlVFKHJlZ2lzdGVyZWRDb21tYW5kcy5jb250YWlucyhjb21tYW5kLmNvbW1hbmQp
KTsKKyAgICB9CisKKyAgICBBU1NFUlRfVFJVRShzZW5kTWVkaWFSZW1vdGVDb21tYW5kKE1STWVk
aWFSZW1vdGVDb21tYW5kUGxheSkpOworICAgIHdhaXRGb3JTZXNzaW9uSGFuZGxlclRvQmVDYWxs
ZWQoInBsYXkiKTsKKyAgICBBU1NFUlRfVFJVRShzZXNzaW9uSGFuZGxlcldhc0NhbGxlZCgicGxh
eSIpKTsKKyAgICBBU1NFUlRfRkFMU0UoZXZlbnRMaXN0ZW5lcldhc0NhbGxlZCgicGxheSIpKTsK
KworICAgIEFTU0VSVF9UUlVFKHNlbmRNZWRpYVJlbW90ZUNvbW1hbmQoTVJNZWRpYVJlbW90ZUNv
bW1hbmRQYXVzZSkpOworICAgIHdhaXRGb3JTZXNzaW9uSGFuZGxlclRvQmVDYWxsZWQoInBhdXNl
Iik7CisgICAgQVNTRVJUX1RSVUUoc2Vzc2lvbkhhbmRsZXJXYXNDYWxsZWQoInBhdXNlIikpOwor
ICAgIEFTU0VSVF9GQUxTRShldmVudExpc3RlbmVyV2FzQ2FsbGVkKCJwYXVzZSIpKTsKKworICAg
IEFTU0VSVF9UUlVFKHNlbmRNZWRpYVJlbW90ZVNlZWtDb21tYW5kKE1STWVkaWFSZW1vdGVDb21t
YW5kU2tpcEZvcndhcmQsIDEpKTsKKyAgICB3YWl0Rm9yU2Vzc2lvbkhhbmRsZXJUb0JlQ2FsbGVk
KCJzZWVrZm9yd2FyZCIpOworICAgIEFTU0VSVF9UUlVFKHNlc3Npb25IYW5kbGVyV2FzQ2FsbGVk
KCJzZWVrZm9yd2FyZCIpKTsKKyAgICBBU1NFUlRfRkFMU0UoZXZlbnRMaXN0ZW5lcldhc0NhbGxl
ZCgic2Vla2VkIikpOworCisgICAgQVNTRVJUX1RSVUUoc2VuZE1lZGlhUmVtb3RlU2Vla0NvbW1h
bmQoTVJNZWRpYVJlbW90ZUNvbW1hbmRTa2lwQmFja3dhcmQsIDEwKSk7CisgICAgd2FpdEZvclNl
c3Npb25IYW5kbGVyVG9CZUNhbGxlZCgic2Vla2JhY2t3YXJkIik7CisgICAgQVNTRVJUX1RSVUUo
c2Vzc2lvbkhhbmRsZXJXYXNDYWxsZWQoInNlZWtiYWNrd2FyZCIpKTsKKyAgICBBU1NFUlRfRkFM
U0UoZXZlbnRMaXN0ZW5lcldhc0NhbGxlZCgic2Vla2VkIikpOworCisgICAgQVNTRVJUX1RSVUUo
c2VuZE1lZGlhUmVtb3RlU2Vla0NvbW1hbmQoTVJNZWRpYVJlbW90ZUNvbW1hbmRTZWVrVG9QbGF5
YmFja1Bvc2l0aW9uLCA2KSk7CisgICAgd2FpdEZvclNlc3Npb25IYW5kbGVyVG9CZUNhbGxlZCgi
c2Vla3RvIik7CisgICAgQVNTRVJUX1RSVUUoc2Vzc2lvbkhhbmRsZXJXYXNDYWxsZWQoInNlZWt0
byIpKTsKKyAgICBBU1NFUlRfRkFMU0UoZXZlbnRMaXN0ZW5lcldhc0NhbGxlZCgic2Vla2VkIikp
OworCisgICAgQVNTRVJUX1RSVUUoc2VuZE1lZGlhUmVtb3RlQ29tbWFuZChNUk1lZGlhUmVtb3Rl
Q29tbWFuZE5leHRUcmFjaykpOworICAgIHdhaXRGb3JTZXNzaW9uSGFuZGxlclRvQmVDYWxsZWQo
Im5leHR0cmFjayIpOworICAgIEFTU0VSVF9UUlVFKHNlc3Npb25IYW5kbGVyV2FzQ2FsbGVkKCJu
ZXh0dHJhY2siKSk7CisKKyAgICBBU1NFUlRfVFJVRShzZW5kTWVkaWFSZW1vdGVDb21tYW5kKE1S
TWVkaWFSZW1vdGVDb21tYW5kUHJldmlvdXNUcmFjaykpOworICAgIHdhaXRGb3JTZXNzaW9uSGFu
ZGxlclRvQmVDYWxsZWQoInByZXZpb3VzdHJhY2siKTsKKyAgICBBU1NFUlRfVFJVRShzZXNzaW9u
SGFuZGxlcldhc0NhbGxlZCgicHJldmlvdXN0cmFjayIpKTsKKworICAgIC8vIFVucmVnaXN0ZXIg
YWN0aW9uIGhhbmRsZXJzLCBzdXBwb3J0ZWQgY29tbWFuZHMgc2hvdWxkIGdvIHRvIEhUTUxNZWRp
YUVsZW1lbnQuCisgICAgW3dlYlZpZXcoKSBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAi
Y2xlYXJBY3Rpb25IYW5kbGVycygpIl07CisgICAgY2xlYXJFdmVudExpc3RlbmVyU3RhdGUoKTsK
KworICAgIEFTU0VSVF9UUlVFKHNlbmRNZWRpYVJlbW90ZUNvbW1hbmQoTVJNZWRpYVJlbW90ZUNv
bW1hbmRQbGF5KSk7CisgICAgd2FpdEZvckV2ZW50TGlzdGVuZXJUb0JlQ2FsbGVkKCJwbGF5Iik7
CisgICAgQVNTRVJUX1RSVUUoZXZlbnRMaXN0ZW5lcldhc0NhbGxlZCgicGxheSIpKTsKKworICAg
IEFTU0VSVF9UUlVFKHNlbmRNZWRpYVJlbW90ZUNvbW1hbmQoTVJNZWRpYVJlbW90ZUNvbW1hbmRQ
YXVzZSkpOworICAgIHdhaXRGb3JFdmVudExpc3RlbmVyVG9CZUNhbGxlZCgicGF1c2UiKTsKKyAg
ICBBU1NFUlRfVFJVRShldmVudExpc3RlbmVyV2FzQ2FsbGVkKCJwYXVzZSIpKTsKKworICAgIEFT
U0VSVF9UUlVFKHNlbmRNZWRpYVJlbW90ZVNlZWtDb21tYW5kKE1STWVkaWFSZW1vdGVDb21tYW5k
U2tpcEZvcndhcmQsIDEpKTsKKyAgICB3YWl0Rm9yRXZlbnRMaXN0ZW5lclRvQmVDYWxsZWQoInNl
ZWtlZCIpOworICAgIEFTU0VSVF9UUlVFKGV2ZW50TGlzdGVuZXJXYXNDYWxsZWQoInNlZWtlZCIp
KTsKKyAgICBjbGVhckV2ZW50TGlzdGVuZXJTdGF0ZSgpOworCisgICAgQVNTRVJUX1RSVUUoc2Vu
ZE1lZGlhUmVtb3RlU2Vla0NvbW1hbmQoTVJNZWRpYVJlbW90ZUNvbW1hbmRTa2lwQmFja3dhcmQs
IDEwKSk7CisgICAgd2FpdEZvckV2ZW50TGlzdGVuZXJUb0JlQ2FsbGVkKCJzZWVrZWQiKTsKKyAg
ICBBU1NFUlRfVFJVRShldmVudExpc3RlbmVyV2FzQ2FsbGVkKCJzZWVrZWQiKSk7CisgICAgY2xl
YXJFdmVudExpc3RlbmVyU3RhdGUoKTsKKworICAgIEFTU0VSVF9UUlVFKHNlbmRNZWRpYVJlbW90
ZVNlZWtDb21tYW5kKE1STWVkaWFSZW1vdGVDb21tYW5kU2Vla1RvUGxheWJhY2tQb3NpdGlvbiwg
NikpOworICAgIHdhaXRGb3JFdmVudExpc3RlbmVyVG9CZUNhbGxlZCgic2Vla2VkIik7CisgICAg
QVNTRVJUX1RSVUUoZXZlbnRMaXN0ZW5lcldhc0NhbGxlZCgic2Vla2VkIikpOworfQorCit9CisK
KyNlbmRpZiAvLyBQTEFURk9STShNQUMpICYmIEVOQUJMRShNRURJQV9TRVNTSU9OKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9tZWRpYS1yZW1vdGUu
aHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvbWVkaWEtcmVtb3Rl
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMWM5OTNjN2NkNDAxYWZmMzJjZjIzMmVkYmM4ODNlY2RjNzliYjM1
ZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvbWVkaWEtcmVtb3RlLmh0bWwKQEAgLTAsMCArMSwxMzkgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKyAgICAjZXZlbnRzbG9nIHsKKyAgICAgICAgZm9udC1z
aXplOiAxMHB4OyAKKyAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMCUgLSAoMzIwcHgpKTsKKyAgICAg
ICAgb3ZlcmZsb3cteTogc2Nyb2xsOworICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDE0
NywgMTI4LCAxMDgsIDAuMjUpOworICAgIH0KKzwvc3R5bGU+CisgICAgPHNjcmlwdD4KKworICAg
ICAgICBsZXQgcGxheWxpc3QgPSB7CisgICAgICAgICAgICBjdXJyZW50OiAwLAorICAgICAgICAg
ICAgbWV0YWRhdGE6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHVy
bDogJ3ZpZGVvLXdpdGgtYXVkaW8ubXA0JywKKyAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICdC
aXAgQm9wIFdpdGggQXVkaW8nLAorICAgICAgICAgICAgICAgICAgICBhcnRpc3Q6ICdUaGUgQmlw
IEJvcCBBdXRob3JzJywKKyAgICAgICAgICAgICAgICAgICAgYWxidW06ICdXZWJLaXQgR3JlYXRl
c3QgSGl0cycsCisgICAgICAgICAgICAgICAgICAgIGFydHdvcms6IFsKKworICAgICAgICAgICAg
ICAgICAgICBdLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICB1cmw6ICd2aWRlby13aXRob3V0LWF1ZGlvLm1wNCcsCisgICAgICAgICAg
ICAgICAgICAgIHRpdGxlOiAnQmlwIEJvcCBXaXRob3V0IEF1ZGlvJywKKyAgICAgICAgICAgICAg
ICAgICAgYXJ0aXN0OiAnVGhlIEJpcCBCb3AgQXV0aG9ycycsCisgICAgICAgICAgICAgICAgICAg
IGFsYnVtOiAnV2ViS2l0IE9yaWdpbmFsIFRlc3QgQ29udGVudCcsCisgICAgICAgICAgICAgICAg
ICAgIGFydHdvcms6IFsKKworICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAg
IH0sCisgICAgICAgICAgICBdLAorICAgICAgICB9OworCisgICAgICAgIGZ1bmN0aW9uIHNldE1l
dGFkYXRhKGRhdGEpCisgICAgICAgIHsKKyAgICAgICAgICAgIG5hdmlnYXRvci5tZWRpYVNlc3Np
b24ubWV0YWRhdGEgPSBuZXcgTWVkaWFNZXRhZGF0YShkYXRhKTsKKyAgICAgICAgICAgIHBvc3RN
ZXNzYWdlKCdzZXQgbWV0YWRhdGEnKQorICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2V0
UGxheWxpc3RNZXRhZGF0YShpbmRleCkKKyAgICAgICAgeworICAgICAgICAgICAgc2V0TWV0YWRh
dGEocGxheWxpc3QubWV0YWRhdGFbaW5kZXhdKTsKKyAgICAgICAgCisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBjbGVhckFjdGlvbkhhbmRsZXJzKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgc2V0RW1wdHlBY3Rpb25IYW5kbGVycyhbXSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBzZXRFbXB0eUFjdGlvbkhhbmRsZXJzKGhhbmRsZXJzKQorICAgICAgICB7CisgICAgICAg
ICAgICBjb25zdCBhY3Rpb25zID0geworICAgICAgICAgICAgICAgICdwbGF5JyA6ICgpID0+IHsg
cG9zdE1lc3NhZ2UoJ3BsYXkgaGFuZGxlcicpOyB9LAorCisgICAgICAgICAgICAgICAgJ3BhdXNl
JyA6ICgpID0+IHsgcG9zdE1lc3NhZ2UoJ3BhdXNlIGhhbmRsZXInKSB9LAorICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgICdzZWVrdG8nIDogKGRldGFpbHMpID0+IHsgcG9zdE1lc3Nh
Z2UoJ3NlZWt0byBoYW5kbGVyJykgfSwKKworICAgICAgICAgICAgICAgICdzZWVrZm9yd2FyZCcg
OiAoZGV0YWlscykgPT4geyBwb3N0TWVzc2FnZSgnc2Vla2ZvcndhcmQgaGFuZGxlcicpIH0sCisK
KyAgICAgICAgICAgICAgICAnc2Vla2JhY2t3YXJkJyA6IChkZXRhaWxzKSA9PiB7IHBvc3RNZXNz
YWdlKCdzZWVrYmFja3dhcmQgaGFuZGxlcicpIH0sIAorCisgICAgICAgICAgICAgICAgJ3ByZXZp
b3VzdHJhY2snIDogKCkgPT4geyBwb3N0TWVzc2FnZSgncHJldmlvdXN0cmFjayBoYW5kbGVyJykg
fSwgCisKKyAgICAgICAgICAgICAgICAnbmV4dHRyYWNrJyA6ICgpID0+IHsgcG9zdE1lc3NhZ2Uo
J25leHR0cmFjayBoYW5kbGVyJykgfSwgCisgICAgICAgICAgICB9OworCisgICAgICAgICAgICBP
YmplY3Qua2V5cyhhY3Rpb25zKS5mb3JFYWNoKGFjdGlvbiA9PiB7ICBuYXZpZ2F0b3IubWVkaWFT
ZXNzaW9uLnNldEFjdGlvbkhhbmRsZXIoYWN0aW9uLCBudWxsKTsgfSk7CisKKyAgICAgICAgICAg
IGhhbmRsZXJzLmZvckVhY2goaGFuZGxlciA9PiB7CisgICAgICAgICAgICAgICAgaWYgKCFhY3Rp
b25zW2hhbmRsZXJdKSB7CisgICAgICAgICAgICAgICAgICAgIGxvZyhgYXNrZWQgdG8gcmVnaXN0
ZXIgaGFuZGxlciBmb3IgdW5rbm93biBhY3Rpb24gJyR7aGFuZGxlcn0nYCk7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBs
b2coYHJlZ2lzdGVyaW5nICcke2hhbmRsZXJ9JyBoYW5kbGVyYCk7CisgICAgICAgICAgICAgICAg
bmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5zZXRBY3Rpb25IYW5kbGVyKGhhbmRsZXIsIGFjdGlvbnNb
aGFuZGxlcl0pOyAKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gcG9zdE1lc3NhZ2UobWVzc2FnZSkKKyAgICAgICAgeworICAgICAgICAgICAgbG9nKGAke21l
c3NhZ2V9YCkKKyAgICAgICAgICAgIGlmICh3aW5kb3cud2Via2l0KQorICAgICAgICAgICAgICAg
IHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKG1l
c3NhZ2UpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gcG9zdEV2ZW50KGV2dCkgCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHBvc3RNZXNzYWdlKGAke2V2dC50eXBlfSBldmVudGApOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmdW5jdGlvbiBsb2FkKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgbGV0IHNyYyA9IHBsYXlsaXN0Lm1ldGFkYXRhWzBdLnVybDsKKyAgICAgICAg
ICAgIGlmICghd2luZG93LndlYmtpdCkKKyAgICAgICAgICAgICAgICBzcmMgPSBgLi4vV2ViS2l0
TGVnYWN5L2lvcy8ke3NyY31gOworICAgICAgICAgICAgYXVkaW8uc3JjID0gc3JjOworICAgICAg
ICAgICAgYXVkaW8ubG9hZCgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmdW5jdGlv
biBsb2cobXNnKQorICAgICAgICB7CisgICAgICAgICAgICBsZXQgZXZlbnRMb2cgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnZXZlbnRzbG9nJykKKyAgICAgICAgICAgIGxldCBub3RlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgICAgICBub3RlLmlubmVySFRNTCA9
IG1zZzsKKyAgICAgICAgICAgIGV2ZW50TG9nLmluc2VydEJlZm9yZShub3RlLCBldmVudExvZy5m
aXJzdENoaWxkKTsKKyAgICAgICAgfQorCisgICAgICAgIAorICAgICAgICB3aW5kb3cuYWRkRXZl
bnRMaXN0ZW5lcigibG9hZCIsIGV2dCA9PiB7CisgICAgICAgICAgICBhdWRpbyA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdhdWRpbycpWzBdOworICAgICAgICAgICAgYXVkaW8uYWRk
RXZlbnRMaXN0ZW5lcignY2FucGxheXRocm91Z2gnLCBwb3N0RXZlbnQpOworICAgICAgICAgICAg
YXVkaW8uYWRkRXZlbnRMaXN0ZW5lcigncGxheScsIHBvc3RFdmVudCk7CisgICAgICAgICAgICBh
dWRpby5hZGRFdmVudExpc3RlbmVyKCdwYXVzZScsIHBvc3RFdmVudCk7CisgICAgICAgICAgICBh
dWRpby5hZGRFdmVudExpc3RlbmVyKCdzZWVrZWQnLCBwb3N0RXZlbnQpOworICAgICAgICB9LCBm
YWxzZSk7CisKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxhdWRpbyBjb250
cm9scz4gPC9hdWRpbz4KKyAgICA8YnI+CisgICAgPGJ1dHRvbiBvbmNsaWNrPSJzZXRFbXB0eUFj
dGlvbkhhbmRsZXJzKFsncGxheScsJ3BhdXNlJywnc2Vla3RvJ10pIj5FbXB0eSBQbGF5LCBQYXVz
ZSwgU2Vla1RvPC9idXR0b24+CisgICAgPGJyPgorICAgIDxidXR0b24gb25jbGljaz0ic2V0RW1w
dHlBY3Rpb25IYW5kbGVycyhbJ3BsYXknLCdwYXVzZScsJ3NlZWtmb3J3YXJkJywnc2Vla2JhY2t3
YXJkJ10pIj5FbXB0eSBQbGF5LCBQYXVzZSwgU2VlayBGb3J3YXJkLCBTZWVrIEJhY2t3YXJkPC9i
dXR0b24+CisgICAgPGJyPgorICAgIDxidXR0b24gb25jbGljaz0ibG9hZCgpIj5Mb2FkPC9idXR0
b24+CisgICAgPGJyPgorICAgIDxidXR0b24gb25jbGljaz0ic2V0UGxheWxpc3RNZXRhZGF0YSgw
KSI+U2V0IE1ldGFkYXRhIDE8L2J1dHRvbj48YnV0dG9uIG9uY2xpY2s9InNldFBsYXlsaXN0TWV0
YWRhdGEoMSkiPlNldCBNZXRhZGF0YSAyPC9idXR0b24+CisgICAgPGJyPgorICAgIDxkaXYgaWQ9
J2V2ZW50c2xvZyc+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419618</attachid>
            <date>2021-02-08 13:14:47 -0800</date>
            <delta_ts>2021-02-08 13:47:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221431-20210208131447.patch</filename>
            <type>text/plain</type>
            <size>1715</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTFjMzFlNjc5MDE1NTlj
ZTM0MzZkMmRlYmI3NjgzYWMzYTY2ZjY2NC4uMGViOTc5ZmI2YjkwZWRlODlkNmM0ZmFjYTA5M2Zh
MzAzM2Q0YjY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTAyLTA4ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIENvbm5l
Y3QgTWVkaWFTZXNzaW9uIHdpdGggTWVkaWFSZW1vdGUgYW5kIE5vd1BsYXlpbmcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTQzMQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNzQwMDAzNjM+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgZml4IHRoZSBO
b3dQbGF5aW5nSW5mbyBlbmNvZGVyIGFmdGVyIHIyNzI0NDUuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oOgorICAgICAgICAoV2ViQ29yZTo6Tm93UGxheWluZ0lu
Zm86OmVuY29kZSBjb25zdCk6IFVwZGF0ZSB0aGUgZW5jb2RlciBmb3IgbmV3IGZpZWxkcyBhZGRl
ZC4KKwogMjAyMS0wMi0wNSAgUmlja3kgTW9uZGVsbG8gIDxybW9uZGVsbG9AYXBwbGUuY29tPgog
CiAgICAgICAgIEFsbG93IFBhc3N3b3JkIEF1dG9GaWxsIGluIG1vcmUgdGV4dCBmaWVsZCBjb25m
aWd1cmF0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93
UGxheWluZ0luZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJ
bmZvLmgKaW5kZXggNzU0ODI3YWE2MGYyOTUwN2RlMzE3YWJkYzc3MjdmMWExOGY0ZGJmMi4uZWVl
Mzg4MDY4MWJhODljOGE2NmM0Y2U4ZjljZmNmYjU0YTE4NzIzZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oCkBAIC00OCw3ICs0OCw3IEBAIHN0
cnVjdCBOb3dQbGF5aW5nSW5mbyB7CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IGlubGluZSB2
b2lkIE5vd1BsYXlpbmdJbmZvOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAg
ICBlbmNvZGVyIDw8IHRpdGxlIDw8IHNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllciA8PCBkdXJh
dGlvbiA8PCBjdXJyZW50VGltZSA8PCBzdXBwb3J0c1NlZWtpbmcgPDwgdW5pcXVlSWRlbnRpZmll
ciA8PCBpc1BsYXlpbmcgPDwgYWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eTsKKyAg
ICBlbmNvZGVyIDw8IHRpdGxlIDw8IGFydGlzdCA8PCBhbGJ1bSA8PCBzb3VyY2VBcHBsaWNhdGlv
bklkZW50aWZpZXIgPDwgZHVyYXRpb24gPDwgY3VycmVudFRpbWUgPDwgc3VwcG9ydHNTZWVraW5n
IDw8IHVuaXF1ZUlkZW50aWZpZXIgPDwgaXNQbGF5aW5nIDw8IGFsbG93c05vd1BsYXlpbmdDb250
cm9sc1Zpc2liaWxpdHk7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGluZSBPcHRp
b25hbDxOb3dQbGF5aW5nSW5mbz4gTm93UGxheWluZ0luZm86OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419657</attachid>
            <date>2021-02-08 17:17:07 -0800</date>
            <delta_ts>2021-02-08 17:47:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221431-20210208171707.patch</filename>
            <type>text/plain</type>
            <size>2843</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNDUwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYThjODU0MmUyY2M5ZWE4YWE1NGZmY2JlMjdmYWQ0NzBk
N2Q4ZTliNi4uNmE4OWI3MDBmNWVlNjc0MmUxZTg2NmU1MDhhZGQ4ZTE1MGIxNGEyOSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
IEBACisyMDIxLTAyLTA4ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgor
CisgICAgICAgIFtNYWNdIENvbm5lY3QgTWVkaWFTZXNzaW9uIHdpdGggTWVkaWFSZW1vdGUgYW5k
IE5vd1BsYXlpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyMTQzMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzQwMDAzNjM+CisKKyAgICAgICAg
VW5yZXZpZXdlZCBidWlsZCBmaXggZm9yIG1hY09TIENhdGFsaW5hLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9NZWRpYVNlc3Npb24ubW06CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUX0YpOiBBZGQgY29tcGlsZSBndWFyZHMgZm9yIENhdGFsaW5hLgor
CiAyMDIxLTAyLTA1ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAg
ICAgICAgIFtNYWNdIENvbm5lY3QgTWVkaWFTZXNzaW9uIHdpdGggTWVkaWFSZW1vdGUgYW5kIE5v
d1BsYXlpbmcKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvTWVkaWFTZXNzaW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9NZWRpYVNlc3Npb24ubW0KaW5kZXggMzkyOTNhYTAwYWE4ZTcyM2EwMzY4MjVjMGNjNmZmODQw
NjE5Y2I0OC4uYTFiMjY0ZWYzNTE2MGNhMjMzZDdmZmNiNGZjZjk4ODViNWJkYzRkMyAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9NZWRpYVNlc3Npb24u
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9NZWRpYVNlc3Np
b24ubW0KQEAgLTI3MSw2ICsyNzEsNyBAQCBURVNUX0YoTWVkaWFTZXNzaW9uVGVzdCwgT25seU9u
ZUhhbmRsZXIpCiAgICAgbGlzdGVuRm9yU2Vzc2lvbkhhbmRsZXJNZXNzYWdlcyh7ICJwbGF5Iiwg
InBhdXNlIiwgInNlZWt0byIsICJzZWVrZm9yd2FyZCIsICJzZWVrYmFja3dhcmQiLCAicHJldmlv
dXN0cmFjayIsICJuZXh0dHJhY2siIH0pOwogICAgIGxpc3RlbkZvckV2ZW50TWVzc2FnZXMoeyAi
cGxheSIsICJwYXVzZSIsICJzZWVrZWQiIH0pOwogCisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDE1MDAKICAgICBzdGF0aWMgVmVjdG9yPE1STWVkaWFSZW1vdGVDb21t
YW5kPiByZWdpc3RlcmVkQ29tbWFuZHMgPSB7IE1STWVkaWFSZW1vdGVDb21tYW5kUGxheSB9Owog
ICAgIGF1dG8gY3VycmVudENvbW1hbmRzID0gZ2V0U3VwcG9ydGVkQ29tbWFuZHMoKTsKICAgICBm
b3IgKE1SQ29tbWFuZEluZm8gKmNvbW1hbmQgaW4gY3VycmVudENvbW1hbmRzLmdldCgpKSB7CkBA
IC0yNzksNiArMjgwLDcgQEAgVEVTVF9GKE1lZGlhU2Vzc2lvblRlc3QsIE9ubHlPbmVIYW5kbGVy
KQogICAgICAgICAKICAgICAgICAgQVNTRVJUX1RSVUUocmVnaXN0ZXJlZENvbW1hbmRzLmNvbnRh
aW5zKGNvbW1hbmQuY29tbWFuZCkpOwogICAgIH0KKyNlbmRpZgogCiAgICAgQVNTRVJUX1RSVUUo
c2VuZE1lZGlhUmVtb3RlQ29tbWFuZChNUk1lZGlhUmVtb3RlQ29tbWFuZFBsYXkpKTsKICAgICB3
YWl0Rm9yU2Vzc2lvbkhhbmRsZXJUb0JlQ2FsbGVkKCJwbGF5Iik7CkBAIC0zMTQsNiArMzE2LDcg
QEAgVEVTVF9GKE1lZGlhU2Vzc2lvblRlc3QsIFJlbW90ZUNvbW1hbmRzKQogICAgIGxpc3RlbkZv
clNlc3Npb25IYW5kbGVyTWVzc2FnZXMoeyAicGxheSIsICJwYXVzZSIsICJzZWVrdG8iLCAic2Vl
a2ZvcndhcmQiLCAic2Vla2JhY2t3YXJkIiwgInByZXZpb3VzdHJhY2siLCAibmV4dHRyYWNrIiB9
KTsKICAgICBsaXN0ZW5Gb3JFdmVudE1lc3NhZ2VzKHsgInBsYXkiLCAicGF1c2UiLCAic2Vla2Vk
IiB9KTsKIAorI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNTAwCiAg
ICAgc3RhdGljIFZlY3RvcjxNUk1lZGlhUmVtb3RlQ29tbWFuZD4gcmVnaXN0ZXJlZENvbW1hbmRz
ID0geyBNUk1lZGlhUmVtb3RlQ29tbWFuZFBsYXksIE1STWVkaWFSZW1vdGVDb21tYW5kUGF1c2Us
IE1STWVkaWFSZW1vdGVDb21tYW5kU2Vla1RvUGxheWJhY2tQb3NpdGlvbiwgTVJNZWRpYVJlbW90
ZUNvbW1hbmRTa2lwRm9yd2FyZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRTa2lwQmFja3dhcmQsIE1S
TWVkaWFSZW1vdGVDb21tYW5kUHJldmlvdXNUcmFjaywgTVJNZWRpYVJlbW90ZUNvbW1hbmROZXh0
VHJhY2sgfTsKICAgICBhdXRvIGN1cnJlbnRDb21tYW5kcyA9IGdldFN1cHBvcnRlZENvbW1hbmRz
KCk7CiAgICAgZm9yIChNUkNvbW1hbmRJbmZvICpjb21tYW5kIGluIGN1cnJlbnRDb21tYW5kcy5n
ZXQoKSkgewpAQCAtMzIyLDYgKzMyNSw3IEBAIFRFU1RfRihNZWRpYVNlc3Npb25UZXN0LCBSZW1v
dGVDb21tYW5kcykKICAgICAgICAgCiAgICAgICAgIEFTU0VSVF9UUlVFKHJlZ2lzdGVyZWRDb21t
YW5kcy5jb250YWlucyhjb21tYW5kLmNvbW1hbmQpKTsKICAgICB9CisjZW5kaWYKIAogICAgIEFT
U0VSVF9UUlVFKHNlbmRNZWRpYVJlbW90ZUNvbW1hbmQoTVJNZWRpYVJlbW90ZUNvbW1hbmRQbGF5
KSk7CiAgICAgd2FpdEZvclNlc3Npb25IYW5kbGVyVG9CZUNhbGxlZCgicGxheSIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419718</attachid>
            <date>2021-02-09 08:19:53 -0800</date>
            <delta_ts>2021-02-09 08:28:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221431-20210209081953.patch</filename>
            <type>text/plain</type>
            <size>2455</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTFjMzFlNjc5MDE1NTlj
ZTM0MzZkMmRlYmI3NjgzYWMzYTY2ZjY2NC4uZDJlNDQzNTcxM2EzY2EwOWY3MmM5NzAxNzc3NWQx
Njk5MjI1NjdhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTAyLTA5ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIENvbm5l
Y3QgTWVkaWFTZXNzaW9uIHdpdGggTWVkaWFSZW1vdGUgYW5kIE5vd1BsYXlpbmcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTQzMQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNzQwMDAzNjM+CisKKyAgICAgICAgUmV2aWV3ZWQsIGZpeCBhIGxheW91
dCB0ZXN0IGFzc2VydC4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vz
c2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUNvbW1hbmRGb3JNZWRpYVNlc3Np
b25BY3Rpb24pOiBNYXAgInNraXBhZCIgdG8gIm5leHR0cmFjayIuCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVNlc3Npb246OnNldEFjdGlvbkhhbmRsZXIpOiBEb24ndCB0cnkgdG8gcmVnaXN0ZXIg
bWVkaWEgc2Vzc2lvbiBhY3Rpb25zCisgICAgICAgIGZvciB3aGljaCB0aGVyZSBpcyBubyBwbGF0
Zm9ybSBjb21tYW5kLgorCiAyMDIxLTAyLTA1ICBSaWNreSBNb25kZWxsbyAgPHJtb25kZWxsb0Bh
cHBsZS5jb20+CiAKICAgICAgICAgQWxsb3cgUGFzc3dvcmQgQXV0b0ZpbGwgaW4gbW9yZSB0ZXh0
IGZpZWxkIGNvbmZpZ3VyYXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcAppbmRleCAyNDhiMTM3NTY4MzI5ZmE5OTQyYmVk
NWFlZWI2MGQ0OTMzZGIwOTQxLi45MDFkZGIwYTdiNGZlOWU5MzYzZTVmZjMxZjJlYWI0N2E5ZDM2
NDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRp
YVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01l
ZGlhU2Vzc2lvbi5jcHAKQEAgLTU4LDYgKzU4LDcgQEAgc3RhdGljIFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgcGxhdGZvcm1Db21tYW5kRm9yTWVkaWFTZXMK
ICAgICAgICAgICAgIHsgTWVkaWFTZXNzaW9uQWN0aW9uOjpOZXh0dHJhY2ssIFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpQcmV2aW91c1RyYWNrQ29tbWFuZCB9LAogICAgICAgICAgICAgeyBNZWRpYVNl
c3Npb25BY3Rpb246OlN0b3AsIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTdG9wQ29tbWFuZCB9LAog
ICAgICAgICAgICAgeyBNZWRpYVNlc3Npb25BY3Rpb246OlNlZWt0bywgUGxhdGZvcm1NZWRpYVNl
c3Npb246OlNlZWtUb1BsYXliYWNrUG9zaXRpb25Db21tYW5kIH0sCisgICAgICAgICAgICB7IE1l
ZGlhU2Vzc2lvbkFjdGlvbjo6U2tpcGFkLCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TmV4dFRyYWNr
Q29tbWFuZCB9LAogICAgICAgICB9OwogICAgIH0oKSk7CiAKQEAgLTExNiw3ICsxMTcsOSBAQCB2
b2lkIE1lZGlhU2Vzc2lvbjo6c2V0QWN0aW9uSGFuZGxlcihNZWRpYVNlc3Npb25BY3Rpb24gYWN0
aW9uLCBSZWZQdHI8TWVkaWFTZXNzaQogICAgIGlmIChoYW5kbGVyKSB7CiAgICAgICAgIEFMV0FZ
U19MT0coTE9HSURFTlRJRklFUiwgImFkZGluZyAiLCBhY3Rpb24pOwogICAgICAgICBtX2FjdGlv
bkhhbmRsZXJzLnNldChhY3Rpb24sIGhhbmRsZXIpOwotICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5hZGRTdXBwb3J0ZWRDb21tYW5kKHBsYXRmb3Jt
Q29tbWFuZEZvck1lZGlhU2Vzc2lvbkFjdGlvbihhY3Rpb24pKTsKKyAgICAgICAgYXV0byBwbGF0
Zm9ybUNvbW1hbmQgPSBwbGF0Zm9ybUNvbW1hbmRGb3JNZWRpYVNlc3Npb25BY3Rpb24oYWN0aW9u
KTsKKyAgICAgICAgaWYgKHBsYXRmb3JtQ29tbWFuZCAhPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
Tm9Db21tYW5kKQorICAgICAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFy
ZWRNYW5hZ2VyKCkuYWRkU3VwcG9ydGVkQ29tbWFuZChwbGF0Zm9ybUNvbW1hbmQpOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIGlmIChtX2FjdGlvbkhhbmRsZXJzLmNvbnRhaW5zKGFjdGlvbikpIHsK
ICAgICAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInJlbW92aW5nICIsIGFjdGlv
bik7Cg==
</data>
<flag name="commit-queue"
          id="438021"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419719</attachid>
            <date>2021-02-09 08:29:30 -0800</date>
            <delta_ts>2021-02-09 10:33:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221431-20210209082929.patch</filename>
            <type>text/plain</type>
            <size>2457</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTFjMzFlNjc5MDE1NTlj
ZTM0MzZkMmRlYmI3NjgzYWMzYTY2ZjY2NC4uNjkyMjIwYWZjODBmNmYwMjkxYTU0ODk5OWUyOGQz
ZjU5ODQ4YTFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTAyLTA5ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIENvbm5l
Y3QgTWVkaWFTZXNzaW9uIHdpdGggTWVkaWFSZW1vdGUgYW5kIE5vd1BsYXlpbmcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTQzMQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNzQwMDAzNjM+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgZml4IGEgbGF5
b3V0IHRlc3QgYXNzZXJ0LgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFT
ZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtQ29tbWFuZEZvck1lZGlhU2Vz
c2lvbkFjdGlvbik6IE1hcCAic2tpcGFkIiB0byAibmV4dHRyYWNrIi4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU2Vzc2lvbjo6c2V0QWN0aW9uSGFuZGxlcik6IERvbid0IHRyeSB0byByZWdpc3Rl
ciBtZWRpYSBzZXNzaW9uIGFjdGlvbnMKKyAgICAgICAgZm9yIHdoaWNoIHRoZXJlIGlzIG5vIHBs
YXRmb3JtIGNvbW1hbmQuCisKIDIwMjEtMDItMDUgIFJpY2t5IE1vbmRlbGxvICA8cm1vbmRlbGxv
QGFwcGxlLmNvbT4KIAogICAgICAgICBBbGxvdyBQYXNzd29yZCBBdXRvRmlsbCBpbiBtb3JlIHRl
eHQgZmllbGQgY29uZmlndXJhdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwCmluZGV4IDI0OGIxMzc1NjgzMjlmYTk5NDJi
ZWQ1YWVlYjYwZDQ5MzNkYjA5NDEuLjkwMWRkYjBhN2I0ZmU5ZTkzNjNlNWZmMzFmMmVhYjQ3YTlk
MzY0OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01l
ZGlhU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24v
TWVkaWFTZXNzaW9uLmNwcApAQCAtNTgsNiArNTgsNyBAQCBzdGF0aWMgUGxhdGZvcm1NZWRpYVNl
c3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBwbGF0Zm9ybUNvbW1hbmRGb3JNZWRpYVNl
cwogICAgICAgICAgICAgeyBNZWRpYVNlc3Npb25BY3Rpb246Ok5leHR0cmFjaywgUGxhdGZvcm1N
ZWRpYVNlc3Npb246OlByZXZpb3VzVHJhY2tDb21tYW5kIH0sCiAgICAgICAgICAgICB7IE1lZGlh
U2Vzc2lvbkFjdGlvbjo6U3RvcCwgUGxhdGZvcm1NZWRpYVNlc3Npb246OlN0b3BDb21tYW5kIH0s
CiAgICAgICAgICAgICB7IE1lZGlhU2Vzc2lvbkFjdGlvbjo6U2Vla3RvLCBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6U2Vla1RvUGxheWJhY2tQb3NpdGlvbkNvbW1hbmQgfSwKKyAgICAgICAgICAgIHsg
TWVkaWFTZXNzaW9uQWN0aW9uOjpTa2lwYWQsIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOZXh0VHJh
Y2tDb21tYW5kIH0sCiAgICAgICAgIH07CiAgICAgfSgpKTsKIApAQCAtMTE2LDcgKzExNyw5IEBA
IHZvaWQgTWVkaWFTZXNzaW9uOjpzZXRBY3Rpb25IYW5kbGVyKE1lZGlhU2Vzc2lvbkFjdGlvbiBh
Y3Rpb24sIFJlZlB0cjxNZWRpYVNlc3NpCiAgICAgaWYgKGhhbmRsZXIpIHsKICAgICAgICAgQUxX
QVlTX0xPRyhMT0dJREVOVElGSUVSLCAiYWRkaW5nICIsIGFjdGlvbik7CiAgICAgICAgIG1fYWN0
aW9uSGFuZGxlcnMuc2V0KGFjdGlvbiwgaGFuZGxlcik7Ci0gICAgICAgIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmFkZFN1cHBvcnRlZENvbW1hbmQocGxhdGZv
cm1Db21tYW5kRm9yTWVkaWFTZXNzaW9uQWN0aW9uKGFjdGlvbikpOworICAgICAgICBhdXRvIHBs
YXRmb3JtQ29tbWFuZCA9IHBsYXRmb3JtQ29tbWFuZEZvck1lZGlhU2Vzc2lvbkFjdGlvbihhY3Rp
b24pOworICAgICAgICBpZiAocGxhdGZvcm1Db21tYW5kICE9IFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpOb0NvbW1hbmQpCisgICAgICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNo
YXJlZE1hbmFnZXIoKS5hZGRTdXBwb3J0ZWRDb21tYW5kKHBsYXRmb3JtQ29tbWFuZCk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgaWYgKG1fYWN0aW9uSGFuZGxlcnMuY29udGFpbnMoYWN0aW9uKSkg
ewogICAgICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAicmVtb3ZpbmcgIiwgYWN0
aW9uKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>