<?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>240359</bug_id>
          
          <creation_ts>2022-05-12 13:42:49 -0700</creation_ts>
          <short_desc>Monitor process state and send prepareToSuspend based on that</short_desc>
          <delta_ts>2022-05-18 10:53:14 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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="Sihui Liu">sihui_liu</reporter>
          <assigned_to name="Sihui Liu">sihui_liu</assigned_to>
          <cc>cdumez</cc>
    
    <cc>ggaren</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1868533</commentid>
    <comment_count>0</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-05-12 13:42:49 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868551</commentid>
    <comment_count>1</comment_count>
      <attachid>459251</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-05-12 14:36:14 -0700</bug_when>
    <thetext>Created attachment 459251
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868778</commentid>
    <comment_count>2</comment_count>
      <attachid>459306</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-05-13 09:31:06 -0700</bug_when>
    <thetext>Created attachment 459306
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868895</commentid>
    <comment_count>3</comment_count>
      <attachid>459306</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2022-05-13 15:37:58 -0700</bug_when>
    <thetext>Comment on attachment 459306
Patch

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

Looks right to me. Probably want Chris to review too, since we came up with this together.

&gt; Source/WebKit/UIProcess/ios/ProcessStateMonitor.h:50
&gt; +    State m_state { State::Unknown };

Do we need the Unknown state or can we just start out Running or Suspended? Maybe Running?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868905</commentid>
    <comment_count>4</comment_count>
      <attachid>459306</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-05-13 16:10:51 -0700</bug_when>
    <thetext>Comment on attachment 459306
Patch

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

&gt; Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm:1071
&gt; +    for (auto&amp; process : m_processes)

This function needs RELEASE_LOGGING

&gt; Source/WebKit/UIProcess/ProcessThrottler.cpp:64
&gt; +        ASSERT(m_backgroundActivities.isEmpty());

If the BackgroundActivity is not quiet, I think we should RELEASE_LOG() that we refused to start it.

&gt; Source/WebKit/UIProcess/ProcessThrottler.cpp:265
&gt; +void ProcessThrottler::setAllowBackgroundActivity(bool allow)

I don&apos;t understand this logic, so you&apos;re preventing clients from taking background activities but not foreground ones? Why?
Seems like they can extend the assertion forever if they can keep taking foreground assertions.

&gt; Source/WebKit/UIProcess/ProcessThrottler.cpp:269
&gt; +

This function needs RELEASE_LOGGING

&gt; Source/WebKit/UIProcess/WebProcessProxy.h:440
&gt; +    void setShouldSuspend(bool);

We probably don&apos;t need this setter. The call site can probably just use WebProcessProxy::throttler().setAllowBackgroundActivity(() instead.

&gt; Source/WebKit/UIProcess/ios/ProcessAssertionIOS.mm:98
&gt; +        if (m_processStateMonitor)

We don&apos;t need this check.

&gt; Source/WebKit/UIProcess/ios/ProcessStateMonitor.h:52
&gt; +    WebCore::Timer m_suspendTimer;

You cannot use a WebCore::Timer in the UIProcess iirc because the app could be using both WK1 and WK2 in the UIProcess on iOS, and you could have a WebThread. 

You should be using a RunLoop::Timer&lt;ProcessStateMonitor&gt;.

&gt; Source/WebKit/UIProcess/ios/ProcessStateMonitor.mm:37
&gt; +static constexpr Seconds prepareForSuspensionDuration =  15_s;

nit: extra space before 15_s

&gt; Source/WebKit/UIProcess/ios/ProcessStateMonitor.mm:51
&gt; +            callOnMainRunLoop([weakThis] {

Are we sure RunningBoard never calls on on the main thread? If they might, we could use ensureOnMainRunLoop() and avoid a dispatch in some cases.

&gt; Source/WebKit/UIProcess/ios/ProcessStateMonitor.mm:90
&gt; +    Seconds timeout = remainingRunTime &gt; prepareForSuspensionDuration ? remainingRunTime - prepareForSuspensionDuration : 0_s;

This function needs RELEASE_LOGGING

&gt; Source/WebKit/UIProcess/ios/ProcessStateMonitor.mm:100
&gt; +    m_becomeSuspendedHandler(true);

This function needs RELEASE_LOGGING</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1869136</commentid>
    <comment_count>5</comment_count>
      <attachid>459395</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-05-15 22:39:40 -0700</bug_when>
    <thetext>Created attachment 459395
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1869268</commentid>
    <comment_count>6</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-05-16 09:28:46 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/637</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1869809</commentid>
    <comment_count>7</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-05-17 14:33:07 -0700</bug_when>
    <thetext>*** Bug 239432 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1870070</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-05-18 10:52:15 -0700</bug_when>
    <thetext>Committed r294405 (250699@main): &lt;https://commits.webkit.org/250699@main&gt;

Reviewed commits have been landed. Closing PR #637 and removing active labels.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1870071</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-05-18 10:53:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/93514053&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459251</attachid>
            <date>2022-05-12 14:36:14 -0700</date>
            <delta_ts>2022-05-13 09:31:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-240359-20220512143613.patch</filename>
            <type>text/plain</type>
            <size>22359</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjk0MDk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY5YjQwMWIwYzVhYjk1MTk5
M2ZiZDBiYjZlZDAyNTVjOGFlNDlmZGUuLmFlY2U3ZmIxZmJlY2VkMWVmMTdlNjYyM2Q4M2Q3ZDdl
ZWY5ZTM2NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMjItMDUtMTIgIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgTW9uaXRvciBwcm9jZXNzIHN0YXRl
IGFuZCBzZW5kIFByZXBhcmVUb1N1c3BlbmQgbWVzc2FnZSBiYXNlZCBvbiB0aGF0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDAzNTkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHkgVUkgcHJv
Y2VzcyBzZW5kcyBQcmVwYXJlVG9TdXNwZW5kIHdoZW4gYSBwcm9jZXNzIGhhcyBubyBhY3Rpdml0
eSB0aGF0IG5lZWRzIGFuIGFzc2VydGlvbiwgb3Igd2hlbgorICAgICAgICBhc3NlcnRpb24gd2ls
bCBiZSBpbnZhbGlkYXRlZCBkdWUgdG8gdGltZW91dCAod2hlbiBhc3NlcnRpb25XaWxsSW52YWxp
ZGF0ZSBpcyBjYWxsZWQpLiBPbiByZWNlaXZpbmcgdGhlIG1lc3NhZ2UsIAorICAgICAgICB0aGUg
cHJvY2VzcyB3aWxsIHBlcmZvcm0gbmVjZXNzYXJ5IGFjdGlvbnMsIHN1Y2ggYXMgc3VzcGVuZGlu
ZyBzdG9yYWdlIHRocmVhZHMgZm9yIG5ldHdvcmsgcHJvY2VzcywgdG8gYmUgcmVhZHkgCisgICAg
ICAgIGZvciBzdXNwZW5zaW9uLiBBY2NvcmRpbmcgdG8gY3Jhc2hlcyBpbiByZGFyOi8vcHJvYmxl
bS85MjIyODE5MCwgdGhlIG1lc3NhZ2UgaXMgbm90IHJlY2VpdmVkIGJ5IHByb2Nlc3MgYmVmb3Jl
CisgICAgICAgIHN1c3BlbnNpb24sIG9yIHByb2Nlc3MgZ2V0cyBzdXNwZW5kZWQgd2hpbGUgcHJv
Y2Vzc2luZyB0aGUgbWVzc2FnZS4gV2UgbmVlZCB0byBlbnN1cmUgdGhlIG1lc3NhZ2UgZ2V0cyBw
cm9jZXNzZWQKKyAgICAgICAgYmVmb3JlIHByb2Nlc3Mgc3VzcGVuc2lvbiB0byBmaXggdGhlIGNy
YXNoZXMuCisKKyAgICAgICAgVG8gYWNoaWV2ZSB0aGF0LCB3ZSBpbnRyb2R1Y2UgUHJvY2Vzc1N0
YXRlTW9uaXRvciB0byB0cmFjayB3aGVuIFVJIHByb2Nlc3Mgd2lsbCBiZSBzdXNwZW5kZWQsIGFu
ZCBub3RpZmllcworICAgICAgICBXZWJQcm9jZXNzUG9vbHMgd2hlbiBpdHMgcnVubmluZyB0aW1l
IGlzIGxlc3MgdGhhbiAxNXMuIE9uIHJlY2VpdmluZyB0aGUgbm90aWZpY2F0aW9uLCBhbGwgd2Vi
IHByb2Nlc3NlcyBzaG91bGQKKyAgICAgICAgaW52YWxpZGF0ZSBiYWNrZ3JvdW5kIGFjdGl2aXRp
ZXMsIGRyb3AgYmFja2dyb3VuZCBhc3NlcnRpb24sIGFuZCBzZW5kIG91dCBQcmVwYXJlVG9TdXNw
ZW5kIG1lc3NhZ2VzLiBUaGV5IGFyZSAKKyAgICAgICAgbm90IGFsbG93ZWQgdG8gdGFrZSBuZXcg
YmFja2dyb3VuZCBhc3NlcnRpb24gdW50aWwgUHJvY2Vzc1N0YXRlTW9uaXRvciBmaW5kcyBwcm9j
ZXNzIGJlY29tZXMgcnVubmluZyB3aXRob3V0IAorICAgICAgICB0aW1lb3V0IChlLmcuIGFwcGxp
Y2F0aW9uIGJlY29tZXMgZm9yZWdyb3VuZGVkIG9yIGFjcXVpcmVzIHNwZWNpYWwgYXNzZXJ0aW9u
KS4KKworICAgICAgICBUbyBhdm9pZCBnZXR0aW5nIHVubmVjZXNzYXJ5IHVwZGF0ZXMgZnJvbSBy
dW5uaW5nYm9hcmRkLCBQcm9jZXNzU3RhdGVNb25pdG9yIHN0YXJ0cyB3b3JraW5nIHdoZW4gcHJv
Y2VzcyBlbnRlcnMgCisgICAgICAgIGJhY2tncm91bmQsIGFuZCBzdG9wcyB3b3JraW5nIHdoZW4g
cHJvY2VzcyBlbnRlcnMgZm9yZWdyb3VuZC4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6
CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRQcm9jZXNzZXNTaG91bGRTdXNwZW5kKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlByb2Nlc3NUaHJvdHRsZXI6OmFkZEFjdGl2aXR5KToKKyAgICAgICAgKFdlYktpdDo6UHJv
Y2Vzc1Rocm90dGxlcjo6c2V0QWxsb3dCYWNrZ3JvdW5kQWN0aXZpdHkpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6c2V0U2hvdWxkU3VzcGVuZCk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3Mv
UHJvY2Vzc0Fzc2VydGlvbklPUy5tbToKKyAgICAgICAgKC1bV0tQcm9jZXNzQXNzZXJ0aW9uQmFj
a2dyb3VuZFRhc2tNYW5hZ2VyIGluaXRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1Byb2Nl
c3NTdGF0ZU1vbml0b3IuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9Qcm9jZXNz
U3RhdGVNb25pdG9yLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1N0YXRlTW9u
aXRvcjo6UHJvY2Vzc1N0YXRlTW9uaXRvcik6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NTdGF0
ZU1vbml0b3I6On5Qcm9jZXNzU3RhdGVNb25pdG9yKToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vz
c1N0YXRlTW9uaXRvcjo6cHJvY2Vzc0RpZEJlY29tZVJ1bm5pbmcpOgorICAgICAgICAoV2ViS2l0
OjpQcm9jZXNzU3RhdGVNb25pdG9yOjpwcm9jZXNzV2lsbEJlU3VzcGVuZGVkKToKKyAgICAgICAg
KFdlYktpdDo6UHJvY2Vzc1N0YXRlTW9uaXRvcjo6c3VzcGVuZFRpbWVyRmlyZWQpOgorICAgICAg
ICAoV2ViS2l0OjpQcm9jZXNzU3RhdGVNb25pdG9yOjpjaGVja1JlbWFpbmluZ1J1blRpbWUpOgor
ICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIyLTA1LTEy
ICBZb3VzdWtlIEtpbW90byAgPHlvdXN1a2Uua2ltb3RvQHNvbnkuY29tPgogCiAgICAgICAgIFtX
aW5DYWlyb10gRml4IGEgY29tcGlsZSBlcnJvciBkdWUgdG8gSW5zcGVjdG9yUmVzb3VyY2VVUkxT
Y2hlbWVIYW5kbGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQg
Yi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMzhhZDMxZjcxYTNlZDYyZTkz
MDUzNDhlNTA3ZjAxZGI4MTUzZTIwNi4uNGNjZTc4NmE5MmJjZTcyYjA3ZGZhZTA5ZWEzMTA5ZDk2
Zjc4YjYzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBi
L1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtNDkxLDYgKzQ5MSw3IEBAIFVJUHJv
Y2Vzcy9pb3MvR2VzdHVyZVJlY29nbml6ZXJDb25zaXN0ZW5jeUVuZm9yY2VyLm1tCiBVSVByb2Nl
c3MvaW9zL0lucHV0Vmlld1VwZGF0ZURlZmVycmVyLm1tCiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGll
bnRJbXBsSU9TLm1tCiBVSVByb2Nlc3MvaW9zL1Byb2Nlc3NBc3NlcnRpb25JT1MubW0KK1VJUHJv
Y2Vzcy9pb3MvUHJvY2Vzc1N0YXRlTW9uaXRvci5tbQogVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25p
ZmljYXRpb25Db250cm9sbGVyLm1tCiBVSVByb2Nlc3MvaW9zL1RleHRDaGVja2VySU9TLm1tCiBV
SVByb2Nlc3MvaW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KaW5kZXggMTc2
MzQ5ZWI2NzA4ZTJiN2ZiZDc1NWI5MzgxNjk1ZDkwMjViMzhiMy4uOTdjMWUwYzg0YTkxZWMzODI1
OGIwZGM4YWJkNDkwNzU4N2FhNDUyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCkBAIC0xMDY1LDYgKzEwNjUsMTMgQEAg
dm9pZCBXZWJQcm9jZXNzUG9vbDo6bm90aWZ5UHJvY2Vzc1Bvb2xzQXBwbGljYXRpb25Jc0Fib3V0
VG9TdXNwZW5kKCkKICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogYWxsUHJvY2Vzc1Bvb2xz
KCkpCiAgICAgICAgIHByb2Nlc3NQb29sLT5hcHBsaWNhdGlvbklzQWJvdXRUb1N1c3BlbmQoKTsK
IH0KKwordm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0UHJvY2Vzc2VzU2hvdWxkU3VzcGVuZChib29s
IHNob3VsZFN1c3BlbmQpCit7CisgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogbV9wcm9jZXNzZXMp
CisgICAgICAgIHByb2Nlc3MtPnNldFNob3VsZFN1c3BlbmQoc2hvdWxkU3VzcGVuZCk7Cit9CisK
ICNlbmRpZgogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjppbml0aWFsaXplQ2xhc3Nlc0ZvclBhcmFt
ZXRlckNvZGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNz
VGhyb3R0bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIu
Y3BwCmluZGV4IDQ3MTJmMmVjZmJhMmM1YTk5ZTJkNmJhZDRmMWUwNWM1N2RkZTg2YTUuLjI0NDI1
NDk2ZDg3OGIzYmU3NDA0YTczNTA5OTViNDU2ZWM1MTMxMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuY3BwCkBAIC02MCw2ICs2MCwxMSBAQCB2b2lkIFBy
b2Nlc3NUaHJvdHRsZXI6OmFkZEFjdGl2aXR5KEZvcmVncm91bmRBY3Rpdml0eSYgYWN0aXZpdHkp
CiAKIHZvaWQgUHJvY2Vzc1Rocm90dGxlcjo6YWRkQWN0aXZpdHkoQmFja2dyb3VuZEFjdGl2aXR5
JiBhY3Rpdml0eSkKIHsKKyAgICBpZiAoIW1fYWxsb3dCYWNrZ3JvdW5kQWN0aXZpdHkpIHsKKyAg
ICAgICAgQVNTRVJUKG1fYmFja2dyb3VuZEFjdGl2aXRpZXMuaXNFbXB0eSgpKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKwogICAgIG1fYmFja2dyb3VuZEFjdGl2aXRpZXMuYWRkKCZhY3Rpdml0
eSk7CiAgICAgdXBkYXRlQXNzZXJ0aW9uSWZOZWVkZWQoKTsKIH0KQEAgLTI1Nyw2ICsyNjIsMTgg
QEAgYm9vbCBQcm9jZXNzVGhyb3R0bGVyOjppc1ZhbGlkRm9yZWdyb3VuZEFjdGl2aXR5KGNvbnN0
IFByb2Nlc3NUaHJvdHRsZXI6OkFjdGl2aXQKICAgICByZXR1cm4gc3RkOjpnZXQ8VW5pcXVlUmVm
PFByb2Nlc3NUaHJvdHRsZXI6OkZvcmVncm91bmRBY3Rpdml0eT4+KGFjdGl2aXR5KS0+aXNWYWxp
ZCgpOwogfQogCit2b2lkIFByb2Nlc3NUaHJvdHRsZXI6OnNldEFsbG93QmFja2dyb3VuZEFjdGl2
aXR5KGJvb2wgYWxsb3cpCit7CisgICAgaWYgKG1fYWxsb3dCYWNrZ3JvdW5kQWN0aXZpdHkgPT0g
YWxsb3cpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghYWxsb3cpIHsKKyAgICAgICAgd2hp
bGUgKCFtX2JhY2tncm91bmRBY3Rpdml0aWVzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICgqbV9i
YWNrZ3JvdW5kQWN0aXZpdGllcy5iZWdpbigpKS0+aW52YWxpZGF0ZSgpOworICAgIH0KKyAgICBt
X2FsbG93QmFja2dyb3VuZEFjdGl2aXR5ID0gYWxsb3c7Cit9CisKIFByb2Nlc3NUaHJvdHRsZXI6
OlRpbWVkQWN0aXZpdHk6OlRpbWVkQWN0aXZpdHkoU2Vjb25kcyB0aW1lb3V0LCBQcm9jZXNzVGhy
b3R0bGVyOjpBY3Rpdml0eVZhcmlhbnQmJiBhY3Rpdml0eSkKICAgICA6IG1fdGltZXIoUnVuTG9v
cDo6bWFpbigpLCB0aGlzLCAmVGltZWRBY3Rpdml0eTo6YWN0aXZpdHlUaW1lZE91dCkKICAgICAs
IG1fdGltZW91dCh0aW1lb3V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UHJvY2Vzc1Rocm90dGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90
dGxlci5oCmluZGV4IDU0ZGQ3NjU4ZjFkZmQwY2VmZTk0NjFjODgyOWMwNTE2YzJmMDY5MDYuLmI3
MWU2OWMxNzAzYzk3NGVhN2UyN2E4YjExYmZmMDQ3Mjc3YjI5YzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmgKQEAgLTEyNSw2ICsxMjUsNyBAQCBwdWJsaWM6
CiAgICAgCiAgICAgdm9pZCBkaWRDb25uZWN0VG9Qcm9jZXNzKFByb2Nlc3NJRCk7CiAgICAgYm9v
bCBzaG91bGRCZVJ1bm5hYmxlKCkgY29uc3QgeyByZXR1cm4gbV9mb3JlZ3JvdW5kQWN0aXZpdGll
cy5zaXplKCkgfHwgbV9iYWNrZ3JvdW5kQWN0aXZpdGllcy5zaXplKCk7IH0KKyAgICB2b2lkIHNl
dEFsbG93QmFja2dyb3VuZEFjdGl2aXR5KGJvb2wpOwogCiBwcml2YXRlOgogICAgIFByb2Nlc3NB
c3NlcnRpb25UeXBlIGV4cGVjdGVkQXNzZXJ0aW9uVHlwZSgpOwpAQCAtMTU1LDYgKzE1Niw3IEBA
IHByaXZhdGU6CiAgICAgSGFzaFNldDxCYWNrZ3JvdW5kQWN0aXZpdHkqPiBtX2JhY2tncm91bmRB
Y3Rpdml0aWVzOwogICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG1fcGVuZGluZ1JlcXVlc3RU
b1N1c3BlbmRJRDsKICAgICBib29sIG1fc2hvdWxkVGFrZVVJQmFja2dyb3VuZEFzc2VydGlvbjsK
KyAgICBib29sIG1fYWxsb3dCYWNrZ3JvdW5kQWN0aXZpdHkgeyB0cnVlIH07CiB9OwogCiBpbmxp
bmUgYXV0byBQcm9jZXNzVGhyb3R0bGVyOjpmb3JlZ3JvdW5kQWN0aXZpdHkoQVNDSUlMaXRlcmFs
IG5hbWUpIC0+IFVuaXF1ZVJlZjxGb3JlZ3JvdW5kQWN0aXZpdHk+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCBkNGRhM2RhODQ0M2Y2ZDEzZWMyZTMwYWIyNDhi
YThiYTEzYmE3ZjAwLi45MWRmMzY5OTA0NDExNGVkOGEyOGViZGYzNjJlNGY2NWU1OWQyODkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTIzNiw2ICsyMzYs
NyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIGFwcGxpY2F0
aW9uSXNBYm91dFRvU3VzcGVuZCgpOwogICAgIHN0YXRpYyB2b2lkIG5vdGlmeVByb2Nlc3NQb29s
c0FwcGxpY2F0aW9uSXNBYm91dFRvU3VzcGVuZCgpOworICAgIHZvaWQgc2V0UHJvY2Vzc2VzU2hv
dWxkU3VzcGVuZChib29sKTsKICNlbmRpZgogCiAgICAgdm9pZCBoYW5kbGVNZW1vcnlQcmVzc3Vy
ZVdhcm5pbmcoQ3JpdGljYWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAKaW5kZXggZDc1NmEzZDY5M2Y2YTQzZjc0M2UyMDllZDZkMGU3NWMzMzUxZGJjMS4u
OTA1NDhjMGUyOGFiMjI3Nzc4NDExMmU0M2NmNTM1OTk3NGY3MjQ0OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0yMTA3LDYgKzIxMDcsMTEgQEAg
dm9pZCBXZWJQcm9jZXNzUHJveHk6OmdldE5vdGlmaWNhdGlvbnMoY29uc3QgVVJMJiByZWdpc3Ry
YXRpb25VUkwsIGNvbnN0IFN0cmluZyYKICAgICBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6
OnNoYXJlZFNlcnZpY2VXb3JrZXJNYW5hZ2VyKCkuZ2V0Tm90aWZpY2F0aW9ucyhyZWdpc3RyYXRp
b25VUkwsIHRhZywgc2Vzc2lvbklEKCksIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAordm9pZCBX
ZWJQcm9jZXNzUHJveHk6OnNldFNob3VsZFN1c3BlbmQoYm9vbCBzaG91bGRTdXNwZW5kKQorewor
ICAgIG1fdGhyb3R0bGVyLnNldEFsbG93QmFja2dyb3VuZEFjdGl2aXR5KCFzaG91bGRTdXNwZW5k
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBNRVNTQUdFX0NIRUNLCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDRjMjJkYWIxODBl
MDgwNzU0MGY2MDJmNGU3ZTE4MDdiYTI4MTZkOWEuLjA3NjU1OGQ3ZGFiY2EyNTQ5NWZiNmFiMTNl
M2YyMGRhYmU3MzZkODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5oCkBAIC00MzcsNiArNDM3LDggQEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8YXVkaXRf
dG9rZW5fdD4gYXVkaXRUb2tlbigpIGNvbnN0OwogI2VuZGlmCiAKKyAgICB2b2lkIHNldFNob3Vs
ZFN1c3BlbmQoYm9vbCk7CisKIHByb3RlY3RlZDoKICAgICBXZWJQcm9jZXNzUHJveHkoV2ViUHJv
Y2Vzc1Bvb2wmLCBXZWJzaXRlRGF0YVN0b3JlKiwgSXNQcmV3YXJtZWQsIFdlYkNvcmU6OkNyb3Nz
T3JpZ2luTW9kZSwgQ2FwdGl2ZVBvcnRhbE1vZGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvUHJvY2Vzc0Fzc2VydGlvbklPUy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9Qcm9jZXNzQXNzZXJ0aW9uSU9TLm1tCmluZGV4IGZkODc4OWI4NjhkMjEx
NGI2YjcwMzlhNjMwZjdmMWRiZjgwZDE1YjkuLjBlNzhiNTA2ODUxZjQ1MzZkYWY3MDEzMGQyZDQz
NDVlNjJhMDJmMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9Qcm9j
ZXNzQXNzZXJ0aW9uSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9Qcm9j
ZXNzQXNzZXJ0aW9uSU9TLm1tCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIAogI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCAiUHJvY2Vzc1N0YXRlTW9uaXRv
ci5oIgogI2ltcG9ydCAiUnVubmluZ0JvYXJkU2VydmljZXNTUEkuaCIKICNpbXBvcnQgIldlYlBy
b2Nlc3NQb29sLmgiCiAjaW1wb3J0IDxVSUtpdC9VSUFwcGxpY2F0aW9uLmg+CkBAIC03Myw2ICs3
NCw3IEBAIHN0YXRpYyBib29sIHByb2Nlc3NIYXNBY3RpdmVSdW5UaW1lTGltaXRhdGlvbigpCiAg
ICAgc3RkOjphdG9taWM8Ym9vbD4gX2JhY2tncm91bmRUYXNrV2FzSW52YWxpZGF0ZWQ7CiAgICAg
V2Vha0hhc2hTZXQ8UHJvY2Vzc0FuZFVJQXNzZXJ0aW9uPiBfYXNzZXJ0aW9uc05lZWRpbmdCYWNr
Z3JvdW5kVGFzazsKICAgICBkaXNwYXRjaF9ibG9ja190IF9wZW5kaW5nVGFza1JlbGVhc2VUYXNr
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6OlByb2Nlc3NTdGF0ZU1vbml0b3I+IG1fcHJv
Y2Vzc1N0YXRlTW9uaXRvcjsKIH0KIAogKyAoV0tQcm9jZXNzQXNzZXJ0aW9uQmFja2dyb3VuZFRh
c2tNYW5hZ2VyICopc2hhcmVkCkBAIC05MiwxMSArOTQsMjEgQEAgc3RhdGljIGJvb2wgcHJvY2Vz
c0hhc0FjdGl2ZVJ1blRpbWVMaW1pdGF0aW9uKCkKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVy
IGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyRm9yTmFtZTpVSUFwcGxpY2F0aW9uV2lsbEVudGVy
Rm9yZWdyb3VuZE5vdGlmaWNhdGlvbiBvYmplY3Q6W1VJQXBwbGljYXRpb24gc2hhcmVkQXBwbGlj
YXRpb25dIHF1ZXVlOm5pbCB1c2luZ0Jsb2NrOl4oTlNOb3RpZmljYXRpb24gKikgewogICAgICAg
ICBbc2VsZiBfY2FuY2VsUGVuZGluZ1JlbGVhc2VUYXNrXTsKICAgICAgICAgW3NlbGYgX3VwZGF0
ZUJhY2tncm91bmRUYXNrXTsKKworICAgICAgICBpZiAobV9wcm9jZXNzU3RhdGVNb25pdG9yKQor
ICAgICAgICAgICAgbV9wcm9jZXNzU3RhdGVNb25pdG9yID0gbnVsbHB0cjsKICAgICB9XTsKIAog
ICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXJGb3JO
YW1lOlVJQXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmROb3RpZmljYXRpb24gb2JqZWN0OltV
SUFwcGxpY2F0aW9uIHNoYXJlZEFwcGxpY2F0aW9uXSBxdWV1ZTpuaWwgdXNpbmdCbG9jazpeKE5T
Tm90aWZpY2F0aW9uICopIHsKICAgICAgICAgaWYgKCFbc2VsZiBfaGFzQmFja2dyb3VuZFRhc2td
KQogICAgICAgICAgICAgV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6bm90aWZ5UHJvY2Vzc1Bvb2xz
QXBwbGljYXRpb25Jc0Fib3V0VG9TdXNwZW5kKCk7CisgICAgICAgIAorICAgICAgICBpZiAoIW1f
cHJvY2Vzc1N0YXRlTW9uaXRvcikgeworICAgICAgICAgICAgbV9wcm9jZXNzU3RhdGVNb25pdG9y
ID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlByb2Nlc3NTdGF0ZU1vbml0b3I+KFtdKGJvb2wgc3VzcGVu
ZGVkKSB7CisgICAgICAgICAgICAgICAgZm9yIChhdXRvIHByb2Nlc3NQb29sIDogV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6YWxsUHJvY2Vzc1Bvb2xzKCkpCisgICAgICAgICAgICAgICAgICAgIHBy
b2Nlc3NQb29sLT5zZXRQcm9jZXNzZXNTaG91bGRTdXNwZW5kKHN1c3BlbmRlZCk7CisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgfQogICAgIH1dOwogCiAgICAgcmV0dXJuIHNlbGY7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUHJvY2Vzc1N0YXRlTW9uaXRvci5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Byb2Nlc3NTdGF0ZU1vbml0b3IuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wNWQyZGZkYzMwZGJlMDQwNWMzMzI1ODM2NmQyNzA5YTYzMzI4MzlkCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Byb2Nlc3NTdGF0ZU1vbml0b3Iu
aApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQorCisjaW1wb3J0IDxXZWJDb3JlL1RpbWVyLmg+CisjaW1wb3J0IDx3
dGYvUmV0YWluUHRyLmg+CisKK09CSkNfQ0xBU1MgUkJTUHJvY2Vzc01vbml0b3I7CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBQcm9jZXNzU3RhdGVNb25pdG9yIDogcHVibGljIENhbk1h
a2VXZWFrUHRyPFByb2Nlc3NTdGF0ZU1vbml0b3I+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKK3B1YmxpYzoKKyAgICBQcm9jZXNzU3RhdGVNb25pdG9yKEZ1bmN0aW9uPHZvaWQoYm9v
bCk+JiYgYmVjb21lU3VzcGVuZGVkSGFuZGxlcik7CisgICAgflByb2Nlc3NTdGF0ZU1vbml0b3Io
KTsKKworcHJpdmF0ZToKKyAgICB2b2lkIHByb2Nlc3NEaWRCZWNvbWVSdW5uaW5nKCk7CisgICAg
dm9pZCBwcm9jZXNzV2lsbEJlU3VzcGVuZGVkKFNlY29uZHMpOworICAgIHZvaWQgc3VzcGVuZFRp
bWVyRmlyZWQoKTsKKyAgICB2b2lkIGNoZWNrUmVtYWluaW5nUnVuVGltZSgpOworCisgICAgZW51
bSBjbGFzcyBTdGF0ZSA6IHVpbnQ4X3QgeyBVbmtub3duLCBSdW5uaW5nLCBXaWxsU3VzcGVuZCwg
U3VzcGVuZGVkIH07CisgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpVbmtub3duIH07CisgICAg
RnVuY3Rpb248dm9pZChib29sKT4gbV9iZWNvbWVTdXNwZW5kZWRIYW5kbGVyOworICAgIFdlYkNv
cmU6OlRpbWVyIG1fc3VzcGVuZFRpbWVyOworICAgIFJldGFpblB0cjxSQlNQcm9jZXNzTW9uaXRv
cj4gbV9yYnNNb25pdG9yOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1Byb2Nlc3NTdGF0ZU1vbml0b3IubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvUHJvY2Vzc1N0YXRlTW9uaXRvci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYjFhZTJiMmI4ZTM1YWFhYjky
NzIwMjM2N2M2ZmQ0ZGE4YjU1ZDlkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1Byb2Nlc3NTdGF0ZU1vbml0b3IubW0KQEAgLTAsMCArMSwxMTUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlByb2Nlc3NTdGF0ZU1vbml0
b3IuaCIKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisKKyNpbXBvcnQgIk5ldHdvcmtQcm9j
ZXNzTWVzc2FnZXMuaCIKKyNpbXBvcnQgIlByb2Nlc3NBc3NlcnRpb24uaCIKKyNpbXBvcnQgIlJ1
bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMg
Y29uc3RleHByIFNlY29uZHMgcHJlcGFyZUZvclN1c3BlbnNpb25EdXJhdGlvbiA9ICAxNV9zOwor
CitQcm9jZXNzU3RhdGVNb25pdG9yOjpQcm9jZXNzU3RhdGVNb25pdG9yKEZ1bmN0aW9uPHZvaWQo
Ym9vbCk+JiYgYmVjb21lU3VzcGVuZGVkSGFuZGxlcikKKyAgICA6IG1fYmVjb21lU3VzcGVuZGVk
SGFuZGxlcihXVEZNb3ZlKGJlY29tZVN1c3BlbmRlZEhhbmRsZXIpKQorICAgICwgbV9zdXNwZW5k
VGltZXIoKnRoaXMsICZQcm9jZXNzU3RhdGVNb25pdG9yOjpzdXNwZW5kVGltZXJGaXJlZCkKK3sK
KyAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBtX3Jic01vbml0
b3IgPSBbUkJTUHJvY2Vzc01vbml0b3IgbW9uaXRvcldpdGhDb25maWd1cmF0aW9uOlt3ZWFrVGhp
cyA9IFdlYWtQdHIgeyAqdGhpcyB9XShpZDxSQlNQcm9jZXNzTW9uaXRvckNvbmZpZ3VyaW5nPiBj
b25maWcpIG11dGFibGUgeworICAgICAgICBSQlNQcm9jZXNzU3RhdGVEZXNjcmlwdG9yICpkZXNj
cmlwdG9yID0gW1JCU1Byb2Nlc3NTdGF0ZURlc2NyaXB0b3IgZGVzY3JpcHRvcl07CisgICAgICAg
IFtkZXNjcmlwdG9yIHNldFZhbHVlczpSQlNQcm9jZXNzU3RhdGVWYWx1ZUxlZ2FjeUFzc2VydGlv
bnMgfCBSQlNQcm9jZXNzU3RhdGVWYWx1ZU1vZGVybkFzc2VydGlvbnNdOworICAgICAgICBbY29u
ZmlnIHNldFN0YXRlRGVzY3JpcHRvcjpkZXNjcmlwdG9yXTsKKyAgICAgICAgW2NvbmZpZyBzZXRQ
cmVkaWNhdGVzOkBbW1JCU1Byb2Nlc3NQcmVkaWNhdGUgcHJlZGljYXRlTWF0Y2hpbmdIYW5kbGU6
W1JCU1Byb2Nlc3NIYW5kbGUgY3VycmVudFByb2Nlc3NdXV1dOworICAgICAgICBbY29uZmlnIHNl
dFVwZGF0ZUhhbmRsZXI6W3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyldKFJCU1Byb2Nlc3NN
b25pdG9yICptb25pdG9yLCBSQlNQcm9jZXNzSGFuZGxlICpwcm9jZXNzLCBSQlNQcm9jZXNzU3Rh
dGVVcGRhdGUgKnVwZGF0ZSkgeworICAgICAgICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3dlYWtU
aGlzXSB7CisgICAgICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgICAgICAg
ICB3ZWFrVGhpcy0+Y2hlY2tSZW1haW5pbmdSdW5UaW1lKCk7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgfV07CisgICAgfV07CisKKyAgICBjaGVja1JlbWFpbmluZ1J1blRpbWUoKTsKK30KKwor
UHJvY2Vzc1N0YXRlTW9uaXRvcjo6flByb2Nlc3NTdGF0ZU1vbml0b3IoKQoreworICAgIFJFTEVB
U0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIFttX3Jic01vbml0b3IuZ2V0KCkg
aW52YWxpZGF0ZV07CisgICAgcHJvY2Vzc0RpZEJlY29tZVJ1bm5pbmcoKTsKK30KKwordm9pZCBQ
cm9jZXNzU3RhdGVNb25pdG9yOjpwcm9jZXNzRGlkQmVjb21lUnVubmluZygpCit7CisgICAgaWYg
KG1fc3RhdGUgPT0gU3RhdGU6OlJ1bm5pbmcpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICht
X3N0YXRlID09IFN0YXRlOjpTdXNwZW5kZWQpCisgICAgICAgIG1fYmVjb21lU3VzcGVuZGVkSGFu
ZGxlcihmYWxzZSk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVChtX3N1c3BlbmRUaW1lci5p
c0FjdGl2ZSgpKTsKKyAgICAgICAgbV9zdXNwZW5kVGltZXIuc3RvcCgpOworICAgIH0KKworICAg
IG1fc3RhdGUgPSBTdGF0ZTo6UnVubmluZzsKK30KKwordm9pZCBQcm9jZXNzU3RhdGVNb25pdG9y
Ojpwcm9jZXNzV2lsbEJlU3VzcGVuZGVkKFNlY29uZHMgcmVtYWluaW5nUnVuVGltZSkKK3sKKyAg
ICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6UnVubmluZykKKyAgICAgICAgcmV0dXJuOworCisgICAg
QVNTRVJUKCFtX3N1c3BlbmRUaW1lci5pc0FjdGl2ZSgpKTsKKyAgICBTZWNvbmRzIHRpbWVvdXQg
PSByZW1haW5pbmdSdW5UaW1lID4gcHJlcGFyZUZvclN1c3BlbnNpb25EdXJhdGlvbiA/IHJlbWFp
bmluZ1J1blRpbWUgLSBwcmVwYXJlRm9yU3VzcGVuc2lvbkR1cmF0aW9uIDogMF9zOworICAgIG1f
c3VzcGVuZFRpbWVyLnN0YXJ0T25lU2hvdCh0aW1lb3V0KTsKKyAgICBtX3N0YXRlID0gU3RhdGU6
OldpbGxTdXNwZW5kOworfQorCit2b2lkIFByb2Nlc3NTdGF0ZU1vbml0b3I6OnN1c3BlbmRUaW1l
ckZpcmVkKCkKK3sKKyAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6V2lsbFN1c3BlbmQpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fYmVjb21lU3VzcGVuZGVkSGFuZGxlcih0cnVlKTsKKyAgICBt
X3N0YXRlID0gU3RhdGU6OlN1c3BlbmRlZDsKK30KKwordm9pZCBQcm9jZXNzU3RhdGVNb25pdG9y
OjpjaGVja1JlbWFpbmluZ1J1blRpbWUoKQoreworICAgIGRvdWJsZSBydW5UaW1lID0gW1tbUkJT
UHJvY2Vzc0hhbmRsZSBjdXJyZW50UHJvY2Vzc10gYWN0aXZlTGltaXRhdGlvbnNdIHJ1blRpbWVd
OworICAgIGlmIChydW5UaW1lID09IFJCU1Byb2Nlc3NUaW1lTGltaXRhdGlvbk5vbmUpCisgICAg
ICAgIHJldHVybiBwcm9jZXNzRGlkQmVjb21lUnVubmluZygpOworCisgICAgcHJvY2Vzc1dpbGxC
ZVN1c3BlbmRlZChTZWNvbmRzKHJ1blRpbWUpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNWJkYmQ2ODNiY2MzZmRkMGQyOTE2
NTlmMDAyMDZjZGIzYzkzMzA4Yy4uMDEwYjBjMTMxYTY0Yzk5MjgwZDc1YmExMTU2MWI1NzRjNTdk
MWYzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xNTEyLDYgKzE1MTIsNyBAQAogCQk5M0Q2QjdCNDI1NTI2OEQ1MDA1OEREM0EgLyog
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENkI3QUYyNTUyNjhBMTAwNThERDNBIC8qIFNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaCAqLzsgfTsKIAkJOTNENkI3QjUyNTUy
NjhENzAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCN0IyMjU1MjY4
QTIwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmggKi87IH07
CiAJCTkzRDZCN0I5MjU1MzRBMTcwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5M0Q2QjdCNzI1NTM0QTExMDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25DYWxsYmFjay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTkzRTA1RTQwMjgyQ0Q1NjAwMDBCNjlFQiAvKiBQcm9jZXNzU3RhdGVNb25pdG9y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0UwNUUz
RTI4MkNENTVEMDAwQjY5RUIgLyogUHJvY2Vzc1N0YXRlTW9uaXRvci5oICovOyB9OwogCQk5M0U2
QTRFRTFCQzVERDM5MDBGOEEwRTcgLyogX1dLSGl0VGVzdFJlc3VsdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNFNkE0RUQxQkM1REQzOTAwRjhBMEU3
IC8qIF9XS0hpdFRlc3RSZXN1bHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk5M0U3OTk4NTI3NTZGQTU1MDA3NDAwOEEgLyogV2ViRmlsZVN5c3Rl
bVN0b3JhZ2VDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRTc5OTgyMjc1NkZBNTQwMDc0MDA4QSAvKiBX
ZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9Owog
CQk5M0U3OTk4NzI3NTZGQUI0MDA3NDAwOEEgLyogV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0
aW9uTWVzc2FnZXNSZXBsaWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5M0U3OTk4MzI3NTZGQTU0MDA3NDAwOEEgLyogV2ViRmlsZVN5c3RlbVN0b3Jh
Z2VDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmggKi87IH07CkBAIC01ODMyLDYgKzU4MzMsOCBA
QAogCQk5M0Q2QjdCMjI1NTI2OEEyMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkzRDZCN0I3MjU1MzRBMTEwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bkNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTNENkI3QjgyNTUzNEExMjAwNThERDNBIC8qIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uQ2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTkzRTA1RTNFMjgyQ0Q1NUQwMDBCNjlFQiAvKiBQcm9jZXNzU3RhdGVNb25p
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFByb2Nlc3NTdGF0ZU1vbml0
b3IuaDsgcGF0aCA9IGlvcy9Qcm9jZXNzU3RhdGVNb25pdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTkzRTA1RTNGMjgyQ0Q1NUYwMDBCNjlFQiAvKiBQcm9jZXNzU3RhdGVNb25p
dG9yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gUHJvY2Vzc1N0
YXRlTW9uaXRvci5tbTsgcGF0aCA9IGlvcy9Qcm9jZXNzU3RhdGVNb25pdG9yLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5M0U2QTRFRDFCQzVERDM5MDBGOEEwRTcgLyogX1dLSGl0
VGVzdFJlc3VsdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tIaXRUZXN0
UmVzdWx0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRTc5OTdFMjc1NkY2NzAw
MDc0MDA4QSAvKiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0U3OTk4MTI3NTZGQTUzMDA3
NDAwOEEgLyogV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uTWVzc2FnZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9u
TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkyNjAsNiArOTI2Myw4
IEBACiAJCQkJMEZDQjRFMzYxOEJCRTA0NDAwMEZDRkM5IC8qIFBhZ2VDbGllbnRJbXBsSU9TLmgg
Ki8sCiAJCQkJMEZDQjRFMzcxOEJCRTA0NDAwMEZDRkM5IC8qIFBhZ2VDbGllbnRJbXBsSU9TLm1t
ICovLAogCQkJCTg2Rjk1MzYyMThGRjU1MEIwMDFEQjJFRiAvKiBQcm9jZXNzQXNzZXJ0aW9uSU9T
Lm1tICovLAorCQkJCTkzRTA1RTNFMjgyQ0Q1NUQwMDBCNjlFQiAvKiBQcm9jZXNzU3RhdGVNb25p
dG9yLmggKi8sCisJCQkJOTNFMDVFM0YyODJDRDU1RjAwMEI2OUVCIC8qIFByb2Nlc3NTdGF0ZU1v
bml0b3IubW0gKi8sCiAJCQkJMkRBRjA2RDQxOEJEMUE0NzAwODFDRUIxIC8qIFNtYXJ0TWFnbmlm
aWNhdGlvbkNvbnRyb2xsZXIuaCAqLywKIAkJCQkyREFGMDZEODE4QkQyM0JBMDA4MUNFQjEgLyog
U21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbiAqLywKIAkJCQkyREFGMDZE
NTE4QkQxQTQ3MDA4MUNFQjEgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tbSAqLywK
QEAgLTE0NTYwLDYgKzE0NTY1LDcgQEAKIAkJCQk1Q0I5MzEwOTI2RTg0MzlBMDAzMkIxQzAgLyog
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg2Rjk1MzY1MThGRjU4RjUwMDFEQjJFRiAvKiBQcm9jZXNzQXNzZXJ0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzFBN0M1ODExMzZFMTlDMDBGQjcxNjcgLyogUHJvY2Vzc0xhdW5jaGVyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk5M0UwNUU0MDI4MkNENTYwMDAwQjY5RUIgLyogUHJvY2Vzc1N0
YXRlTW9uaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDYzRkQ0ODIxRUI5NEVDMDAwQTI5ODJD
IC8qIFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFNjdB
MjUxOTEwQjlEMTAwMDA0QUI3IC8qIFByb2Nlc3NUaHJvdHRsZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTgzMDQ4QUU2MUFDQTQ1REMwMDgyQzgzMiAvKiBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459306</attachid>
            <date>2022-05-13 09:31:06 -0700</date>
            <delta_ts>2022-05-15 22:39:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-240359-20220513093105.patch</filename>
            <type>text/plain</type>
            <size>23929</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjk0MDk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY5YjQwMWIwYzVhYjk1MTk5
M2ZiZDBiYjZlZDAyNTVjOGFlNDlmZGUuLmU5NGNhZTQwMTZjZWI3ZTU3YzM2ZGM3ODYwMTAwZDE2
MDFlZTZmMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMjItMDUtMTMgIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgTW9uaXRvciBwcm9jZXNzIHN0YXRl
IGFuZCBzZW5kIHByZXBhcmVUb1N1c3BlbmQgYmFzZWQgb24gdGhhdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQwMzU5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3VycmVudGx5IFVJIHByb2Nlc3Mgc2Vu
ZHMgUHJlcGFyZVRvU3VzcGVuZCB3aGVuIGEgcHJvY2VzcyBoYXMgbm8gYWN0aXZpdHkgdGhhdCBu
ZWVkcyBhbiBhc3NlcnRpb24sIG9yIHdoZW4KKyAgICAgICAgYXNzZXJ0aW9uIHdpbGwgYmUgaW52
YWxpZGF0ZWQgZHVlIHRvIHRpbWVvdXQgKHdoZW4gYXNzZXJ0aW9uV2lsbEludmFsaWRhdGUgaXMg
Y2FsbGVkKS4gT24gcmVjZWl2aW5nIHRoZSBtZXNzYWdlLCAKKyAgICAgICAgdGhlIHByb2Nlc3Mg
d2lsbCBwZXJmb3JtIG5lY2Vzc2FyeSBhY3Rpb25zLCBzdWNoIGFzIHN1c3BlbmRpbmcgc3RvcmFn
ZSB0aHJlYWRzIGZvciBuZXR3b3JrIHByb2Nlc3MsIHRvIGJlIHJlYWR5IAorICAgICAgICBmb3Ig
c3VzcGVuc2lvbi4gQWNjb3JkaW5nIHRvIGNyYXNoZXMgaW4gcmRhcjovL3Byb2JsZW0vOTIyMjgx
OTAsIHRoZSBtZXNzYWdlIGlzIG5vdCByZWNlaXZlZCBieSBwcm9jZXNzIGJlZm9yZQorICAgICAg
ICBzdXNwZW5zaW9uLCBvciBwcm9jZXNzIGdldHMgc3VzcGVuZGVkIHdoaWxlIHByb2Nlc3Npbmcg
dGhlIG1lc3NhZ2UuIFdlIG5lZWQgdG8gZW5zdXJlIHRoZSBtZXNzYWdlIGdldHMgcHJvY2Vzc2Vk
CisgICAgICAgIGJlZm9yZSBwcm9jZXNzIHN1c3BlbnNpb24gdG8gZml4IHRoZSBjcmFzaGVzLgor
CisgICAgICAgIFRvIGFjaGlldmUgdGhhdCwgd2UgaW50cm9kdWNlIFByb2Nlc3NTdGF0ZU1vbml0
b3IgdG8gdHJhY2sgd2hlbiBVSSBwcm9jZXNzIHdpbGwgYmUgc3VzcGVuZGVkLCBhbmQgbm90aWZp
ZXMKKyAgICAgICAgV2ViUHJvY2Vzc1Bvb2xzIHdoZW4gaXRzIHJ1bm5pbmcgdGltZSBpcyBsZXNz
IHRoYW4gMTVzLiBPbiByZWNlaXZpbmcgdGhlIG5vdGlmaWNhdGlvbiwgYWxsIHdlYiBwcm9jZXNz
ZXMgc2hvdWxkCisgICAgICAgIGludmFsaWRhdGUgYmFja2dyb3VuZCBhY3Rpdml0aWVzLCBkcm9w
IGJhY2tncm91bmQgYXNzZXJ0aW9uLCBhbmQgc2VuZCBvdXQgUHJlcGFyZVRvU3VzcGVuZCBtZXNz
YWdlcy4gVGhleSBhcmUgCisgICAgICAgIG5vdCBhbGxvd2VkIHRvIHRha2UgbmV3IGJhY2tncm91
bmQgYXNzZXJ0aW9uIHVudGlsIFByb2Nlc3NTdGF0ZU1vbml0b3IgZmluZHMgcHJvY2VzcyBiZWNv
bWVzIHJ1bm5pbmcgd2l0aG91dCAKKyAgICAgICAgdGltZW91dCAoZS5nLiBhcHBsaWNhdGlvbiBi
ZWNvbWVzIGZvcmVncm91bmRlZCBvciBhY3F1aXJlcyBzcGVjaWFsIGFzc2VydGlvbikuCisKKyAg
ICAgICAgVG8gYXZvaWQgZ2V0dGluZyB1bm5lY2Vzc2FyeSB1cGRhdGVzIGZyb20gcnVubmluZ2Jv
YXJkZCwgUHJvY2Vzc1N0YXRlTW9uaXRvciBzdGFydHMgd29ya2luZyB3aGVuIHByb2Nlc3MgZW50
ZXJzIAorICAgICAgICBiYWNrZ3JvdW5kLCBhbmQgc3RvcHMgd29ya2luZyB3aGVuIHByb2Nlc3Mg
ZW50ZXJzIGZvcmVncm91bmQuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9zcGkvaW9zL1J1bm5pbmdC
b2FyZFNlcnZpY2VzU1BJLmg6CisgICAgICAgICgrW1JCU1Byb2Nlc3NQcmVkaWNhdGUgcHJlZGlj
YXRlTWF0Y2hpbmdIYW5kbGU6XSk6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldFByb2Nlc3Nlc1Nob3VsZFN1c3BlbmQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJv
Y2Vzc1Rocm90dGxlcjo6YWRkQWN0aXZpdHkpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhy
b3R0bGVyOjpzZXRBbGxvd0JhY2tncm91bmRBY3Rpdml0eSk6CisgICAgICAgICogVUlQcm9jZXNz
L1Byb2Nlc3NUaHJvdHRsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzZXRTaG91bGRTdXNwZW5kKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9Qcm9jZXNz
QXNzZXJ0aW9uSU9TLm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NBc3NlcnRpb25CYWNrZ3JvdW5k
VGFza01hbmFnZXIgaW5pdF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUHJvY2Vzc1N0YXRl
TW9uaXRvci5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1Byb2Nlc3NTdGF0ZU1v
bml0b3IubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzU3RhdGVNb25pdG9yOjpQ
cm9jZXNzU3RhdGVNb25pdG9yKToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1N0YXRlTW9uaXRv
cjo6flByb2Nlc3NTdGF0ZU1vbml0b3IpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzU3RhdGVN
b25pdG9yOjpwcm9jZXNzRGlkQmVjb21lUnVubmluZyk6CisgICAgICAgIChXZWJLaXQ6OlByb2Nl
c3NTdGF0ZU1vbml0b3I6OnByb2Nlc3NXaWxsQmVTdXNwZW5kZWQpOgorICAgICAgICAoV2ViS2l0
OjpQcm9jZXNzU3RhdGVNb25pdG9yOjpzdXNwZW5kVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJL
aXQ6OlByb2Nlc3NTdGF0ZU1vbml0b3I6OmNoZWNrUmVtYWluaW5nUnVuVGltZSk6CisgICAgICAg
ICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjItMDUtMTIgIFlvdXN1
a2UgS2ltb3RvICA8eW91c3VrZS5raW1vdG9Ac29ueS5jb20+CiAKICAgICAgICAgW1dpbkNhaXJv
XSBGaXggYSBjb21waWxlIGVycm9yIGR1ZSB0byBJbnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhh
bmRsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9SdW5uaW5n
Qm9hcmRTZXJ2aWNlc1NQSS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1J1bm5p
bmdCb2FyZFNlcnZpY2VzU1BJLmgKaW5kZXggNDI1MTMyZmU5MGNmYmVjMzc2ZjM2OTIxNWYwNDMy
Y2YyYmE5ODg0ZC4uYzMwMDc5ZjQwMjU0MDg3YzZhODM2ODA5MTUyM2M4OTQ4MTY2YjVlZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1J1bm5pbmdCb2FyZFNlcnZp
Y2VzU1BJLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1J1bm5pbmdCb2Fy
ZFNlcnZpY2VzU1BJLmgKQEAgLTEzMSwxNCArMTMxLDI0IEBAIHR5cGVkZWYgdm9pZCAoXlJCU1By
b2Nlc3NVcGRhdGVIYW5kbGVyKShSQlNQcm9jZXNzTW9uaXRvciAqbW9uaXRvciwgUkJTUHJvY2Vz
c0hhCiAKIEBpbnRlcmZhY2UgUkJTUHJvY2Vzc01vbml0b3IgOiBOU09iamVjdCA8TlNDb3B5aW5n
PgogKyAoaW5zdGFuY2V0eXBlKW1vbml0b3JXaXRoQ29uZmlndXJhdGlvbjooTlNfTk9FU0NBUEUg
UkJTUHJvY2Vzc01vbml0b3JDb25maWd1cmF0b3IpYmxvY2s7CistICh2b2lkKWludmFsaWRhdGU7
CiBAZW5kCiAKIEBpbnRlcmZhY2UgUkJTUHJvY2Vzc1ByZWRpY2F0ZSA6IE5TT2JqZWN0IDxSQlNQ
cm9jZXNzTWF0Y2hpbmc+CiArIChSQlNQcm9jZXNzUHJlZGljYXRlICopcHJlZGljYXRlTWF0Y2hp
bmdIYW5kbGU6KFJCU1Byb2Nlc3NIYW5kbGUgKilwcm9jZXNzOwordHlwZWRlZiBOU19PUFRJT05T
KE5TVUludGVnZXIsIFJCU1Byb2Nlc3NTdGF0ZVZhbHVlcykgeworICAgIFJCU1Byb2Nlc3NTdGF0
ZVZhbHVlTm9uZSAgICAgICAgICAgICAgICAgICAgPSAwLAorICAgIFJCU1Byb2Nlc3NTdGF0ZVZh
bHVlVGFza1N0YXRlICAgICAgICAgICAgICAgPSAoMSA8PCAwKSwKKyAgICBSQlNQcm9jZXNzU3Rh
dGVWYWx1ZVRhZ3MgICAgICAgICAgICAgICAgICAgID0gKDEgPDwgMSksCisgICAgUkJTUHJvY2Vz
c1N0YXRlVmFsdWVUZXJtaW5hdGlvblJlc2lzdGFuY2UgICA9ICgxIDw8IDIpLAorICAgIFJCU1By
b2Nlc3NTdGF0ZVZhbHVlTGVnYWN5QXNzZXJ0aW9ucyAgICAgICAgPSAoMSA8PCAzKSwKKyAgICBS
QlNQcm9jZXNzU3RhdGVWYWx1ZU1vZGVybkFzc2VydGlvbnMgICAgICAgID0gKDEgPDwgNCksCit9
OwogQGVuZAogCiBAaW50ZXJmYWNlIFJCU1Byb2Nlc3NTdGF0ZURlc2NyaXB0b3IgOiBOU09iamVj
dCA8TlNDb3B5aW5nPgogKyAoaW5zdGFuY2V0eXBlKWRlc2NyaXB0b3I7CitAcHJvcGVydHkgKG5v
bmF0b21pYywgcmVhZHdyaXRlLCBhc3NpZ24pIFJCU1Byb2Nlc3NTdGF0ZVZhbHVlcyB2YWx1ZXM7
CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZHdyaXRlLCBjb3B5LCBudWxsYWJsZSkgTlNBcnJh
eTxOU1N0cmluZyAqPiAqZW5kb3dtZW50TmFtZXNwYWNlczsKIEBlbmQKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0CmluZGV4IDM4YWQzMWY3MWEzZWQ2MmU5MzA1MzQ4ZTUwN2YwMWRiODE1M2UyMDYuLjRj
Y2U3ODZhOTJiY2U3MmIwN2RmYWUwOWVhMzEwOWQ5NmY3OGI2M2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2Nv
YS50eHQKQEAgLTQ5MSw2ICs0OTEsNyBAQCBVSVByb2Nlc3MvaW9zL0dlc3R1cmVSZWNvZ25pemVy
Q29uc2lzdGVuY3lFbmZvcmNlci5tbQogVUlQcm9jZXNzL2lvcy9JbnB1dFZpZXdVcGRhdGVEZWZl
cnJlci5tbQogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQogVUlQcm9jZXNzL2lv
cy9Qcm9jZXNzQXNzZXJ0aW9uSU9TLm1tCitVSVByb2Nlc3MvaW9zL1Byb2Nlc3NTdGF0ZU1vbml0
b3IubW0KIFVJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tbQogVUlQ
cm9jZXNzL2lvcy9UZXh0Q2hlY2tlcklPUy5tbQogVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNv
bnRyb2xsZXJJT1MubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlByb2Nlc3NQb29sQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQcm9jZXNzUG9vbENvY29hLm1tCmluZGV4IDE3NjM0OWViNjcwOGUyYjdmYmQ3NTViOTM4MTY5
NWQ5MDI1YjM4YjMuLjk3YzFlMGM4NGE5MWVjMzgyNThiMGRjOGFiZDQ5MDc1ODdhYTQ1MmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xD
b2NvYS5tbQpAQCAtMTA2NSw2ICsxMDY1LDEzIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6Om5vdGlm
eVByb2Nlc3NQb29sc0FwcGxpY2F0aW9uSXNBYm91dFRvU3VzcGVuZCgpCiAgICAgZm9yIChhdXRv
JiBwcm9jZXNzUG9vbCA6IGFsbFByb2Nlc3NQb29scygpKQogICAgICAgICBwcm9jZXNzUG9vbC0+
YXBwbGljYXRpb25Jc0Fib3V0VG9TdXNwZW5kKCk7CiB9CisKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnNldFByb2Nlc3Nlc1Nob3VsZFN1c3BlbmQoYm9vbCBzaG91bGRTdXNwZW5kKQoreworICAgIGZv
ciAoYXV0byYgcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQorICAgICAgICBwcm9jZXNzLT5zZXRTaG91
bGRTdXNwZW5kKHNob3VsZFN1c3BlbmQpOworfQorCiAjZW5kaWYKIAogdm9pZCBXZWJQcm9jZXNz
UG9vbDo6aW5pdGlhbGl6ZUNsYXNzZXNGb3JQYXJhbWV0ZXJDb2RpbmcoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcAppbmRleCA0NzEyZjJlY2ZiYTJjNWE5
OWUyZDZiYWQ0ZjFlMDVjNTdkZGU4NmE1Li4yNDQyNTQ5NmQ4NzhiM2JlNzQwNGE3MzUwOTk1YjQ1
NmVjNTEzMTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhy
b3R0bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVy
LmNwcApAQCAtNjAsNiArNjAsMTEgQEAgdm9pZCBQcm9jZXNzVGhyb3R0bGVyOjphZGRBY3Rpdml0
eShGb3JlZ3JvdW5kQWN0aXZpdHkmIGFjdGl2aXR5KQogCiB2b2lkIFByb2Nlc3NUaHJvdHRsZXI6
OmFkZEFjdGl2aXR5KEJhY2tncm91bmRBY3Rpdml0eSYgYWN0aXZpdHkpCiB7CisgICAgaWYgKCFt
X2FsbG93QmFja2dyb3VuZEFjdGl2aXR5KSB7CisgICAgICAgIEFTU0VSVChtX2JhY2tncm91bmRB
Y3Rpdml0aWVzLmlzRW1wdHkoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBtX2Jh
Y2tncm91bmRBY3Rpdml0aWVzLmFkZCgmYWN0aXZpdHkpOwogICAgIHVwZGF0ZUFzc2VydGlvbklm
TmVlZGVkKCk7CiB9CkBAIC0yNTcsNiArMjYyLDE4IEBAIGJvb2wgUHJvY2Vzc1Rocm90dGxlcjo6
aXNWYWxpZEZvcmVncm91bmRBY3Rpdml0eShjb25zdCBQcm9jZXNzVGhyb3R0bGVyOjpBY3Rpdml0
CiAgICAgcmV0dXJuIHN0ZDo6Z2V0PFVuaXF1ZVJlZjxQcm9jZXNzVGhyb3R0bGVyOjpGb3JlZ3Jv
dW5kQWN0aXZpdHk+PihhY3Rpdml0eSktPmlzVmFsaWQoKTsKIH0KIAordm9pZCBQcm9jZXNzVGhy
b3R0bGVyOjpzZXRBbGxvd0JhY2tncm91bmRBY3Rpdml0eShib29sIGFsbG93KQoreworICAgIGlm
IChtX2FsbG93QmFja2dyb3VuZEFjdGl2aXR5ID09IGFsbG93KQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAoIWFsbG93KSB7CisgICAgICAgIHdoaWxlICghbV9iYWNrZ3JvdW5kQWN0aXZpdGll
cy5pc0VtcHR5KCkpCisgICAgICAgICAgICAoKm1fYmFja2dyb3VuZEFjdGl2aXRpZXMuYmVnaW4o
KSktPmludmFsaWRhdGUoKTsKKyAgICB9CisgICAgbV9hbGxvd0JhY2tncm91bmRBY3Rpdml0eSA9
IGFsbG93OworfQorCiBQcm9jZXNzVGhyb3R0bGVyOjpUaW1lZEFjdGl2aXR5OjpUaW1lZEFjdGl2
aXR5KFNlY29uZHMgdGltZW91dCwgUHJvY2Vzc1Rocm90dGxlcjo6QWN0aXZpdHlWYXJpYW50JiYg
YWN0aXZpdHkpCiAgICAgOiBtX3RpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlRpbWVkQWN0
aXZpdHk6OmFjdGl2aXR5VGltZWRPdXQpCiAgICAgLCBtX3RpbWVvdXQodGltZW91dCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuaAppbmRleCA1NGRkNzY1OGYxZGZk
MGNlZmU5NDYxYzg4MjljMDUxNmMyZjA2OTA2Li5iNzFlNjljMTcwM2M5NzRlYTdlMjdhOGIxMWJm
ZjA0NzI3N2IyOWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNz
VGhyb3R0bGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxl
ci5oCkBAIC0xMjUsNiArMTI1LDcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgZGlkQ29ubmVj
dFRvUHJvY2VzcyhQcm9jZXNzSUQpOwogICAgIGJvb2wgc2hvdWxkQmVSdW5uYWJsZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZm9yZWdyb3VuZEFjdGl2aXRpZXMuc2l6ZSgpIHx8IG1fYmFja2dyb3VuZEFj
dGl2aXRpZXMuc2l6ZSgpOyB9CisgICAgdm9pZCBzZXRBbGxvd0JhY2tncm91bmRBY3Rpdml0eShi
b29sKTsKIAogcHJpdmF0ZToKICAgICBQcm9jZXNzQXNzZXJ0aW9uVHlwZSBleHBlY3RlZEFzc2Vy
dGlvblR5cGUoKTsKQEAgLTE1NSw2ICsxNTYsNyBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8QmFj
a2dyb3VuZEFjdGl2aXR5Kj4gbV9iYWNrZ3JvdW5kQWN0aXZpdGllczsKICAgICBzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiBtX3BlbmRpbmdSZXF1ZXN0VG9TdXNwZW5kSUQ7CiAgICAgYm9vbCBtX3No
b3VsZFRha2VVSUJhY2tncm91bmRBc3NlcnRpb247CisgICAgYm9vbCBtX2FsbG93QmFja2dyb3Vu
ZEFjdGl2aXR5IHsgdHJ1ZSB9OwogfTsKIAogaW5saW5lIGF1dG8gUHJvY2Vzc1Rocm90dGxlcjo6
Zm9yZWdyb3VuZEFjdGl2aXR5KEFTQ0lJTGl0ZXJhbCBuYW1lKSAtPiBVbmlxdWVSZWY8Rm9yZWdy
b3VuZEFjdGl2aXR5PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5k
ZXggZDRkYTNkYTg0NDNmNmQxM2VjMmUzMGFiMjQ4YmE4YmExM2JhN2YwMC4uOTFkZjM2OTkwNDQx
MTRlZDhhMjhlYmRmMzYyZTRmNjVlNTlkMjg5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5oCkBAIC0yMzYsNiArMjM2LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgdm9pZCBhcHBsaWNhdGlvbklzQWJvdXRUb1N1c3BlbmQoKTsKICAg
ICBzdGF0aWMgdm9pZCBub3RpZnlQcm9jZXNzUG9vbHNBcHBsaWNhdGlvbklzQWJvdXRUb1N1c3Bl
bmQoKTsKKyAgICB2b2lkIHNldFByb2Nlc3Nlc1Nob3VsZFN1c3BlbmQoYm9vbCk7CiAjZW5kaWYK
IAogICAgIHZvaWQgaGFuZGxlTWVtb3J5UHJlc3N1cmVXYXJuaW5nKENyaXRpY2FsKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGQ3NTZhM2Q2OTNm
NmE0M2Y3NDNlMjA5ZWQ2ZDBlNzVjMzM1MWRiYzEuLjkwNTQ4YzBlMjhhYjIyNzc3ODQxMTJlNDNj
ZjUzNTk5NzRmNzI0NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcApAQCAtMjEwNyw2ICsyMTA3LDExIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXRO
b3RpZmljYXRpb25zKGNvbnN0IFVSTCYgcmVnaXN0cmF0aW9uVVJMLCBjb25zdCBTdHJpbmcmCiAg
ICAgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpzaGFyZWRTZXJ2aWNlV29ya2VyTWFuYWdl
cigpLmdldE5vdGlmaWNhdGlvbnMocmVnaXN0cmF0aW9uVVJMLCB0YWcsIHNlc3Npb25JRCgpLCBX
VEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZXRTaG91bGRT
dXNwZW5kKGJvb2wgc2hvdWxkU3VzcGVuZCkKK3sKKyAgICBtX3Rocm90dGxlci5zZXRBbGxvd0Jh
Y2tncm91bmRBY3Rpdml0eSghc2hvdWxkU3VzcGVuZCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdAogCiAjdW5kZWYgTUVTU0FHRV9DSEVDSwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuaAppbmRleCA0YzIyZGFiMTgwZTA4MDc1NDBmNjAyZjRlN2UxODA3YmEyODE2
ZDlhLi4wNzY1NThkN2RhYmNhMjU0OTVmYjZhYjEzZTNmMjBkYWJlNzM2ZDg5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtNDM3LDYgKzQzNyw4IEBAIHB1
YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW4oKSBjb25z
dDsKICNlbmRpZgogCisgICAgdm9pZCBzZXRTaG91bGRTdXNwZW5kKGJvb2wpOworCiBwcm90ZWN0
ZWQ6CiAgICAgV2ViUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiwgV2Vic2l0ZURhdGFTdG9y
ZSosIElzUHJld2FybWVkLCBXZWJDb3JlOjpDcm9zc09yaWdpbk1vZGUsIENhcHRpdmVQb3J0YWxN
b2RlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Byb2Nlc3NB
c3NlcnRpb25JT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUHJvY2Vzc0Fzc2Vy
dGlvbklPUy5tbQppbmRleCBmZDg3ODliODY4ZDIxMTRiNmI3MDM5YTYzMGY3ZjFkYmY4MGQxNWI5
Li4wZTc4YjUwNjg1MWY0NTM2ZGFmNzAxMzBkMmQ0MzQ1ZTYyYTAyZjI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUHJvY2Vzc0Fzc2VydGlvbklPUy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUHJvY2Vzc0Fzc2VydGlvbklPUy5tbQpAQCAtMjks
NiArMjksNyBAQAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIkxvZ2dpbmcu
aCIKKyNpbXBvcnQgIlByb2Nlc3NTdGF0ZU1vbml0b3IuaCIKICNpbXBvcnQgIlJ1bm5pbmdCb2Fy
ZFNlcnZpY2VzU1BJLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUG9vbC5oIgogI2ltcG9ydCA8VUlL
aXQvVUlBcHBsaWNhdGlvbi5oPgpAQCAtNzMsNiArNzQsNyBAQCBzdGF0aWMgYm9vbCBwcm9jZXNz
SGFzQWN0aXZlUnVuVGltZUxpbWl0YXRpb24oKQogICAgIHN0ZDo6YXRvbWljPGJvb2w+IF9iYWNr
Z3JvdW5kVGFza1dhc0ludmFsaWRhdGVkOwogICAgIFdlYWtIYXNoU2V0PFByb2Nlc3NBbmRVSUFz
c2VydGlvbj4gX2Fzc2VydGlvbnNOZWVkaW5nQmFja2dyb3VuZFRhc2s7CiAgICAgZGlzcGF0Y2hf
YmxvY2tfdCBfcGVuZGluZ1Rhc2tSZWxlYXNlVGFzazsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
S2l0OjpQcm9jZXNzU3RhdGVNb25pdG9yPiBtX3Byb2Nlc3NTdGF0ZU1vbml0b3I7CiB9CiAKICsg
KFdLUHJvY2Vzc0Fzc2VydGlvbkJhY2tncm91bmRUYXNrTWFuYWdlciAqKXNoYXJlZApAQCAtOTIs
MTEgKzk0LDIxIEBAIHN0YXRpYyBib29sIHByb2Nlc3NIYXNBY3RpdmVSdW5UaW1lTGltaXRhdGlv
bigpCiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZl
ckZvck5hbWU6VUlBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmROb3RpZmljYXRpb24gb2Jq
ZWN0OltVSUFwcGxpY2F0aW9uIHNoYXJlZEFwcGxpY2F0aW9uXSBxdWV1ZTpuaWwgdXNpbmdCbG9j
azpeKE5TTm90aWZpY2F0aW9uICopIHsKICAgICAgICAgW3NlbGYgX2NhbmNlbFBlbmRpbmdSZWxl
YXNlVGFza107CiAgICAgICAgIFtzZWxmIF91cGRhdGVCYWNrZ3JvdW5kVGFza107CisKKyAgICAg
ICAgaWYgKG1fcHJvY2Vzc1N0YXRlTW9uaXRvcikKKyAgICAgICAgICAgIG1fcHJvY2Vzc1N0YXRl
TW9uaXRvciA9IG51bGxwdHI7CiAgICAgfV07CiAKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVy
IGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyRm9yTmFtZTpVSUFwcGxpY2F0aW9uRGlkRW50ZXJC
YWNrZ3JvdW5kTm90aWZpY2F0aW9uIG9iamVjdDpbVUlBcHBsaWNhdGlvbiBzaGFyZWRBcHBsaWNh
dGlvbl0gcXVldWU6bmlsIHVzaW5nQmxvY2s6XihOU05vdGlmaWNhdGlvbiAqKSB7CiAgICAgICAg
IGlmICghW3NlbGYgX2hhc0JhY2tncm91bmRUYXNrXSkKICAgICAgICAgICAgIFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2w6Om5vdGlmeVByb2Nlc3NQb29sc0FwcGxpY2F0aW9uSXNBYm91dFRvU3VzcGVu
ZCgpOworICAgICAgICAKKyAgICAgICAgaWYgKCFtX3Byb2Nlc3NTdGF0ZU1vbml0b3IpIHsKKyAg
ICAgICAgICAgIG1fcHJvY2Vzc1N0YXRlTW9uaXRvciA9IG1ha2VVbmlxdWU8V2ViS2l0OjpQcm9j
ZXNzU3RhdGVNb25pdG9yPihbXShib29sIHN1c3BlbmRlZCkgeworICAgICAgICAgICAgICAgIGZv
ciAoYXV0byBwcm9jZXNzUG9vbCA6IFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmFsbFByb2Nlc3NQ
b29scygpKQorICAgICAgICAgICAgICAgICAgICBwcm9jZXNzUG9vbC0+c2V0UHJvY2Vzc2VzU2hv
dWxkU3VzcGVuZChzdXNwZW5kZWQpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KICAgICB9
XTsKIAogICAgIHJldHVybiBzZWxmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1Byb2Nlc3NTdGF0ZU1vbml0b3IuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9Qcm9jZXNzU3RhdGVNb25pdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVkMmRmZGMzMGRiZTA0MDVjMzMy
NTgzNjZkMjcwOWE2MzMyODM5ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9Qcm9jZXNzU3RhdGVNb25pdG9yLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKworI2ltcG9y
dCA8V2ViQ29yZS9UaW1lci5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCitPQkpDX0NM
QVNTIFJCU1Byb2Nlc3NNb25pdG9yOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUHJv
Y2Vzc1N0YXRlTW9uaXRvciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxQcm9jZXNzU3RhdGVNb25p
dG9yPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgUHJvY2Vz
c1N0YXRlTW9uaXRvcihGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGJlY29tZVN1c3BlbmRlZEhhbmRs
ZXIpOworICAgIH5Qcm9jZXNzU3RhdGVNb25pdG9yKCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBw
cm9jZXNzRGlkQmVjb21lUnVubmluZygpOworICAgIHZvaWQgcHJvY2Vzc1dpbGxCZVN1c3BlbmRl
ZChTZWNvbmRzKTsKKyAgICB2b2lkIHN1c3BlbmRUaW1lckZpcmVkKCk7CisgICAgdm9pZCBjaGVj
a1JlbWFpbmluZ1J1blRpbWUoKTsKKworICAgIGVudW0gY2xhc3MgU3RhdGUgOiB1aW50OF90IHsg
VW5rbm93biwgUnVubmluZywgV2lsbFN1c3BlbmQsIFN1c3BlbmRlZCB9OworICAgIFN0YXRlIG1f
c3RhdGUgeyBTdGF0ZTo6VW5rbm93biB9OworICAgIEZ1bmN0aW9uPHZvaWQoYm9vbCk+IG1fYmVj
b21lU3VzcGVuZGVkSGFuZGxlcjsKKyAgICBXZWJDb3JlOjpUaW1lciBtX3N1c3BlbmRUaW1lcjsK
KyAgICBSZXRhaW5QdHI8UkJTUHJvY2Vzc01vbml0b3I+IG1fcmJzTW9uaXRvcjsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9Qcm9jZXNzU3RhdGVNb25pdG9y
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Byb2Nlc3NTdGF0ZU1vbml0b3IubW0K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZGIxYWUyYjJiOGUzNWFhYWI5MjcyMDIzNjdjNmZkNGRhOGI1NWQ5ZAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9Qcm9jZXNzU3RhdGVN
b25pdG9yLm1tCkBAIC0wLDAgKzEsMTE1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmln
LmgiCisjaW1wb3J0ICJQcm9jZXNzU3RhdGVNb25pdG9yLmgiCisKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQorCisjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW1wb3J0ICJQ
cm9jZXNzQXNzZXJ0aW9uLmgiCisjaW1wb3J0ICJSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oIgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIGNvbnN0ZXhwciBTZWNvbmRzIHByZXBhcmVG
b3JTdXNwZW5zaW9uRHVyYXRpb24gPSAgMTVfczsKKworUHJvY2Vzc1N0YXRlTW9uaXRvcjo6UHJv
Y2Vzc1N0YXRlTW9uaXRvcihGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGJlY29tZVN1c3BlbmRlZEhh
bmRsZXIpCisgICAgOiBtX2JlY29tZVN1c3BlbmRlZEhhbmRsZXIoV1RGTW92ZShiZWNvbWVTdXNw
ZW5kZWRIYW5kbGVyKSkKKyAgICAsIG1fc3VzcGVuZFRpbWVyKCp0aGlzLCAmUHJvY2Vzc1N0YXRl
TW9uaXRvcjo6c3VzcGVuZFRpbWVyRmlyZWQpCit7CisgICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOworCisgICAgbV9yYnNNb25pdG9yID0gW1JCU1Byb2Nlc3NNb25pdG9yIG1v
bml0b3JXaXRoQ29uZmlndXJhdGlvbjpbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0oaWQ8
UkJTUHJvY2Vzc01vbml0b3JDb25maWd1cmluZz4gY29uZmlnKSBtdXRhYmxlIHsKKyAgICAgICAg
UkJTUHJvY2Vzc1N0YXRlRGVzY3JpcHRvciAqZGVzY3JpcHRvciA9IFtSQlNQcm9jZXNzU3RhdGVE
ZXNjcmlwdG9yIGRlc2NyaXB0b3JdOworICAgICAgICBbZGVzY3JpcHRvciBzZXRWYWx1ZXM6UkJT
UHJvY2Vzc1N0YXRlVmFsdWVMZWdhY3lBc3NlcnRpb25zIHwgUkJTUHJvY2Vzc1N0YXRlVmFsdWVN
b2Rlcm5Bc3NlcnRpb25zXTsKKyAgICAgICAgW2NvbmZpZyBzZXRTdGF0ZURlc2NyaXB0b3I6ZGVz
Y3JpcHRvcl07CisgICAgICAgIFtjb25maWcgc2V0UHJlZGljYXRlczpAW1tSQlNQcm9jZXNzUHJl
ZGljYXRlIHByZWRpY2F0ZU1hdGNoaW5nSGFuZGxlOltSQlNQcm9jZXNzSGFuZGxlIGN1cnJlbnRQ
cm9jZXNzXV1dXTsKKyAgICAgICAgW2NvbmZpZyBzZXRVcGRhdGVIYW5kbGVyOlt3ZWFrVGhpcyA9
IFdURk1vdmUod2Vha1RoaXMpXShSQlNQcm9jZXNzTW9uaXRvciAqbW9uaXRvciwgUkJTUHJvY2Vz
c0hhbmRsZSAqcHJvY2VzcywgUkJTUHJvY2Vzc1N0YXRlVXBkYXRlICp1cGRhdGUpIHsKKyAgICAg
ICAgICAgIGNhbGxPbk1haW5SdW5Mb29wKFt3ZWFrVGhpc10geworICAgICAgICAgICAgICAgIGlm
ICh3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICAgICAgd2Vha1RoaXMtPmNoZWNrUmVtYWluaW5n
UnVuVGltZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH1dOworICAgIH1dOworCisgICAg
Y2hlY2tSZW1haW5pbmdSdW5UaW1lKCk7Cit9CisKK1Byb2Nlc3NTdGF0ZU1vbml0b3I6On5Qcm9j
ZXNzU3RhdGVNb25pdG9yKCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7CisKKyAgICBbbV9yYnNNb25pdG9yLmdldCgpIGludmFsaWRhdGVdOworICAgIHByb2Nlc3NE
aWRCZWNvbWVSdW5uaW5nKCk7Cit9CisKK3ZvaWQgUHJvY2Vzc1N0YXRlTW9uaXRvcjo6cHJvY2Vz
c0RpZEJlY29tZVJ1bm5pbmcoKQoreworICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpSdW5uaW5n
KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6U3VzcGVuZGVk
KQorICAgICAgICBtX2JlY29tZVN1c3BlbmRlZEhhbmRsZXIoZmFsc2UpOworICAgIGVsc2Ugewor
ICAgICAgICBBU1NFUlQobV9zdXNwZW5kVGltZXIuaXNBY3RpdmUoKSk7CisgICAgICAgIG1fc3Vz
cGVuZFRpbWVyLnN0b3AoKTsKKyAgICB9CisKKyAgICBtX3N0YXRlID0gU3RhdGU6OlJ1bm5pbmc7
Cit9CisKK3ZvaWQgUHJvY2Vzc1N0YXRlTW9uaXRvcjo6cHJvY2Vzc1dpbGxCZVN1c3BlbmRlZChT
ZWNvbmRzIHJlbWFpbmluZ1J1blRpbWUpCit7CisgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OlJ1
bm5pbmcpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVCghbV9zdXNwZW5kVGltZXIuaXNB
Y3RpdmUoKSk7CisgICAgU2Vjb25kcyB0aW1lb3V0ID0gcmVtYWluaW5nUnVuVGltZSA+IHByZXBh
cmVGb3JTdXNwZW5zaW9uRHVyYXRpb24gPyByZW1haW5pbmdSdW5UaW1lIC0gcHJlcGFyZUZvclN1
c3BlbnNpb25EdXJhdGlvbiA6IDBfczsKKyAgICBtX3N1c3BlbmRUaW1lci5zdGFydE9uZVNob3Qo
dGltZW91dCk7CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpXaWxsU3VzcGVuZDsKK30KKwordm9pZCBQ
cm9jZXNzU3RhdGVNb25pdG9yOjpzdXNwZW5kVGltZXJGaXJlZCgpCit7CisgICAgaWYgKG1fc3Rh
dGUgIT0gU3RhdGU6OldpbGxTdXNwZW5kKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2JlY29t
ZVN1c3BlbmRlZEhhbmRsZXIodHJ1ZSk7CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpTdXNwZW5kZWQ7
Cit9CisKK3ZvaWQgUHJvY2Vzc1N0YXRlTW9uaXRvcjo6Y2hlY2tSZW1haW5pbmdSdW5UaW1lKCkK
K3sKKyAgICBkb3VibGUgcnVuVGltZSA9IFtbW1JCU1Byb2Nlc3NIYW5kbGUgY3VycmVudFByb2Nl
c3NdIGFjdGl2ZUxpbWl0YXRpb25zXSBydW5UaW1lXTsKKyAgICBpZiAocnVuVGltZSA9PSBSQlNQ
cm9jZXNzVGltZUxpbWl0YXRpb25Ob25lKQorICAgICAgICByZXR1cm4gcHJvY2Vzc0RpZEJlY29t
ZVJ1bm5pbmcoKTsKKworICAgIHByb2Nlc3NXaWxsQmVTdXNwZW5kZWQoU2Vjb25kcyhydW5UaW1l
KSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9T
X0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDViZGJkNjgzYmNjM2ZkZDBkMjkxNjU5ZjAwMjA2Y2RiM2M5MzMwOGMuLjAxMGIw
YzEzMWE2NGM5OTI4MGQ3NWJhMTE1NjFiNTc0YzU3ZDFmM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTUxMiw2ICsxNTEyLDcgQEAK
IAkJOTNENkI3QjQyNTUyNjhENTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
blJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzRDZCN0FGMjU1MjY4QTEwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25S
ZXF1ZXN0LmggKi87IH07CiAJCTkzRDZCN0I1MjU1MjY4RDcwMDU4REQzQSAvKiBTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5M0Q2QjdCMjI1NTI2OEEyMDA1OEREM0EgLyogU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uTWFuYWdlci5oICovOyB9OwogCQk5M0Q2QjdCOTI1NTM0QTE3MDA1OERE
M0EgLyogV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENkI3QjcyNTUzNEExMTAwNThE
RDNBIC8qIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5M0UwNUU0MDI4MkNENTYw
MDAwQjY5RUIgLyogUHJvY2Vzc1N0YXRlTW9uaXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNFMDVFM0UyODJDRDU1RDAwMEI2OUVCIC8qIFByb2Nl
c3NTdGF0ZU1vbml0b3IuaCAqLzsgfTsKIAkJOTNFNkE0RUUxQkM1REQzOTAwRjhBMEU3IC8qIF9X
S0hpdFRlc3RSZXN1bHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzRTZBNEVEMUJDNUREMzkwMEY4QTBFNyAvKiBfV0tIaXRUZXN0UmVzdWx0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNFNzk5ODUy
NzU2RkE1NTAwNzQwMDhBIC8qIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5M0U3OTk4MjI3NTZGQTU0MDA3NDAwOEEgLyogV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0
aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJOTNFNzk5ODcyNzU2RkFCNDAwNzQwMDhB
IC8qIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNFNzk5ODMyNzU2RkE1
NDAwNzQwMDhBIC8qIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VzUmVwbGll
cy5oICovOyB9OwpAQCAtNTgzMiw2ICs1ODMzLDggQEAKIAkJOTNENkI3QjIyNTUyNjhBMjAwNThE
RDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Q2QjdCNzI1NTM0QTExMDA1OEREM0Eg
LyogV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNr
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRDZCN0I4MjU1MzRBMTIwMDU4REQz
QSAvKiBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
Q2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0UwNUUzRTI4MkNE
NTVEMDAwQjY5RUIgLyogUHJvY2Vzc1N0YXRlTW9uaXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBQcm9jZXNzU3RhdGVNb25pdG9yLmg7IHBhdGggPSBpb3MvUHJvY2Vzc1N0
YXRlTW9uaXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0UwNUUzRjI4MkNE
NTVGMDAwQjY5RUIgLyogUHJvY2Vzc1N0YXRlTW9uaXRvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgbmFtZSA9IFByb2Nlc3NTdGF0ZU1vbml0b3IubW07IHBhdGggPSBpb3Mv
UHJvY2Vzc1N0YXRlTW9uaXRvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNF
NkE0RUQxQkM1REQzOTAwRjhBMEU3IC8qIF9XS0hpdFRlc3RSZXN1bHQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSGl0VGVzdFJlc3VsdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5M0U3OTk3RTI3NTZGNjcwMDA3NDAwOEEgLyogV2ViRmlsZVN5c3RlbVN0
b3JhZ2VDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkZp
bGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTNFNzk5ODEyNzU2RkE1MzAwNzQwMDhBIC8qIFdlYkZpbGVTeXN0ZW1TdG9y
YWdlQ29ubmVjdGlvbk1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC05MjYwLDYgKzkyNjMsOCBAQAogCQkJCTBGQ0I0RTM2MThCQkUwNDQw
MDBGQ0ZDOSAvKiBQYWdlQ2xpZW50SW1wbElPUy5oICovLAogCQkJCTBGQ0I0RTM3MThCQkUwNDQw
MDBGQ0ZDOSAvKiBQYWdlQ2xpZW50SW1wbElPUy5tbSAqLywKIAkJCQk4NkY5NTM2MjE4RkY1NTBC
MDAxREIyRUYgLyogUHJvY2Vzc0Fzc2VydGlvbklPUy5tbSAqLywKKwkJCQk5M0UwNUUzRTI4MkNE
NTVEMDAwQjY5RUIgLyogUHJvY2Vzc1N0YXRlTW9uaXRvci5oICovLAorCQkJCTkzRTA1RTNGMjgy
Q0Q1NUYwMDBCNjlFQiAvKiBQcm9jZXNzU3RhdGVNb25pdG9yLm1tICovLAogCQkJCTJEQUYwNkQ0
MThCRDFBNDcwMDgxQ0VCMSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLmggKi8sCiAJ
CQkJMkRBRjA2RDgxOEJEMjNCQTAwODFDRUIxIC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xs
ZXIubWVzc2FnZXMuaW4gKi8sCiAJCQkJMkRBRjA2RDUxOEJEMUE0NzAwODFDRUIxIC8qIFNtYXJ0
TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubW0gKi8sCkBAIC0xNDU2MCw2ICsxNDU2NSw3IEBACiAJ
CQkJNUNCOTMxMDkyNkU4NDM5QTAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50WFBD
VXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkY5NTM2NTE4RkY1OEY1MDAxREIyRUYg
LyogUHJvY2Vzc0Fzc2VydGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxQTdDNTgxMTM2RTE5
QzAwRkI3MTY3IC8qIFByb2Nlc3NMYXVuY2hlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNFMDVF
NDAyODJDRDU2MDAwMEI2OUVCIC8qIFByb2Nlc3NTdGF0ZU1vbml0b3IuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQ2M0ZENDgyMUVCOTRFQzAwMEEyOTgyQyAvKiBQcm9jZXNzVGVybWluYXRpb25SZWFz
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RTY3QTI1MTkxMEI5RDEwMDAwNEFCNyAvKiBQcm9j
ZXNzVGhyb3R0bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzA0OEFFNjFBQ0E0NURDMDA4MkM4
MzIgLyogUHJvY2Vzc1Rocm90dGxlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459395</attachid>
            <date>2022-05-15 22:39:40 -0700</date>
            <delta_ts>2022-05-16 09:30:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-240359-20220515223939.patch</filename>
            <type>text/plain</type>
            <size>20823</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggZDc2NGJjYWZkYWI0OWRmZTY1ZDcyYmFjYjBlYTRjNGZlMTI2MTA3ZC4uZThm
NTAyZjZkMjczN2Q4Mzk2M2EyMzgxM2ZhMjMxZDdkMTc3ZmQ4YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw1MCBAQAorMjAyMi0wNS0xNSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKwor
ICAgICAgICBNb25pdG9yIHByb2Nlc3Mgc3RhdGUgYW5kIHNlbmQgcHJlcGFyZVRvU3VzcGVuZCBi
YXNlZCBvbiB0aGF0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yNDAzNTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBDdXJyZW50bHkgVUkgcHJvY2VzcyBzZW5kcyBQcmVwYXJlVG9TdXNwZW5kIHdoZW4gYSBw
cm9jZXNzIGhhcyBubyBhY3Rpdml0eSB0aGF0IG5lZWRzIGFuIGFzc2VydGlvbiwgb3Igd2hlbgor
ICAgICAgICBhc3NlcnRpb24gd2lsbCBiZSBpbnZhbGlkYXRlZCBkdWUgdG8gdGltZW91dCAod2hl
biBhc3NlcnRpb25XaWxsSW52YWxpZGF0ZSBpcyBjYWxsZWQpLiBPbiByZWNlaXZpbmcgdGhlIG1l
c3NhZ2UsIAorICAgICAgICB0aGUgcHJvY2VzcyB3aWxsIHBlcmZvcm0gbmVjZXNzYXJ5IGFjdGlv
bnMsIHN1Y2ggYXMgc3VzcGVuZGluZyBzdG9yYWdlIHRocmVhZHMgZm9yIG5ldHdvcmsgcHJvY2Vz
cywgdG8gYmUgcmVhZHkgCisgICAgICAgIGZvciBzdXNwZW5zaW9uLiBBY2NvcmRpbmcgdG8gY3Jh
c2hlcyBpbiByZGFyOi8vcHJvYmxlbS85MjIyODE5MCwgdGhlIG1lc3NhZ2UgaXMgbm90IHJlY2Vp
dmVkIGJ5IHByb2Nlc3MgYmVmb3JlCisgICAgICAgIHN1c3BlbnNpb24sIG9yIHByb2Nlc3MgZ2V0
cyBzdXNwZW5kZWQgd2hpbGUgcHJvY2Vzc2luZyB0aGUgbWVzc2FnZS4gV2UgbmVlZCB0byBlbnN1
cmUgdGhlIG1lc3NhZ2UgZ2V0cyBwcm9jZXNzZWQKKyAgICAgICAgYmVmb3JlIHByb2Nlc3Mgc3Vz
cGVuc2lvbiB0byBmaXggdGhlIGNyYXNoZXMuCisKKyAgICAgICAgVG8gYWNoaWV2ZSB0aGF0LCB3
ZSBpbnRyb2R1Y2UgUHJvY2Vzc1N0YXRlTW9uaXRvciB0byB0cmFjayB3aGVuIFVJIHByb2Nlc3Mg
d2lsbCBiZSBzdXNwZW5kZWQsIGFuZCBub3RpZmllcworICAgICAgICBXZWJQcm9jZXNzUG9vbHMg
d2hlbiBpdHMgcnVubmluZyB0aW1lIGlzIGxlc3MgdGhhbiAxNXMuIE9uIHJlY2VpdmluZyB0aGUg
bm90aWZpY2F0aW9uLCBhbGwgd2ViIHByb2Nlc3NlcyBzaG91bGQKKyAgICAgICAgaW52YWxpZGF0
ZSBiYWNrZ3JvdW5kIGFjdGl2aXRpZXMsIGRyb3AgYmFja2dyb3VuZCBhc3NlcnRpb24sIGFuZCBz
ZW5kIG91dCBQcmVwYXJlVG9TdXNwZW5kIG1lc3NhZ2VzLiBUaGV5IGFyZSAKKyAgICAgICAgbm90
IGFsbG93ZWQgdG8gdGFrZSBuZXcgYmFja2dyb3VuZCBhc3NlcnRpb24gdW50aWwgUHJvY2Vzc1N0
YXRlTW9uaXRvciBmaW5kcyBwcm9jZXNzIGJlY29tZXMgcnVubmluZyB3aXRob3V0IAorICAgICAg
ICB0aW1lb3V0IChlLmcuIGFwcGxpY2F0aW9uIGJlY29tZXMgZm9yZWdyb3VuZGVkIG9yIGFjcXVp
cmVzIHNwZWNpYWwgYXNzZXJ0aW9uKS4KKworICAgICAgICBUbyBhdm9pZCBnZXR0aW5nIHVubmVj
ZXNzYXJ5IHVwZGF0ZXMgZnJvbSBydW5uaW5nYm9hcmRkLCBQcm9jZXNzU3RhdGVNb25pdG9yIHN0
YXJ0cyB3b3JraW5nIHdoZW4gcHJvY2VzcyBlbnRlcnMgCisgICAgICAgIGJhY2tncm91bmQsIGFu
ZCBzdG9wcyB3b3JraW5nIHdoZW4gcHJvY2VzcyBlbnRlcnMgZm9yZWdyb3VuZC4KKworICAgICAg
ICAqIFBsYXRmb3JtL3NwaS9pb3MvUnVubmluZ0JvYXJkU2VydmljZXNTUEkuaDoKKyAgICAgICAg
KCtbUkJTUHJvY2Vzc1ByZWRpY2F0ZSBwcmVkaWNhdGVNYXRjaGluZ0hhbmRsZTpdKToKKyAgICAg
ICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9j
ZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0UHJv
Y2Vzc2VzU2hvdWxkU3VzcGVuZCk6CisgICAgICAgICogVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRs
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjphZGRBY3Rpdml0eSk6
CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NUaHJvdHRsZXI6OnNldEFsbG93QWN0aXZpdHkpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmg6CisgICAgICAgIChXZWJLaXQ6
OlByb2Nlc3NUaHJvdHRsZXI6OkFjdGl2aXR5OjpBY3Rpdml0eSk6CisgICAgICAgIChXZWJLaXQ6
OlByb2Nlc3NUaHJvdHRsZXI6OkFjdGl2aXR5OjpuYW1lIGNvbnN0KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1Byb2Nlc3NB
c3NlcnRpb25JT1MubW06CisgICAgICAgICgtW1dLUHJvY2Vzc0Fzc2VydGlvbkJhY2tncm91bmRU
YXNrTWFuYWdlciBpbml0XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9Qcm9jZXNzU3RhdGVN
b25pdG9yLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUHJvY2Vzc1N0YXRlTW9u
aXRvci5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NTdGF0ZU1vbml0b3I6OlBy
b2Nlc3NTdGF0ZU1vbml0b3IpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzU3RhdGVNb25pdG9y
Ojp+UHJvY2Vzc1N0YXRlTW9uaXRvcik6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NTdGF0ZU1v
bml0b3I6OnByb2Nlc3NEaWRCZWNvbWVSdW5uaW5nKToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vz
c1N0YXRlTW9uaXRvcjo6cHJvY2Vzc1dpbGxCZVN1c3BlbmRlZCk6CisgICAgICAgIChXZWJLaXQ6
OlByb2Nlc3NTdGF0ZU1vbml0b3I6OnN1c3BlbmRUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktp
dDo6UHJvY2Vzc1N0YXRlTW9uaXRvcjo6Y2hlY2tSZW1haW5pbmdSdW5UaW1lKToKKyAgICAgICAg
KiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMi0wNS0xNCAgS2ltbW8g
S2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYkNvcmU6OklPU3Vy
ZmFjZSByZWZlcnMgdG8gdW51c2VkIGNvbnRleHQgc2l6ZQpAQCAtNDU0LDYgKzUwMSw1NCBAQAog
ICAgICAgICAqIFdlYlByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzR0xpYi5jcHA6CiAgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgogCisyMDIy
LTA1LTEzICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1vbml0
b3IgcHJvY2VzcyBzdGF0ZSBhbmQgc2VuZCBwcmVwYXJlVG9TdXNwZW5kIGJhc2VkIG9uIHRoYXQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MDM1OQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnRs
eSBVSSBwcm9jZXNzIHNlbmRzIFByZXBhcmVUb1N1c3BlbmQgd2hlbiBhIHByb2Nlc3MgaGFzIG5v
IGFjdGl2aXR5IHRoYXQgbmVlZHMgYW4gYXNzZXJ0aW9uLCBvciB3aGVuCisgICAgICAgIGFzc2Vy
dGlvbiB3aWxsIGJlIGludmFsaWRhdGVkIGR1ZSB0byB0aW1lb3V0ICh3aGVuIGFzc2VydGlvbldp
bGxJbnZhbGlkYXRlIGlzIGNhbGxlZCkuIE9uIHJlY2VpdmluZyB0aGUgbWVzc2FnZSwgCisgICAg
ICAgIHRoZSBwcm9jZXNzIHdpbGwgcGVyZm9ybSBuZWNlc3NhcnkgYWN0aW9ucywgc3VjaCBhcyBz
dXNwZW5kaW5nIHN0b3JhZ2UgdGhyZWFkcyBmb3IgbmV0d29yayBwcm9jZXNzLCB0byBiZSByZWFk
eSAKKyAgICAgICAgZm9yIHN1c3BlbnNpb24uIEFjY29yZGluZyB0byBjcmFzaGVzIGluIHJkYXI6
Ly9wcm9ibGVtLzkyMjI4MTkwLCB0aGUgbWVzc2FnZSBpcyBub3QgcmVjZWl2ZWQgYnkgcHJvY2Vz
cyBiZWZvcmUKKyAgICAgICAgc3VzcGVuc2lvbiwgb3IgcHJvY2VzcyBnZXRzIHN1c3BlbmRlZCB3
aGlsZSBwcm9jZXNzaW5nIHRoZSBtZXNzYWdlLiBXZSBuZWVkIHRvIGVuc3VyZSB0aGUgbWVzc2Fn
ZSBnZXRzIHByb2Nlc3NlZAorICAgICAgICBiZWZvcmUgcHJvY2VzcyBzdXNwZW5zaW9uIHRvIGZp
eCB0aGUgY3Jhc2hlcy4KKworICAgICAgICBUbyBhY2hpZXZlIHRoYXQsIHdlIGludHJvZHVjZSBQ
cm9jZXNzU3RhdGVNb25pdG9yIHRvIHRyYWNrIHdoZW4gVUkgcHJvY2VzcyB3aWxsIGJlIHN1c3Bl
bmRlZCwgYW5kIG5vdGlmaWVzCisgICAgICAgIFdlYlByb2Nlc3NQb29scyB3aGVuIGl0cyBydW5u
aW5nIHRpbWUgaXMgbGVzcyB0aGFuIDE1cy4gT24gcmVjZWl2aW5nIHRoZSBub3RpZmljYXRpb24s
IGFsbCB3ZWIgcHJvY2Vzc2VzIHNob3VsZAorICAgICAgICBpbnZhbGlkYXRlIGJhY2tncm91bmQg
YWN0aXZpdGllcywgZHJvcCBiYWNrZ3JvdW5kIGFzc2VydGlvbiwgYW5kIHNlbmQgb3V0IFByZXBh
cmVUb1N1c3BlbmQgbWVzc2FnZXMuIFRoZXkgYXJlIAorICAgICAgICBub3QgYWxsb3dlZCB0byB0
YWtlIG5ldyBiYWNrZ3JvdW5kIGFzc2VydGlvbiB1bnRpbCBQcm9jZXNzU3RhdGVNb25pdG9yIGZp
bmRzIHByb2Nlc3MgYmVjb21lcyBydW5uaW5nIHdpdGhvdXQgCisgICAgICAgIHRpbWVvdXQgKGUu
Zy4gYXBwbGljYXRpb24gYmVjb21lcyBmb3JlZ3JvdW5kZWQgb3IgYWNxdWlyZXMgc3BlY2lhbCBh
c3NlcnRpb24pLgorCisgICAgICAgIFRvIGF2b2lkIGdldHRpbmcgdW5uZWNlc3NhcnkgdXBkYXRl
cyBmcm9tIHJ1bm5pbmdib2FyZGQsIFByb2Nlc3NTdGF0ZU1vbml0b3Igc3RhcnRzIHdvcmtpbmcg
d2hlbiBwcm9jZXNzIGVudGVycyAKKyAgICAgICAgYmFja2dyb3VuZCwgYW5kIHN0b3BzIHdvcmtp
bmcgd2hlbiBwcm9jZXNzIGVudGVycyBmb3JlZ3JvdW5kLgorCisgICAgICAgICogUGxhdGZvcm0v
c3BpL2lvcy9SdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oOgorICAgICAgICAoK1tSQlNQcm9jZXNz
UHJlZGljYXRlIHByZWRpY2F0ZU1hdGNoaW5nSGFuZGxlOl0pOgorICAgICAgICAqIFNvdXJjZXND
b2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2Eu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRQcm9jZXNzZXNTaG91bGRT
dXNwZW5kKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlByb2Nlc3NUaHJvdHRsZXI6OmFkZEFjdGl2aXR5KToKKyAgICAgICAgKFdl
YktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6c2V0QWxsb3dCYWNrZ3JvdW5kQWN0aXZpdHkpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmg6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6c2V0U2hvdWxkU3VzcGVuZCk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvUHJvY2Vzc0Fzc2VydGlvbklPUy5tbToKKyAgICAgICAgKC1bV0tQcm9jZXNzQXNz
ZXJ0aW9uQmFja2dyb3VuZFRhc2tNYW5hZ2VyIGluaXRdKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1Byb2Nlc3NTdGF0ZU1vbml0b3IuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9Qcm9jZXNzU3RhdGVNb25pdG9yLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UHJvY2Vz
c1N0YXRlTW9uaXRvcjo6UHJvY2Vzc1N0YXRlTW9uaXRvcik6CisgICAgICAgIChXZWJLaXQ6OlBy
b2Nlc3NTdGF0ZU1vbml0b3I6On5Qcm9jZXNzU3RhdGVNb25pdG9yKToKKyAgICAgICAgKFdlYktp
dDo6UHJvY2Vzc1N0YXRlTW9uaXRvcjo6cHJvY2Vzc0RpZEJlY29tZVJ1bm5pbmcpOgorICAgICAg
ICAoV2ViS2l0OjpQcm9jZXNzU3RhdGVNb25pdG9yOjpwcm9jZXNzV2lsbEJlU3VzcGVuZGVkKToK
KyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1N0YXRlTW9uaXRvcjo6c3VzcGVuZFRpbWVyRmlyZWQp
OgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzU3RhdGVNb25pdG9yOjpjaGVja1JlbWFpbmluZ1J1
blRpbWUpOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAy
MDIyLTA1LTEyICBZb3VzdWtlIEtpbW90byAgPHlvdXN1a2Uua2ltb3RvQHNvbnkuY29tPgogCiAg
ICAgICAgIFtXaW5DYWlyb10gRml4IGEgY29tcGlsZSBlcnJvciBkdWUgdG8gSW5zcGVjdG9yUmVz
b3VyY2VVUkxTY2hlbWVIYW5kbGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L3NwaS9pb3MvUnVubmluZ0JvYXJkU2VydmljZXNTUEkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vc3BpL2lvcy9SdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oCmluZGV4IDQyNTEzMmZlOTBjZmJl
YzM3NmYzNjkyMTVmMDQzMmNmMmJhOTg4NGQuLmMzMDA3OWY0MDI1NDA4N2M2YTgzNjgwOTE1MjNj
ODk0ODE2NmI1ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9S
dW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3Bp
L2lvcy9SdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oCkBAIC0xMzEsMTQgKzEzMSwyNCBAQCB0eXBl
ZGVmIHZvaWQgKF5SQlNQcm9jZXNzVXBkYXRlSGFuZGxlcikoUkJTUHJvY2Vzc01vbml0b3IgKm1v
bml0b3IsIFJCU1Byb2Nlc3NIYQogCiBAaW50ZXJmYWNlIFJCU1Byb2Nlc3NNb25pdG9yIDogTlNP
YmplY3QgPE5TQ29weWluZz4KICsgKGluc3RhbmNldHlwZSltb25pdG9yV2l0aENvbmZpZ3VyYXRp
b246KE5TX05PRVNDQVBFIFJCU1Byb2Nlc3NNb25pdG9yQ29uZmlndXJhdG9yKWJsb2NrOworLSAo
dm9pZClpbnZhbGlkYXRlOwogQGVuZAogCiBAaW50ZXJmYWNlIFJCU1Byb2Nlc3NQcmVkaWNhdGUg
OiBOU09iamVjdCA8UkJTUHJvY2Vzc01hdGNoaW5nPgogKyAoUkJTUHJvY2Vzc1ByZWRpY2F0ZSAq
KXByZWRpY2F0ZU1hdGNoaW5nSGFuZGxlOihSQlNQcm9jZXNzSGFuZGxlICopcHJvY2VzczsKK3R5
cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBSQlNQcm9jZXNzU3RhdGVWYWx1ZXMpIHsKKyAg
ICBSQlNQcm9jZXNzU3RhdGVWYWx1ZU5vbmUgICAgICAgICAgICAgICAgICAgID0gMCwKKyAgICBS
QlNQcm9jZXNzU3RhdGVWYWx1ZVRhc2tTdGF0ZSAgICAgICAgICAgICAgID0gKDEgPDwgMCksCisg
ICAgUkJTUHJvY2Vzc1N0YXRlVmFsdWVUYWdzICAgICAgICAgICAgICAgICAgICA9ICgxIDw8IDEp
LAorICAgIFJCU1Byb2Nlc3NTdGF0ZVZhbHVlVGVybWluYXRpb25SZXNpc3RhbmNlICAgPSAoMSA8
PCAyKSwKKyAgICBSQlNQcm9jZXNzU3RhdGVWYWx1ZUxlZ2FjeUFzc2VydGlvbnMgICAgICAgID0g
KDEgPDwgMyksCisgICAgUkJTUHJvY2Vzc1N0YXRlVmFsdWVNb2Rlcm5Bc3NlcnRpb25zICAgICAg
ICA9ICgxIDw8IDQpLAorfTsKIEBlbmQKIAogQGludGVyZmFjZSBSQlNQcm9jZXNzU3RhdGVEZXNj
cmlwdG9yIDogTlNPYmplY3QgPE5TQ29weWluZz4KICsgKGluc3RhbmNldHlwZSlkZXNjcmlwdG9y
OworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWR3cml0ZSwgYXNzaWduKSBSQlNQcm9jZXNzU3Rh
dGVWYWx1ZXMgdmFsdWVzOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWR3cml0ZSwgY29weSwg
bnVsbGFibGUpIE5TQXJyYXk8TlNTdHJpbmcgKj4gKmVuZG93bWVudE5hbWVzcGFjZXM7CiBAZW5k
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9X
ZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCA2N2ExZDk4OWFhZDRhMDYxNWMzYTdhN2UyYTM5
YTMwM2U3OTJjYmE3Li5mYTQ0ZGIzNGNkNmU2MzhkMmQ0YTBkZjNjYzYxOWVlZTdkMDI3N2EwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dl
YktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC00OTEsNiArNDkxLDcgQEAgVUlQcm9jZXNzL2lvcy9H
ZXN0dXJlUmVjb2duaXplckNvbnNpc3RlbmN5RW5mb3JjZXIubW0KIFVJUHJvY2Vzcy9pb3MvSW5w
dXRWaWV3VXBkYXRlRGVmZXJyZXIubW0KIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1Mu
bW0KIFVJUHJvY2Vzcy9pb3MvUHJvY2Vzc0Fzc2VydGlvbklPUy5tbQorVUlQcm9jZXNzL2lvcy9Q
cm9jZXNzU3RhdGVNb25pdG9yLm1tCiBVSVByb2Nlc3MvaW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNv
bnRyb2xsZXIubW0KIFVJUHJvY2Vzcy9pb3MvVGV4dENoZWNrZXJJT1MubW0KIFVJUHJvY2Vzcy9p
b3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQppbmRleCAxNzYzNDllYjY3MDhl
MmI3ZmJkNzU1YjkzODE2OTVkOTAyNWIzOGIzLi44NTI0YzhmYTEyNzIxNmJhYjM4ZmE2NDIyMjcw
ZGFiZTlhOGRjZTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQcm9jZXNzUG9vbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlByb2Nlc3NQb29sQ29jb2EubW0KQEAgLTM4LDYgKzM4LDcgQEAKICNpbXBvcnQgIk5ldHdv
cmtQcm9jZXNzTWVzc2FnZXMuaCIKICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKICNp
bXBvcnQgIlByZWZlcmVuY2VPYnNlcnZlci5oIgorI2ltcG9ydCAiUHJvY2Vzc1Rocm90dGxlci5o
IgogI2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGV4dENoZWNrZXIuaCIK
ICNpbXBvcnQgIlVzZXJJbnRlcmZhY2VJZGlvbS5oIgpAQCAtMTA2NSw2ICsxMDY2LDE1IEBAIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6Om5vdGlmeVByb2Nlc3NQb29sc0FwcGxpY2F0aW9uSXNBYm91dFRv
U3VzcGVuZCgpCiAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IGFsbFByb2Nlc3NQb29scygp
KQogICAgICAgICBwcm9jZXNzUG9vbC0+YXBwbGljYXRpb25Jc0Fib3V0VG9TdXNwZW5kKCk7CiB9
CisKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldFByb2Nlc3Nlc1Nob3VsZFN1c3BlbmQoYm9vbCBz
aG91bGRTdXNwZW5kKQoreworICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9HKFByb2Nlc3NT
dXNwZW5zaW9uLCAic2V0UHJvY2Vzc2VzU2hvdWxkU3VzcGVuZDogUHJvY2Vzc2VzIHNob3VsZCBz
dXNwZW5kICVkIiwgc2hvdWxkU3VzcGVuZCk7CisKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBt
X3Byb2Nlc3NlcykKKyAgICAgICAgcHJvY2Vzcy0+dGhyb3R0bGVyKCkuc2V0QWxsb3dBY3Rpdml0
eSghc2hvdWxkU3VzcGVuZCk7Cit9CisKICNlbmRpZgogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpp
bml0aWFsaXplQ2xhc3Nlc0ZvclBhcmFtZXRlckNvZGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuY3BwCmluZGV4IDQ3MTJmMmVjZmJhMmM1YTk5ZTJkNmJh
ZDRmMWUwNWM1N2RkZTg2YTUuLjI1NGY3Mjk2MzRhOTAzYTI0OTkxMDFlOWEwMDM5ZGMyZGM0ZDlm
MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuY3BwCkBA
IC01MiwxNiArNTIsMjggQEAgUHJvY2Vzc1Rocm90dGxlcjo6flByb2Nlc3NUaHJvdHRsZXIoKQog
ICAgIGludmFsaWRhdGVBbGxBY3Rpdml0aWVzKCk7CiB9CiAKLXZvaWQgUHJvY2Vzc1Rocm90dGxl
cjo6YWRkQWN0aXZpdHkoRm9yZWdyb3VuZEFjdGl2aXR5JiBhY3Rpdml0eSkKK2Jvb2wgUHJvY2Vz
c1Rocm90dGxlcjo6YWRkQWN0aXZpdHkoRm9yZWdyb3VuZEFjdGl2aXR5JiBhY3Rpdml0eSkKIHsK
KyAgICBpZiAoIW1fYWxsb3dBY3Rpdml0eSkgeworICAgICAgICBQUk9DRVNTVEhST1RUTEVSX1JF
TEVBU0VfTE9HKCJhZGRBY3Rpdml0eTogbm90IGFsbG93ZWQgdG8gYWRkIGZvcmVncm91bmQgYWN0
aXZpdHkgJXMiLCBhY3Rpdml0eS5uYW1lKCkuY2hhcmFjdGVycygpKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKwogICAgIG1fZm9yZWdyb3VuZEFjdGl2aXRpZXMuYWRkKCZhY3Rpdml0
eSk7CiAgICAgdXBkYXRlQXNzZXJ0aW9uSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotdm9pZCBQcm9jZXNzVGhyb3R0bGVyOjphZGRBY3Rpdml0eShCYWNrZ3JvdW5kQWN0aXZpdHkm
IGFjdGl2aXR5KQorYm9vbCBQcm9jZXNzVGhyb3R0bGVyOjphZGRBY3Rpdml0eShCYWNrZ3JvdW5k
QWN0aXZpdHkmIGFjdGl2aXR5KQogeworICAgIGlmICghbV9hbGxvd0FjdGl2aXR5KSB7CisgICAg
ICAgIFBST0NFU1NUSFJPVFRMRVJfUkVMRUFTRV9MT0coImFkZEFjdGl2aXR5OiBub3QgYWxsb3dl
ZCB0byBhZGQgYmFja2dyb3VuZCBhY3Rpdml0eSAlcyIsIGFjdGl2aXR5Lm5hbWUoKS5jaGFyYWN0
ZXJzKCkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAgbV9iYWNrZ3JvdW5k
QWN0aXZpdGllcy5hZGQoJmFjdGl2aXR5KTsKICAgICB1cGRhdGVBc3NlcnRpb25JZk5lZWRlZCgp
OworICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIFByb2Nlc3NUaHJvdHRsZXI6OnJlbW92ZUFj
dGl2aXR5KEZvcmVncm91bmRBY3Rpdml0eSYgYWN0aXZpdHkpCkBAIC0yNTcsNiArMjY5LDE4IEBA
IGJvb2wgUHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxpZEZvcmVncm91bmRBY3Rpdml0eShjb25zdCBQ
cm9jZXNzVGhyb3R0bGVyOjpBY3Rpdml0CiAgICAgcmV0dXJuIHN0ZDo6Z2V0PFVuaXF1ZVJlZjxQ
cm9jZXNzVGhyb3R0bGVyOjpGb3JlZ3JvdW5kQWN0aXZpdHk+PihhY3Rpdml0eSktPmlzVmFsaWQo
KTsKIH0KIAordm9pZCBQcm9jZXNzVGhyb3R0bGVyOjpzZXRBbGxvd0FjdGl2aXR5KGJvb2wgYWxs
b3cpCit7CisgICAgaWYgKG1fYWxsb3dBY3Rpdml0eSA9PSBhbGxvdykKKyAgICAgICAgcmV0dXJu
OworCisgICAgUFJPQ0VTU1RIUk9UVExFUl9SRUxFQVNFX0xPRygic2V0QWxsb3dBY3Rpdml0eSAl
ZCIsIGFsbG93KTsKKyAgICBpZiAoIWFsbG93KQorICAgICAgICBpbnZhbGlkYXRlQWxsQWN0aXZp
dGllcygpOworCisgICAgbV9hbGxvd0FjdGl2aXR5ID0gYWxsb3c7Cit9CisKIFByb2Nlc3NUaHJv
dHRsZXI6OlRpbWVkQWN0aXZpdHk6OlRpbWVkQWN0aXZpdHkoU2Vjb25kcyB0aW1lb3V0LCBQcm9j
ZXNzVGhyb3R0bGVyOjpBY3Rpdml0eVZhcmlhbnQmJiBhY3Rpdml0eSkKICAgICA6IG1fdGltZXIo
UnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmVGltZWRBY3Rpdml0eTo6YWN0aXZpdHlUaW1lZE91dCkK
ICAgICAsIG1fdGltZW91dCh0aW1lb3V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vz
c1Rocm90dGxlci5oCmluZGV4IDU0ZGQ3NjU4ZjFkZmQwY2VmZTk0NjFjODgyOWMwNTE2YzJmMDY5
MDYuLjIzNDNlZDI4MmZiMzFhNTYyODE2ZTQ4ODM4MTZlNGJmYjM4MTYzOWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmgKQEAgLTY0LDcgKzY0LDExIEBAIHB1
YmxpYzoKICAgICAgICAgICAgIDogbV90aHJvdHRsZXIoJnRocm90dGxlcikKICAgICAgICAgICAg
ICwgbV9uYW1lKG5hbWUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHRocm90dGxlci5hZGRBY3Rp
dml0eSgqdGhpcyk7CisgICAgICAgICAgICBpZiAoIXRocm90dGxlci5hZGRBY3Rpdml0eSgqdGhp
cykpIHsKKyAgICAgICAgICAgICAgICBtX3Rocm90dGxlciA9IG51bGxwdHI7CisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBpZiAoIWlzUXVpZXRB
Y3Rpdml0eSgpKSB7CiAgICAgICAgICAgICAgICAgUFJPQ0VTU1RIUk9UVExFUl9BQ1RJVklUWV9S
RUxFQVNFX0xPRygiQWN0aXZpdHk6IFN0YXJ0aW5nICUiIFBVQkxJQ19MT0dfU1RSSU5HICIgYWN0
aXZpdHkgLyAnJSIgUFVCTElDX0xPR19TVFJJTkcgIiciLAogICAgICAgICAgICAgICAgICAgICB0
eXBlID09IEFjdGl2aXR5VHlwZTo6Rm9yZWdyb3VuZCA/ICJmb3JlZ3JvdW5kIiA6ICJiYWNrZ3Jv
dW5kIiwgbV9uYW1lLmNoYXJhY3RlcnMoKSk7CkBAIC03OCw2ICs4Miw3IEBAIHB1YmxpYzoKICAg
ICAgICAgfQogCiAgICAgICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuICEhbV90aHJv
dHRsZXI7IH0KKyAgICAgICAgQVNDSUlMaXRlcmFsIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25h
bWU7IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBQcm9jZXNzVGhyb3R0
bGVyOwpAQCAtMTI1LDYgKzEzMCw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGRpZENvbm5l
Y3RUb1Byb2Nlc3MoUHJvY2Vzc0lEKTsKICAgICBib29sIHNob3VsZEJlUnVubmFibGUoKSBjb25z
dCB7IHJldHVybiBtX2ZvcmVncm91bmRBY3Rpdml0aWVzLnNpemUoKSB8fCBtX2JhY2tncm91bmRB
Y3Rpdml0aWVzLnNpemUoKTsgfQorICAgIHZvaWQgc2V0QWxsb3dBY3Rpdml0eShib29sKTsKIAog
cHJpdmF0ZToKICAgICBQcm9jZXNzQXNzZXJ0aW9uVHlwZSBleHBlY3RlZEFzc2VydGlvblR5cGUo
KTsKQEAgLTEzNSw4ICsxNDEsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VuZFByZXBhcmVUb1N1
c3BlbmRJUEMoSXNTdXNwZW5zaW9uSW1taW5lbnQpOwogICAgIHZvaWQgcHJvY2Vzc1JlYWR5VG9T
dXNwZW5kKCk7CiAKLSAgICB2b2lkIGFkZEFjdGl2aXR5KEZvcmVncm91bmRBY3Rpdml0eSYpOwot
ICAgIHZvaWQgYWRkQWN0aXZpdHkoQmFja2dyb3VuZEFjdGl2aXR5Jik7CisgICAgYm9vbCBhZGRB
Y3Rpdml0eShGb3JlZ3JvdW5kQWN0aXZpdHkmKTsKKyAgICBib29sIGFkZEFjdGl2aXR5KEJhY2tn
cm91bmRBY3Rpdml0eSYpOwogICAgIHZvaWQgcmVtb3ZlQWN0aXZpdHkoRm9yZWdyb3VuZEFjdGl2
aXR5Jik7CiAgICAgdm9pZCByZW1vdmVBY3Rpdml0eShCYWNrZ3JvdW5kQWN0aXZpdHkmKTsKICAg
ICB2b2lkIGludmFsaWRhdGVBbGxBY3Rpdml0aWVzKCk7CkBAIC0xNTUsNiArMTYxLDcgQEAgcHJp
dmF0ZToKICAgICBIYXNoU2V0PEJhY2tncm91bmRBY3Rpdml0eSo+IG1fYmFja2dyb3VuZEFjdGl2
aXRpZXM7CiAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbV9wZW5kaW5nUmVxdWVzdFRvU3Vz
cGVuZElEOwogICAgIGJvb2wgbV9zaG91bGRUYWtlVUlCYWNrZ3JvdW5kQXNzZXJ0aW9uOworICAg
IGJvb2wgbV9hbGxvd0FjdGl2aXR5IHsgdHJ1ZSB9OwogfTsKIAogaW5saW5lIGF1dG8gUHJvY2Vz
c1Rocm90dGxlcjo6Zm9yZWdyb3VuZEFjdGl2aXR5KEFTQ0lJTGl0ZXJhbCBuYW1lKSAtPiBVbmlx
dWVSZWY8Rm9yZWdyb3VuZEFjdGl2aXR5PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmgKaW5kZXggZDRkYTNkYTg0NDNmNmQxM2VjMmUzMGFiMjQ4YmE4YmExM2JhN2YwMC4u
OTFkZjM2OTkwNDQxMTRlZDhhMjhlYmRmMzYyZTRmNjVlNTlkMjg5MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0yMzYsNiArMjM2LDcgQEAgcHVibGljOgog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBhcHBsaWNhdGlvbklzQWJvdXRUb1N1
c3BlbmQoKTsKICAgICBzdGF0aWMgdm9pZCBub3RpZnlQcm9jZXNzUG9vbHNBcHBsaWNhdGlvbklz
QWJvdXRUb1N1c3BlbmQoKTsKKyAgICB2b2lkIHNldFByb2Nlc3Nlc1Nob3VsZFN1c3BlbmQoYm9v
bCk7CiAjZW5kaWYKIAogICAgIHZvaWQgaGFuZGxlTWVtb3J5UHJlc3N1cmVXYXJuaW5nKENyaXRp
Y2FsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9Qcm9jZXNzQXNz
ZXJ0aW9uSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Byb2Nlc3NBc3NlcnRp
b25JT1MubW0KaW5kZXggZmQ4Nzg5Yjg2OGQyMTE0YjZiNzAzOWE2MzBmN2YxZGJmODBkMTViOS4u
Y2QyZWY5NTk2Y2VjZWY3NmVmNjY1OTc1MDQ1Nzg3ZDE5N2VkNDg4NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Byb2Nlc3NBc3NlcnRpb25JT1MubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Byb2Nlc3NBc3NlcnRpb25JT1MubW0KQEAgLTI5LDYg
KzI5LDcgQEAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJMb2dnaW5nLmgi
CisjaW1wb3J0ICJQcm9jZXNzU3RhdGVNb25pdG9yLmgiCiAjaW1wb3J0ICJSdW5uaW5nQm9hcmRT
ZXJ2aWNlc1NQSS5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbXBvcnQgPFVJS2l0
L1VJQXBwbGljYXRpb24uaD4KQEAgLTczLDYgKzc0LDcgQEAgc3RhdGljIGJvb2wgcHJvY2Vzc0hh
c0FjdGl2ZVJ1blRpbWVMaW1pdGF0aW9uKCkKICAgICBzdGQ6OmF0b21pYzxib29sPiBfYmFja2dy
b3VuZFRhc2tXYXNJbnZhbGlkYXRlZDsKICAgICBXZWFrSGFzaFNldDxQcm9jZXNzQW5kVUlBc3Nl
cnRpb24+IF9hc3NlcnRpb25zTmVlZGluZ0JhY2tncm91bmRUYXNrOwogICAgIGRpc3BhdGNoX2Js
b2NrX3QgX3BlbmRpbmdUYXNrUmVsZWFzZVRhc2s7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktp
dDo6UHJvY2Vzc1N0YXRlTW9uaXRvcj4gbV9wcm9jZXNzU3RhdGVNb25pdG9yOwogfQogCiArIChX
S1Byb2Nlc3NBc3NlcnRpb25CYWNrZ3JvdW5kVGFza01hbmFnZXIgKilzaGFyZWQKQEAgLTkyLDEx
ICs5NCwyMCBAQCBzdGF0aWMgYm9vbCBwcm9jZXNzSGFzQWN0aXZlUnVuVGltZUxpbWl0YXRpb24o
KQogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXJG
b3JOYW1lOlVJQXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kTm90aWZpY2F0aW9uIG9iamVj
dDpbVUlBcHBsaWNhdGlvbiBzaGFyZWRBcHBsaWNhdGlvbl0gcXVldWU6bmlsIHVzaW5nQmxvY2s6
XihOU05vdGlmaWNhdGlvbiAqKSB7CiAgICAgICAgIFtzZWxmIF9jYW5jZWxQZW5kaW5nUmVsZWFz
ZVRhc2tdOwogICAgICAgICBbc2VsZiBfdXBkYXRlQmFja2dyb3VuZFRhc2tdOworCisgICAgICAg
IG1fcHJvY2Vzc1N0YXRlTW9uaXRvciA9IG51bGxwdHI7CiAgICAgfV07CiAKICAgICBbW05TTm90
aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyRm9yTmFtZTpVSUFwcGxp
Y2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kTm90aWZpY2F0aW9uIG9iamVjdDpbVUlBcHBsaWNhdGlv
biBzaGFyZWRBcHBsaWNhdGlvbl0gcXVldWU6bmlsIHVzaW5nQmxvY2s6XihOU05vdGlmaWNhdGlv
biAqKSB7CiAgICAgICAgIGlmICghW3NlbGYgX2hhc0JhY2tncm91bmRUYXNrXSkKICAgICAgICAg
ICAgIFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6Om5vdGlmeVByb2Nlc3NQb29sc0FwcGxpY2F0aW9u
SXNBYm91dFRvU3VzcGVuZCgpOworICAgICAgICAKKyAgICAgICAgaWYgKCFtX3Byb2Nlc3NTdGF0
ZU1vbml0b3IpIHsKKyAgICAgICAgICAgIG1fcHJvY2Vzc1N0YXRlTW9uaXRvciA9IG1ha2VVbmlx
dWU8V2ViS2l0OjpQcm9jZXNzU3RhdGVNb25pdG9yPihbXShib29sIHN1c3BlbmRlZCkgeworICAg
ICAgICAgICAgICAgIGZvciAoYXV0byBwcm9jZXNzUG9vbCA6IFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OmFsbFByb2Nlc3NQb29scygpKQorICAgICAgICAgICAgICAgICAgICBwcm9jZXNzUG9vbC0+
c2V0UHJvY2Vzc2VzU2hvdWxkU3VzcGVuZChzdXNwZW5kZWQpOworICAgICAgICAgICAgfSk7Cisg
ICAgICAgIH0KICAgICB9XTsKIAogICAgIHJldHVybiBzZWxmOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzQxYjE0NjU1NTVhYzNlMmZl
NjU4MTdkZGM3MDY2ODFhNzIxMjI2Mi4uYTkyYWUxMWM1OWQyMGM0YWE2M2E5NjQ0ZDU0ZTI2YzQ4
NGJlOWUwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xNTExLDYgKzE1MTEsNyBAQAogCQk5M0Q2QjdCNDI1NTI2OEQ1MDA1OEREM0Eg
LyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENkI3QUYyNTUyNjhBMTAwNThERDNBIC8q
IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaCAqLzsgfTsKIAkJOTNENkI3QjUy
NTUyNjhENzAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCN0IyMjU1
MjY4QTIwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmggKi87
IH07CiAJCTkzRDZCN0I5MjU1MzRBMTcwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5M0Q2QjdCNzI1NTM0QTExMDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25DYWxsYmFjay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTkzRTA1RTQwMjgyQ0Q1NjAwMDBCNjlFQiAvKiBQcm9jZXNzU3RhdGVNb25p
dG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Uw
NUUzRTI4MkNENTVEMDAwQjY5RUIgLyogUHJvY2Vzc1N0YXRlTW9uaXRvci5oICovOyB9OwogCQk5
M0U2QTRFRTFCQzVERDM5MDBGOEEwRTcgLyogX1dLSGl0VGVzdFJlc3VsdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNFNkE0RUQxQkM1REQzOTAwRjhB
MEU3IC8qIF9XS0hpdFRlc3RSZXN1bHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk5M0U3OTk4NTI3NTZGQTU1MDA3NDAwOEEgLyogV2ViRmlsZVN5
c3RlbVN0b3JhZ2VDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRTc5OTgyMjc1NkZBNTQwMDc0MDA4QSAv
KiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9
OwogCQk5M0U3OTk4NzI3NTZGQUI0MDA3NDAwOEEgLyogV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25u
ZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5M0U3OTk4MzI3NTZGQTU0MDA3NDAwOEEgLyogV2ViRmlsZVN5c3RlbVN0
b3JhZ2VDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmggKi87IH07CkBAIC01ODMxLDYgKzU4MzIs
OCBAQAogCQk5M0Q2QjdCMjI1NTI2OEEyMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTkzRDZCN0I3MjU1MzRBMTEwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbkNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTNENkI3QjgyNTUzNEExMjAwNThERDNBIC8qIFdLU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uQ2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTkzRTA1RTNFMjgyQ0Q1NUQwMDBCNjlFQiAvKiBQcm9jZXNzU3RhdGVN
b25pdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFByb2Nlc3NTdGF0ZU1v
bml0b3IuaDsgcGF0aCA9IGlvcy9Qcm9jZXNzU3RhdGVNb25pdG9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTkzRTA1RTNGMjgyQ0Q1NUYwMDBCNjlFQiAvKiBQcm9jZXNzU3RhdGVN
b25pdG9yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gUHJvY2Vz
c1N0YXRlTW9uaXRvci5tbTsgcGF0aCA9IGlvcy9Qcm9jZXNzU3RhdGVNb25pdG9yLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0U2QTRFRDFCQzVERDM5MDBGOEEwRTcgLyogX1dL
SGl0VGVzdFJlc3VsdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tIaXRU
ZXN0UmVzdWx0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRTc5OTdFMjc1NkY2
NzAwMDc0MDA4QSAvKiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLm1l
c3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0U3OTk4MTI3NTZGQTUz
MDA3NDAwOEEgLyogV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uTWVzc2FnZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0
aW9uTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkyNTksNiArOTI2
Miw4IEBACiAJCQkJMEZDQjRFMzYxOEJCRTA0NDAwMEZDRkM5IC8qIFBhZ2VDbGllbnRJbXBsSU9T
LmggKi8sCiAJCQkJMEZDQjRFMzcxOEJCRTA0NDAwMEZDRkM5IC8qIFBhZ2VDbGllbnRJbXBsSU9T
Lm1tICovLAogCQkJCTg2Rjk1MzYyMThGRjU1MEIwMDFEQjJFRiAvKiBQcm9jZXNzQXNzZXJ0aW9u
SU9TLm1tICovLAorCQkJCTkzRTA1RTNFMjgyQ0Q1NUQwMDBCNjlFQiAvKiBQcm9jZXNzU3RhdGVN
b25pdG9yLmggKi8sCisJCQkJOTNFMDVFM0YyODJDRDU1RjAwMEI2OUVCIC8qIFByb2Nlc3NTdGF0
ZU1vbml0b3IubW0gKi8sCiAJCQkJMkRBRjA2RDQxOEJEMUE0NzAwODFDRUIxIC8qIFNtYXJ0TWFn
bmlmaWNhdGlvbkNvbnRyb2xsZXIuaCAqLywKIAkJCQkyREFGMDZEODE4QkQyM0JBMDA4MUNFQjEg
LyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbiAqLywKIAkJCQkyREFG
MDZENTE4QkQxQTQ3MDA4MUNFQjEgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tbSAq
LywKQEAgLTE0NTU5LDYgKzE0NTY0LDcgQEAKIAkJCQk1Q0I5MzEwOTI2RTg0MzlBMDAzMkIxQzAg
LyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTg2Rjk1MzY1MThGRjU4RjUwMDFEQjJFRiAvKiBQcm9jZXNzQXNzZXJ0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzFBN0M1ODExMzZFMTlDMDBGQjcxNjcgLyogUHJvY2Vzc0xhdW5jaGVy
LmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0UwNUU0MDI4MkNENTYwMDAwQjY5RUIgLyogUHJvY2Vz
c1N0YXRlTW9uaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDYzRkQ0ODIxRUI5NEVDMDAwQTI5
ODJDIC8qIFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZF
NjdBMjUxOTEwQjlEMTAwMDA0QUI3IC8qIFByb2Nlc3NUaHJvdHRsZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTgzMDQ4QUU2MUFDQTQ1REMwMDgyQzgzMiAvKiBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50
LmggaW4gSGVhZGVycyAqLywK
</data>
<flag name="commit-queue"
          id="488493"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>