<?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>231455</bug_id>
          
          <creation_ts>2021-10-08 14:43:42 -0700</creation_ts>
          <short_desc>[iOS] Support getDisplayMedia</short_desc>
          <delta_ts>2023-05-30 22:52:25 -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>WebRTC</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>ben.browitt</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1802259</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-10-08 14:43:42 -0700</bug_when>
    <thetext>Support getDisplayMedia on iOS devices.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802261</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-08 14:43:54 -0700</bug_when>
    <thetext>&lt;rdar://problem/84044495&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803841</commentid>
    <comment_count>2</comment_count>
      <attachid>441098</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-10-13 10:36:47 -0700</bug_when>
    <thetext>Created attachment 441098
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803882</commentid>
    <comment_count>3</comment_count>
      <attachid>441098</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-10-13 11:27:54 -0700</bug_when>
    <thetext>Comment on attachment 441098
Patch

LGTM, worth rebasing.
Some nits below.

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

&gt; Source/WebCore/SourcesCocoa.txt:539
&gt; +platform/mediastream/mac/DisplayCaptureSourceCocoa.cpp

Should be moved to platform/mediastream/cocoa?

&gt; Source/WebCore/platform/mediastream/ios/ReplayKitCaptureSource.mm:144
&gt; +            return;

Should we retain the sampleBuffer even in that code path?

&gt; Source/WebCore/platform/mediastream/ios/ReplayKitCaptureSource.mm:150
&gt; +        RunLoop::main().dispatch([weakThis, sampleBuffer = retainPtr(sampleBuffer)]() mutable {

Sounds good like this right now.
In the future, given we are now ok with calling videoSampleAvailable in non main thread, we might be able to not hop to main thread.
Maybe a FIXME to keep track of this?

&gt; Source/WebCore/platform/mediastream/ios/ReplayKitCaptureSource.mm:231
&gt; +    m_interrupted = true;

So instead of failing, we mute the capture, compared to AVVideoCaptureSource.
Is there a way capture can fail?

&gt; Source/WebCore/platform/mediastream/ios/ReplayKitCaptureSource.mm:237
&gt; +    static constexpr Seconds verifyCaptureInterval = 2_s;

Should we increase to something bigger? For camera,2 seconds is not a lot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803995</commentid>
    <comment_count>4</comment_count>
      <attachid>441142</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-10-13 15:10:49 -0700</bug_when>
    <thetext>Created attachment 441142
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803996</commentid>
    <comment_count>5</comment_count>
      <attachid>441098</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-10-13 15:12:11 -0700</bug_when>
    <thetext>Comment on attachment 441098
Patch

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

&gt;&gt; Source/WebCore/SourcesCocoa.txt:539
&gt;&gt; +platform/mediastream/mac/DisplayCaptureSourceCocoa.cpp
&gt; 
&gt; Should be moved to platform/mediastream/cocoa?

Good point, moved.

&gt;&gt; Source/WebCore/platform/mediastream/ios/ReplayKitCaptureSource.mm:144
&gt;&gt; +            return;
&gt; 
&gt; Should we retain the sampleBuffer even in that code path?

We will once we support audio capture, but I don&apos;t t think we need to now.

&gt;&gt; Source/WebCore/platform/mediastream/ios/ReplayKitCaptureSource.mm:150
&gt;&gt; +        RunLoop::main().dispatch([weakThis, sampleBuffer = retainPtr(sampleBuffer)]() mutable {
&gt; 
&gt; Sounds good like this right now.
&gt; In the future, given we are now ok with calling videoSampleAvailable in non main thread, we might be able to not hop to main thread.
&gt; Maybe a FIXME to keep track of this?

Added.

&gt;&gt; Source/WebCore/platform/mediastream/ios/ReplayKitCaptureSource.mm:231
&gt;&gt; +    m_interrupted = true;
&gt; 
&gt; So instead of failing, we mute the capture, compared to AVVideoCaptureSource.
&gt; Is there a way capture can fail?

We mute rather than failing because ReplayKit will silently stop delivering frames when the app is backgrounded, but it resumes when the app comes back to the foreground. I&apos;m sure it is possible for capture to fail, we&apos;ll have to test to figure out how to differentiate the two.

&gt;&gt; Source/WebCore/platform/mediastream/ios/ReplayKitCaptureSource.mm:237
&gt;&gt; +    static constexpr Seconds verifyCaptureInterval = 2_s;
&gt; 
&gt; Should we increase to something bigger? For camera,2 seconds is not a lot.

I think it is OK given that we only mute, but we will definitely want to experiment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804007</commentid>
    <comment_count>6</comment_count>
      <attachid>441146</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-10-13 15:21:59 -0700</bug_when>
    <thetext>Created attachment 441146
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804214</commentid>
    <comment_count>7</comment_count>
      <attachid>441146</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-10-14 04:13:24 -0700</bug_when>
    <thetext>Comment on attachment 441146
Patch

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

&gt; Source/WebCore/platform/mediastream/cocoa/DisplayCaptureSourceCocoa.cpp:161
&gt; +    m_timer.startRepeating(1_s / frameRate());

It seems commitConfiguration(); is missing here, which might explain debug bot test issues.

&gt; Source/WebCore/platform/mediastream/cocoa/DisplayCaptureSourceCocoa.cpp:224
&gt; +        [](RetainPtr&lt;IOSurfaceRef&gt; surface) -&gt; IntSize {

I wonder whether this triggers refing?
Maybe RetainPtr&lt;IOSurfaceRef&gt;&amp; would be slightly better?
Ditto below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804625</commentid>
    <comment_count>8</comment_count>
      <attachid>441313</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-10-14 17:34:34 -0700</bug_when>
    <thetext>Created attachment 441313
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804626</commentid>
    <comment_count>9</comment_count>
      <attachid>441146</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-10-14 17:36:12 -0700</bug_when>
    <thetext>Comment on attachment 441146
Patch

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

&gt;&gt; Source/WebCore/platform/mediastream/cocoa/DisplayCaptureSourceCocoa.cpp:161
&gt;&gt; +    m_timer.startRepeating(1_s / frameRate());
&gt; 
&gt; It seems commitConfiguration(); is missing here, which might explain debug bot test issues.

Indeed it was!

&gt;&gt; Source/WebCore/platform/mediastream/cocoa/DisplayCaptureSourceCocoa.cpp:224
&gt;&gt; +        [](RetainPtr&lt;IOSurfaceRef&gt; surface) -&gt; IntSize {
&gt; 
&gt; I wonder whether this triggers refing?
&gt; Maybe RetainPtr&lt;IOSurfaceRef&gt;&amp; would be slightly better?
&gt; Ditto below.

Good catch, changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804814</commentid>
    <comment_count>10</comment_count>
      <attachid>441379</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-10-15 08:21:06 -0700</bug_when>
    <thetext>Created attachment 441379
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804850</commentid>
    <comment_count>11</comment_count>
      <attachid>441379</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-10-15 09:39:41 -0700</bug_when>
    <thetext>Comment on attachment 441379
Patch

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

&gt; Source/WebCore/platform/mediastream/cocoa/DisplayCaptureSourceCocoa.h:61
&gt; +        class Observer : public CanMakeWeakPtr&lt;Observer&gt; {

Nit: Can we use WTF::Observer here? An inner client class is not forward-declarable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805087</commentid>
    <comment_count>12</comment_count>
      <attachid>441444</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-10-15 15:49:52 -0700</bug_when>
    <thetext>Created attachment 441444
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805093</commentid>
    <comment_count>13</comment_count>
      <attachid>441379</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-10-15 15:56:29 -0700</bug_when>
    <thetext>Comment on attachment 441379
Patch

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

&gt;&gt; Source/WebCore/platform/mediastream/cocoa/DisplayCaptureSourceCocoa.h:61
&gt;&gt; +        class Observer : public CanMakeWeakPtr&lt;Observer&gt; {
&gt; 
&gt; Nit: Can we use WTF::Observer here? An inner client class is not forward-declarable.

This Observer class originally had several methods, but since it only has one now I replaced it with WTF::Observer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805155</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-15 17:34:33 -0700</bug_when>
    <thetext>Committed r284295 (243093@main): &lt;https://commits.webkit.org/243093@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 441444.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860109</commentid>
    <comment_count>15</comment_count>
    <who name="Ben">ben.browitt</who>
    <bug_when>2022-04-10 07:40:38 -0700</bug_when>
    <thetext>On which iOS release is it supposed to work?
getDisplayMedia is not available on iOS 15.4.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1958955</commentid>
    <comment_count>16</comment_count>
    <who name="Ben">ben.browitt</who>
    <bug_when>2023-05-30 22:52:25 -0700</bug_when>
    <thetext>Is there an update on this? Status is Resolved since 2021 but it&apos;s still not possible to call getDisplayMedia on iOS and iPadOS in Safari 16.5</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441098</attachid>
            <date>2021-10-13 10:36:47 -0700</date>
            <delta_ts>2021-10-13 15:10:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231455-20211013103646.patch</filename>
            <type>text/plain</type>
            <size>99621</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzOTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmM2ZDE1ZWRkMTNjYWUy
ZThiMzBkYTg2ZTA1NGY0MjE4YjFmZmFiMC4uYjdiNDFkZGU1ZGRkYzNhNTE0YTkwNWFkNjM5Njlk
YTExZTA1OWRmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAyMS0xMC0xMyAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBTdXBw
b3J0IGdldERpc3BsYXlNZWRpYQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMxNDU1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NDA0NDQ5NT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQg
c2NyZWVuIGNhcHR1cmUgZm9yIGlPUyB1c2luZyBSZXBsYXlLaXQuIFJlcGxheUtpdCBvbmx5IGNh
cHR1cmVzIHdoZW4gdGhlIAorICAgICAgICBob3N0IGFwcGxpY2F0aW9uIGlzIGluIHRoZSBmb3Jl
Z3JvdW5kLCBzbyB0aGUgTWVkaWFTdHJlYW0gdHJhY2sgaXMgbXV0ZWQgd2hlbiB0aGUKKyAgICAg
ICAgYXBwIGlzIGJhY2tncm91bmRlZC4KKworICAgICAgICBnZXREaXNwbGF5TWVkaWEgYXZhaWxh
YmlsaXR5IHRvIEphdmFTY3JpcHQgaXMgY29udHJvbGxlZCBieSB0aGUgYFNjcmVlbkNhcHR1cmVF
bmFibGVkYAorICAgICAgICBzZXR0aW5nLCB3aGljaCBpcyBkaXNhYmxlZCBieSBkZWZhdWx0IG9u
IGlPUy4KKworICAgICAgICBJIGhhdmVuJ3QgZmlndXJlZCBvdXQgaG93IHRvIHRlc3QgdGhpcyBh
dXRvbWF0aWNhbGx5IHlldCBiZWNhdXNlIFJlcGxheUtpdCBhbHdheXMKKyAgICAgICAgc2hvd3Mg
aXRzIG93biBtb2RhbCB1c2VyIHByb21wdCBiZWZvcmUgaXQgYWxsb3dzIGNhcHR1cmUgdG8gYmVn
aW4uCisKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OiBBZGQgUmVwbGF5S2l0Q2FwdHVyZVNv
dXJjZS5tbS4gUmVuYW1lIERpc3BsYXlDYXB0dXJlU291cmNlTWFjLmNwcAorICAgICAgICB0byBE
aXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmNwcC4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajogQWRkIG5ldyBmaWxlcy4KKworICAgICAgICAqIGVuLmxwcm9q
L0xvY2FsaXphYmxlLnN0cmluZ3M6IEFkZCBsb2NhbGl6YWJsZSBzdHJpbmdzIGZvciBnZXREaXNw
bGF5TWVkaWEgcHJvbXB0LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VU
cmFuc2ZlclNlc3Npb25WVC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdl
VHJhbnNmZXJTZXNzaW9uVlQubW06CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVRyYW5zZmVyU2Vz
c2lvblZUOjpjb252ZXJ0Q01TYW1wbGVCdWZmZXIpOiBBZGQgYW4gb3B0aW9uYWwgTWVkaWFUaW1l
IHBhcmFtZXRlci4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNy
ZWF0ZU1lZGlhU2FtcGxlKTogQWRkIGEgTWVkaWFUaW1lIHBhcmFtZXRlci4KKworICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9SZXBsYXlLaXRDYXB0dXJlU291cmNlLmg6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9SZXBsYXlLaXRDYXB0dXJlU291
cmNlLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV2ViQ29yZVJlcGxheUtpdFNjcmVlblJlY29yZGVy
SGVscGVyIGluaXRXaXRoQ2FsbGJhY2s6XSk6CisgICAgICAgICgtW1dlYkNvcmVSZXBsYXlLaXRT
Y3JlZW5SZWNvcmRlckhlbHBlciBkaXNjb25uZWN0XSk6CisgICAgICAgICgtW1dlYkNvcmVSZXBs
YXlLaXRTY3JlZW5SZWNvcmRlckhlbHBlciBvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOm9mT2JqZWN0
OmNoYW5nZTpjb250ZXh0Ol0pOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGF5S2l0Q2FwdHVyZVNv
dXJjZTo6aXNBdmFpbGFibGUpOiBDaGVjayBSZXBsYXlLaXQgYXZhaWxhYmlsaXR5LgorICAgICAg
ICAoV2ViQ29yZTo6UmVwbGF5S2l0Q2FwdHVyZVNvdXJjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlcGxheUtpdENhcHR1cmVTb3VyY2U6OlJlcGxheUtpdENhcHR1cmVTb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVwbGF5S2l0Q2FwdHVyZVNvdXJjZTo6flJlcGxheUtpdENhcHR1
cmVTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGF5S2l0Q2FwdHVyZVNvdXJjZTo6c3Rh
cnQpOiBTdGFydCBzY3JlZW4gY2FwdHVyZSBvbmx5LgorICAgICAgICAoV2ViQ29yZTo6UmVwbGF5
S2l0Q2FwdHVyZVNvdXJjZTo6c2NyZWVuUmVjb3JkZXJEaWRPdXRwdXRWaWRlb1NhbXBsZSk6IFJl
dGFpbiB0aGUKKyAgICAgICAgdGhlIG5ldyBmcmFtZSwgc2V0IGludHJpbnNpYyBzaXplIHRvIHRo
ZSBpbWFnZSBzaXplLgorICAgICAgICAoV2ViQ29yZTo6UmVwbGF5S2l0Q2FwdHVyZVNvdXJjZTo6
Y2FwdHVyZVN0YXRlRGlkQ2hhbmdlKTogVXBkYXRlIG9ic2VydmVyIGlmIGludGVycnVwdGlvbgor
ICAgICAgICBzdGF0ZSBvciByZWNvcmRlciBzdGF0ZSBjaGFuZ2VzIHNvIGl0IGNhbiB1cGRhdGUg
dGhlIHRyYWNrJ3MgJ211dGVkJyBzdGF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlcGxheUtpdENh
cHR1cmVTb3VyY2U6OnN0b3ApOiBTdG9wIGNhcHR1cmUuCisgICAgICAgIChXZWJDb3JlOjpSZXBs
YXlLaXRDYXB0dXJlU291cmNlOjpnZW5lcmF0ZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
cGxheUtpdENhcHR1cmVTb3VyY2U6OnZlcmlmeUNhcHR1cmVJc0FjdGl2ZSk6IFJlcGxheUtpdCBk
b2Vzbid0IG5vdGlmeSAKKyAgICAgICAgd2hlbiBjYXB0dXJlIGlzIHBhdXNlZCwgc28gd2F0Y2gg
Zm9yIGNoYW5nZXMgYnkgbW9uaXRvcmluZyB0aGUgZnJhbWUgY291bnQuCisgICAgICAgIChXZWJD
b3JlOjpSZXBsYXlLaXRDYXB0dXJlU291cmNlOjpzdGFydENhcHR1cmVXYXRjaGRvZ1RpbWVyKTog
U3RhcnQgdGhlIHRpbWVyIHRoYXQKKyAgICAgICAgd2lsbCBtb25pdG9yIGZvciBjYXB0dXJlIHBh
dXNpbmcvcmVzdW1pbmcuCisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5EZXZpY2VVVUlEKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNjcmVlbkRldmljZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYXlL
aXRDYXB0dXJlU291cmNlOjpzY3JlZW5DYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXBsYXlLaXRDYXB0dXJlU291cmNlOjpzY3JlZW5DYXB0dXJlRGV2
aWNlcyk6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3Ry
ZWFtQ2FwdHVyZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDR0Rpc3BsYXlTdHJlYW1D
YXB0dXJlU291cmNlOjpnZW5lcmF0ZUZyYW1lKTogRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMgd2Fz
CisgICAgICAgIHJlbmFtZWQgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS4KKyAgICAgICAgKFdl
YkNvcmU6OkNHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2U6Om5ld0ZyYW1lKTogVGFrZSBhIFJl
dGFpblB0cjxJT1N1cmZhY2VSZWY+CisgICAgICAgIGluc3RlYWQgb2YgYSBEaXNwbGF5U3VyZmFj
ZS4KKyAgICAgICAgKFdlYkNvcmU6OkNHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2U6OmZyYW1l
QXZhaWxhYmxlSGFuZGxlcik6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9DR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpD
R0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlOjpEaXNwbGF5U3VyZmFjZTo6RGlzcGxheVN1cmZh
Y2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNv
dXJjZTo6RGlzcGxheVN1cmZhY2U6On5EaXNwbGF5U3VyZmFjZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpDR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlOjpEaXNwbGF5U3VyZmFjZTo6
b3BlcmF0b3I9KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNHRGlzcGxheVN0cmVhbUNh
cHR1cmVTb3VyY2U6OkRpc3BsYXlTdXJmYWNlOjppb1N1cmZhY2UgY29uc3QpOiBEZWxldGVkLgor
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NHRGlzcGxheVN0cmVhbVNjcmVl
bkNhcHR1cmVTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dE
aXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNH
RGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2U6OmNyZWF0ZSk6IERpc3BsYXlDYXB0dXJl
U291cmNlTWFjIHdhcworICAgICAgICByZW5hbWVkIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2Eu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVNYW5h
Z2VyQ29jb2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUNhcHR1cmVNYW5hZ2VyQ29j
b2E6OnVwZGF0ZURpc3BsYXlDYXB0dXJlRGV2aWNlcyk6IFVzZSAKKyAgICAgICAgUmVwbGF5S2l0
Q2FwdHVyZVNvdXJjZSBvbiBpT1MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMuY3Bw
LgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OkRpc3BsYXlDYXB0
dXJlU291cmNlQ29jb2EpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUNhcHR1cmVTb3VyY2VD
b2NvYTo6fkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Y2FwYWJpbGl0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OnNldHRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OnNldHRpbmdzRGlkQ2hhbmdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OnN0YXJ0UHJvZHVjaW5nRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpzdG9wUHJvZHVj
aW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpl
bGFwc2VkVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29h
Ojp1cGRhdGVGcmFtZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUNhcHR1cmVTb3Vy
Y2VDb2NvYTo6ZW1pdEZyYW1lKTogU3VwcG9ydCBjYXB0dXJlciByZXR1cm5pbmcgYSBDTVNhbXBs
ZUJ1ZmZlci4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OnNl
dExvZ2dlcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpD
YXB0dXJlcjo6c2V0TG9nZ2VyKTogU2V0IHRoZSBjYXB0dXJlcidzIGxvZ2dlci4KKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OkNhcHR1cmVyOjpsb2dDaGFubmVs
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OkNh
cHR1cmVyOjpPYnNlcnZlcjo6fk9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlD
YXB0dXJlU291cmNlQ29jb2E6OkNhcHR1cmVyOjpzZXRPYnNlcnZlcik6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpDYXB0dXJlcjo6Y2FwdHVyZXJJc1J1bm5p
bmdDaGFuZ2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNh
cHR1cmVTb3VyY2VDb2NvYS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlTWFjLmguCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Q2FwdHVyZVNvdXJjZUZhY3RvcnlNYWM6OmNyZWF0
ZURpc3BsYXlDYXB0dXJlU291cmNlKTogRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMKKyAgICAgICAg
cmVuYW1lZCB0byBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLgorCisgICAgICAgICogcGxhdGZv
cm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrRGlzcGxheUNhcHR1cmVyOjpnZW5lcmF0ZUZyYW1lKTogRGl0dG8uCisKIDIwMjEt
MTAtMTIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAg
SGF2ZSB0aGUgU2Nyb2xsaW5nVHJlZSB0cmFjayBub2RlcyB3aXRoIGFuaW1hdGVkIHNjcm9sbHMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvQ2hhbmdlTG9nCmluZGV4IDQ4MjQ0YmZiMWNmZmMzMmNmNDllYjk0MjdhMDYzNDM2YWE2
ODExZTMuLjBlYzliNWM0ZDE5MTQ1MTc1MTFjZmUwNDY2NGY3OGRkYmEwY2Y5YTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFM
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTEwLTEzICBFcmljIENhcmxzb24gIDxl
cmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFN1cHBvcnQgZ2V0RGlzcGxh
eU1lZGlhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzE0NTUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg0MDQ0NDk1PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUEFMLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogcGFsL2lvcy9SZXBsYXlLaXRTb2Z0TGluay5oOiBBZGRlZC4K
KyAgICAgICAgKiBwYWwvaW9zL1JlcGxheUtpdFNvZnRMaW5rLm1tOiBBZGRlZC4KKwogMjAyMS0x
MC0xMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFJlbW92ZSBub24tSEFWRShDRk5FVFdPUktfTlNVUkxTRVNTSU9OX1NUUklDVFJVU1RFVkFM
VUFURSkgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCBlMWEwMThhOWMwZWMxNTFjZWQzYTQyMDI1OWU5ZjExMzEx
ODkxODhiLi5hOTQwMTQ4ZDVlYzllZTJmOTM3MzJlOTI0YmE0YTY4MGE5ODIyZGNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDMzIEBACisyMDIxLTEwLTEzICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxz
b25AYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFN1cHBvcnQgZ2V0RGlzcGxheU1lZGlhCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE0NTUKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg0MDQ0NDk1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL01lZGlhUGVybWlzc2lv
blV0aWxpdGllcy5tbToKKyAgICAgICAgKFdlYktpdDo6YWxlcnRNZXNzYWdlVGV4dCk6IEFkZCB0
ZXh0IGZvciBkZWZhdWx0IHNjcmVlbiBjYXB0dXJlIHByb21wdC4KKyAgICAgICAgKFdlYktpdDo6
YWxsb3dCdXR0b25UZXh0KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OmRvTm90QWxsb3dCdXR0
b25UZXh0KTogRGl0dG8uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5t
bToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZv
clVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KTogQ2FsbAorICAgICAgICBkZWZhdWx0IGdldERp
c3BsYXlNZWRpYSBwcm9tcHQgaWYgdGhlIGRlbGVnYXRlIGRvZXNuJ3QgaW1wbGVtZW50IHRoZSBw
cml2YXRlCisgICAgICAgIHByb21wdCBzZWxlY3Rvci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9N
ZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0UHJveHk6OnByb21wdEZvckdldERpc3BsYXlNZWRpYSk6IE5ldyBkZWZh
dWx0CisgICAgICAgIGdldERpc3BsYXlNZWRpYSBwcm9tcHQuCisgICAgICAgIChXZWJLaXQ6OlVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OnByb21wdEZvckdldFVzZXJNZWRpYSk6IAor
ICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5Ojpkb0RlZmF1
bHRBY3Rpb24pOiBDYWxsIHByb21wdEZvckdldERpc3BsYXlNZWRpYQorICAgICAgICBvciBwcm9t
cHRGb3JHZXRVc2VyTWVkaWEgYWNjb3JkaW5nIHRvIHRoZSByZXF1ZXN0IHR5cGUuCisgICAgICAg
IChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OmNhblByb21wdEZvckdl
dERpc3BsYXlNZWRpYSk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0UHJveHk6OnByb21wdCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1VzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RQcm94eTo6ZG9EZWZhdWx0QWN0aW9uKTogRGVsZXRlZC4KKwogMjAyMS0x
MC0xMiAgUGVyIEFybmUgVm9sbGFuIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9T
XVtHUFVQXSBSZW1vdmUgc2FuZGJveCBhY2Nlc3MgdG8gY29tLmFwcGxlLmF1ZGlvLkF1ZGlvQ29t
cG9uZW50UmVnaXN0cmFyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggMDI2ZjE0YjVjZTljYWI5MzFhMzMxZTUyYjkwMDBhYTZhZjg0
MjM2NS4uNThiMjgzNjJkOTZiZGExYWNhMmE2NWJkODIzZWFhMjZiNWU4YjM0YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjEs
NiArMjEsOCBAQAogLyogRW5kIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0aW9uICovCiAKIC8qIEJl
Z2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCisJCTA3MUMwMDM3MjcwN0VERjAwMEQwMjdDNyAv
KiBSZXBsYXlLaXRTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA3MUMwMDM1MjcwN0VERjAwMEQwMjdDNyAvKiBSZXBsYXlLaXRTb2Z0TGlu
ay5tbSAqLzsgfTsKKwkJMDcxQzAwMzgyNzA3RURGMDAwRDAyN0M3IC8qIFJlcGxheUtpdFNvZnRM
aW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzFD
MDAzNjI3MDdFREYwMDBEMDI3QzcgLyogUmVwbGF5S2l0U29mdExpbmsuaCAqLzsgfTsKIAkJMDc2
MTFEQjYyNDNGQTVCRjAwRDgwNzA0IC8qIFVzYWdlVHJhY2tpbmdTb2Z0TGluay5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2MTFEQjQyNDNGQTVCRTAw
RDgwNzA0IC8qIFVzYWdlVHJhY2tpbmdTb2Z0TGluay5oICovOyB9OwogCQkwNzYxMURCNzI0M0ZB
NUJGMDBEODA3MDQgLyogVXNhZ2VUcmFja2luZ1NvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2MTFEQjUyNDNGQTVCRjAwRDgwNzA0IC8q
IFVzYWdlVHJhY2tpbmdTb2Z0TGluay5tbSAqLzsgfTsKIAkJMDc3RTg3QjEyMjZBNDYwMjAwQTJB
RkYwIC8qIEFWRm91bmRhdGlvblNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDc3RTg3QUYyMjZBNDYwMjAwQTJBRkYwIC8qIEFWRm91bmRh
dGlvblNvZnRMaW5rLm1tICovOyB9OwpAQCAtMjM0LDYgKzIzNiw4IEBACiAvKiBFbmQgUEJYQ29u
dGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRmlsZVJlZmVyZW5jZSBz
ZWN0aW9uICovCisJCTA3MUMwMDM1MjcwN0VERjAwMEQwMjdDNyAvKiBSZXBsYXlLaXRTb2Z0TGlu
ay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlcGxheUtpdFNv
ZnRMaW5rLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzFDMDAzNjI3MDdFREYw
MDBEMDI3QzcgLyogUmVwbGF5S2l0U29mdExpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVwbGF5S2l0U29mdExpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDc2MTFEQjQyNDNGQTVCRTAwRDgwNzA0IC8qIFVzYWdlVHJhY2tpbmdTb2Z0TGluay5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2FnZVRyYWNraW5nU29mdExpbmsuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2MTFEQjUyNDNGQTVCRjAwRDgwNzA0IC8q
IFVzYWdlVHJhY2tpbmdTb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFVzYWdlVHJhY2tpbmdTb2Z0TGluay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDc3RTg3QUYyMjZBNDYwMjAwQTJBRkYwIC8qIEFWRm91bmRhdGlvblNvZnRMaW5r
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQVZGb3VuZGF0aW9u
U29mdExpbmsubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NjgsNiArNzcyLDgg
QEAKIAkJCQk1QzdDNzg3MjIzQUMzRTc3MDA2NUY0N0UgLyogTWFuYWdlZENvbmZpZ3VyYXRpb25T
b2Z0TGluay5tbSAqLywKIAkJCQk0NDUwRkM5RTIxRjVGNjAyMDA0REZBNTYgLyogUXVpY2tMb29r
U29mdExpbmsuaCAqLywKIAkJCQk0NDUwRkM5RDIxRjVGNjAyMDA0REZBNTYgLyogUXVpY2tMb29r
U29mdExpbmsubW0gKi8sCisJCQkJMDcxQzAwMzYyNzA3RURGMDAwRDAyN0M3IC8qIFJlcGxheUtp
dFNvZnRMaW5rLmggKi8sCisJCQkJMDcxQzAwMzUyNzA3RURGMDAwRDAyN0M3IC8qIFJlcGxheUtp
dFNvZnRMaW5rLm1tICovLAogCQkJCTA3OUQxRDk1MjY5NTBERDcwMDg4MzU3NyAvKiBTeXN0ZW1T
dGF0dXNTb2Z0TGluay5oICovLAogCQkJCTA3OUQxRDk2MjY5NTBERDcwMDg4MzU3NyAvKiBTeXN0
ZW1TdGF0dXNTb2Z0TGluay5tbSAqLywKIAkJCQkyRTEzNDJDQTIxNUFBMTBBMDA3MTk5RDIgLyog
VUlLaXRTb2Z0TGluay5oICovLApAQCAtOTg4LDYgKzk5NCw3IEBACiAJCQkJNDQ1MEZDQTAyMUY1
RjYwMjAwNERGQTU2IC8qIFF1aWNrTG9va1NvZnRMaW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
QzVBRjkyMDFGNDNBNEM3MDAyRUFDMDIgLyogUXVpY2tMb29rU1BJLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGNEM4NUE0RjI2NTg1NTFBMDA1Qjg5Q0MgLyogUXVpY2tMb29rVUlTb2Z0TGluay5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMDcxQzAwMzgyNzA3RURGMDAwRDAyN0M3IC8qIFJlcGxheUtpdFNv
ZnRMaW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDk3NEVBMzI2NUVFQTIyMDBCNDlCOEMgLyog
UmV2ZWFsU29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ0Mjk1NkNEMjE4QTcyREYwMDgw
REI1NCAvKiBSZXZlYWxTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MEFCOEYxMjBBRTJFOEQw
MEI4QkU4NyAvKiBTZWNLZXlQcm94eVNQSS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTMyLDYgKzEx
MzksNyBAQAogCQkJCUExMTc1QjRGMUY2QjMzNzMwMEM0QjlGMCAvKiBQb3B1cE1lbnUubW0gaW4g
U291cmNlcyAqLywKIAkJCQk0NDUwRkM5RjIxRjVGNjAyMDA0REZBNTYgLyogUXVpY2tMb29rU29m
dExpbmsubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNEM4NUE0RTI2NTg1NTFBMDA1Qjg5Q0MgLyog
UXVpY2tMb29rVUlTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAorCQkJCTA3MUMwMDM3MjcwN0VE
RjAwMEQwMjdDNyAvKiBSZXBsYXlLaXRTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0
OTc0RUE0MjY1RUVBMjIwMEI0OUI4QyAvKiBSZXZlYWxTb2Z0TGluay5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUEzQzY2Q0RDMUY0NjJENkEwMDlFNkVFOSAvKiBTZXNzaW9uSUQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTNBQjZFNTIxRjNEMURDNTAwOUMxNEIxIC8qIFNsZWVwRGlzYWJsZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2lvcy9S
ZXBsYXlLaXRTb2Z0TGluay5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9pb3MvUmVwbGF5S2l0
U29mdExpbmsuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZWMyOTFkZjRjZTQzODJmYjcxZmFmMjVhZmE5NGY2YmYy
MWJlMDY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9pb3MvUmVw
bGF5S2l0U29mdExpbmsuaApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKworI2ltcG9ydCA8UmVwbGF5S2l0L1Jl
cGxheUtpdC5oPgorI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisKK1NPRlRfTElOS19GUkFN
RVdPUktfRk9SX0hFQURFUihQQUwsIFJlcGxheUtpdCkKKworU09GVF9MSU5LX0NMQVNTX0ZPUl9I
RUFERVIoUEFMLCBSUFNjcmVlblJlY29yZGVyKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvaW9zL1JlcGxheUtpdFNvZnRMaW5rLm1tIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9pb3MvUmVwbGF5S2l0U29mdExpbmsubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTdiYjJjYTU4
MGNhNmE2MTNhZmUwM2EyMWY2M2I5Y2M5MWQxMTRmNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvaW9zL1JlcGxheUtpdFNvZnRMaW5rLm1tCkBAIC0wLDAgKzEsMzYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQorCisjaW1wb3J0IDxSZXBsYXlLaXQvUmVwbGF5S2l0Lmg+CisjaW1wb3J0IDx3dGYv
U29mdExpbmtpbmcuaD4KKworU09GVF9MSU5LX0ZSQU1FV09SS19GT1JfU09VUkNFKFBBTCwgUmVw
bGF5S2l0KQorCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFJl
cGxheUtpdCwgUlBTY3JlZW5SZWNvcmRlciwgUEFMX0VYUE9SVCkKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291
cmNlc0NvY29hLnR4dAppbmRleCBhNGMwYTc2MjdjMzc4MWRmY2QwNDkwNmZjNTIzMzA5YzkwNzMw
YzJjLi4yMDMwNWRkYWFhNzZkOWQyNWRjODQ1Zjk0MzM1MmE4MTQyZDYyMjMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXNDb2NvYS50eHQKQEAgLTUyNSw2ICs1MjUsNyBAQCBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9j
b2NvYS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuY3BwCiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlLm1tCiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbSBAbm8tdW5p
ZnkKIHBsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9Db3JlQXVkaW9DYXB0dXJlU291cmNlSU9TLm1t
CitwbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZS5tbSBAbm8t
dW5pZnkKIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlckNv
Y29hLmNwcAogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIu
bW0KIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQpAQCAt
NTM1LDcgKzUzNiw3IEBAIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJl
RGV2aWNlLmNwcAogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZp
Y2VNYW5hZ2VyLmNwcAogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVT
b3VyY2UuY3BwCiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVNYW5hZ2Vy
Q29jb2EuY3BwCi1wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VN
YWMuY3BwCitwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2Nv
YS5jcHAKIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9NZWRpYVN0cmVhbVRyYWNrQXVkaW9Tb3Vy
Y2VQcm92aWRlckNvY29hLmNwcAogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tBdWRpb1No
YXJlZFVuaXQubW0KIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZU1hYy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDU5ZDZlZWY3MTBiMzljMjhhYzE0YjI3ZjUzMTkwYzUyZTg0YzkzMDcu
LjFkM2E2OGEwYTliYzg4MzYzNWQ5MWYxY2YzYjZjMDc2NWE2NjI5YmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTk4LDYgKzk4
LDggQEAKIAkJMDcwRTgxRDExQkYyNzY1NjAwMUZEQTQ4IC8qIFZpZGVvVHJhY2tQcml2YXRlTWVk
aWFTdHJlYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3MEU4MUQwMUJGMjc2NTYwMDFGREE0OCAvKiBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFt
LmggKi87IH07CiAJCTA3MEY1NDk4MTdGMTJGNkIwMDE2OUUwNCAvKiBNZWRpYVN0cmVhbUNvbnN0
cmFpbnRzVmFsaWRhdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDcwRjU0OTcxN0YxMkY2QjAwMTY5RTA0IC8qIE1lZGlhU3RyZWFtQ29u
c3RyYWludHNWYWxpZGF0aW9uQ2xpZW50LmggKi87IH07CiAJCTA3MUE5RUMzMTY4RkJDNTUwMDI2
MjlGOSAvKiBUZXh0VHJhY2tDdWVHZW5lcmljLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwNzFBOUVDMTE2OEZCNTZDMDAyNjI5RjkgLyogVGV4dFRyYWNr
Q3VlR2VuZXJpYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTA3MUMwMDM0MjcwN0Q5NTUwMEQwMjdDNyAvKiBSZXBsYXlLaXRDYXB0dXJlU291cmNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzFDMDAz
MzI3MDdEOTQ0MDBEMDI3QzcgLyogUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZS5oICovOyB9OworCQkw
NzFDMDA0QjI3MEI4NjQ5MDBEMDI3QzcgLyogUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MUMwMDMyMjcwN0Q5
NDMwMEQwMjdDNyAvKiBSZXBsYXlLaXRDYXB0dXJlU291cmNlLm1tICovOyB9OwogCQkwNzFFNDk3
MDFBRDVBQjVFMDA4QTUwQjQgLyogTWVkaWFQbGF5YmFja1RhcmdldENvY29hLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzFFNDk2RjFBRDVBQjVFMDA4
QTUwQjQgLyogTWVkaWFQbGF5YmFja1RhcmdldENvY29hLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDcyNUVGQTkyMzlBRDc5MzAwQTUzOEE5IC8q
IE1lZGlhUGxheWVyUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDc5RjVFNEIwRjNCRUJFQTAwNUUwNzgyIC8qIE1lZGlhUGxheWVyUHJpdmF0
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3
Mjc3RTREMTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzI3N0U0MTE3RDAxOENDMDAxNTUzNEQg
LyogSlNNZWRpYVN0cmVhbS5oICovOyB9OwpAQCAtNTg0OSw2ICs1ODUxLDggQEAKIAkJMDcxNzc2
NUYyNkMzMDNCNzAwQTYzMjk5IC8qIENHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2Uu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291
cmNlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzFBOUVDMDE2OEZCNTZDMDAy
NjI5RjkgLyogVGV4dFRyYWNrQ3VlR2VuZXJpYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBUZXh0VHJhY2tDdWVHZW5lcmljLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDcxQTlFQzExNjhGQjU2QzAwMjYyOUY5IC8qIFRleHRUcmFja0N1ZUdlbmVy
aWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dFRyYWNrQ3VlR2VuZXJp
Yy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzFDMDAzMjI3MDdEOTQzMDBEMDI3
QzcgLyogUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJl
cGxheUtpdENhcHR1cmVTb3VyY2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3
MUMwMDMzMjcwN0Q5NDQwMEQwMjdDNyAvKiBSZXBsYXlLaXRDYXB0dXJlU291cmNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlcGxheUtpdENhcHR1cmVTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDcxRTQ5NkQxQUQ1QUEwRDAwOEE1MEI0IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRD
b2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lZGlhUGxh
eWJhY2tUYXJnZXRDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcxRTQ5
NkYxQUQ1QUI1RTAwOEE1MEI0IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcyMjFCNEMxN0NFQzMyNzAwODQ4RTUxIC8qIE1l
ZGlhU3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlh
U3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYwMzcsMTAgKzYwNDEs
MTAgQEAKIAkJMDc5RjVFNEIwRjNCRUJFQTAwNUUwNzgyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVBsYXllclByaXZhdGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdBNkQxRTkxNDkxMTM3NzAwMDUxRDBDIC8q
IE1lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTA3QTZEMUVBMTQ5MTEzNzcwMDA1MUQwQyAvKiBNZWRpYUZyYWdtZW50VVJJUGFy
c2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhRnJhZ21lbnRVUklQ
YXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDdBNkQ4NDcxRkVCNzAwQjAw
NjQ0MURFIC8qIERpc3BsYXlDYXB0dXJlU291cmNlTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IERpc3BsYXlDYXB0dXJlU291cmNlTWFjLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdBNkQ4NDcxRkVCNzAwQjAwNjQ0MURFIC8qIERpc3BsYXlD
YXB0dXJlU291cmNlQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTA3QTZEODQ4MUZFQjcwMEIwMDY0NDFERSAvKiBEaXNwbGF5Q2FwdHVyZU1hbmFnZXJD
b2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5Q2Fw
dHVyZU1hbmFnZXJDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QTZE
ODQ5MUZFQjcwMEMwMDY0NDFERSAvKiBEaXNwbGF5Q2FwdHVyZU1hbmFnZXJDb2NvYS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5Q2FwdHVyZU1hbmFnZXJDb2NvYS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwN0E2RDg0QTFGRUI3MDBEMDA2NDQxREUg
LyogRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMDdBNkQ4NEExRkVCNzAwRDAwNjQ0MURFIC8qIERpc3BsYXlDYXB0dXJlU291cmNlQ29j
b2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUNhcHR1cmVTb3Vy
Y2VDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0FBNkI2OTE2NkQwMTk1
MDBENDU2NzEgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdBQTZCNkExNjZEMDE5NTAwRDQ1NjcxIC8qIElu
YmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QUI5OTY1MThEQTNDMDEwMDE4NzcxRSAvKiBSVENDb25m
aWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ0NvbmZpZ3Vy
YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3Nzg2LDggKzE3NzkwLDgg
QEAKIAkJCQkzRjNCQjU4MzFFNzA5RUU0MDBDNzAxRjIgLyogQ29yZUF1ZGlvQ2FwdHVyZVNvdXJj
ZS5oICovLAogCQkJCTA3QTZEODQ4MUZFQjcwMEIwMDY0NDFERSAvKiBEaXNwbGF5Q2FwdHVyZU1h
bmFnZXJDb2NvYS5jcHAgKi8sCiAJCQkJMDdBNkQ4NDkxRkVCNzAwQzAwNjQ0MURFIC8qIERpc3Bs
YXlDYXB0dXJlTWFuYWdlckNvY29hLmggKi8sCi0JCQkJMDdBNkQ4NDcxRkVCNzAwQjAwNjQ0MURF
IC8qIERpc3BsYXlDYXB0dXJlU291cmNlTWFjLmNwcCAqLywKLQkJCQkwN0E2RDg0QTFGRUI3MDBE
MDA2NDQxREUgLyogRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMuaCAqLywKKwkJCQkwN0E2RDg0NzFG
RUI3MDBCMDA2NDQxREUgLyogRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHAgKi8sCisJCQkJ
MDdBNkQ4NEExRkVCNzAwRDAwNjQ0MURFIC8qIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuaCAq
LywKIAkJCQk0MTc0RTkyMDI1MzVEQ0REMDBGRTQyMDIgLyogTWVkaWFTdHJlYW1UcmFja0F1ZGlv
U291cmNlUHJvdmlkZXJDb2NvYS5jcHAgKi8sCiAJCQkJNDE3NEU5MUUyNTM1RENENjAwRkU0MjAy
IC8qIE1lZGlhU3RyZWFtVHJhY2tBdWRpb1NvdXJjZVByb3ZpZGVyQ29jb2EuaCAqLywKIAkJCQkw
NzQ0RUNFQjFFMEM0QUU1MDAwRDA5NDQgLyogTW9ja0F1ZGlvU2hhcmVkVW5pdC5oICovLApAQCAt
Mjg3OTYsNiArMjg4MDAsOCBAQAogCQkJCUNEQzY3NTIwMUVBRUE5QjcwMDcyN0M4NCAvKiBBVkF1
ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tICovLAogCQkJCTA3QUZGNDIwMUVGQjE0
NDcwMEI1NDVCMyAvKiBDb3JlQXVkaW9DYXB0dXJlU291cmNlSU9TLmggKi8sCiAJCQkJMDdBRkY0
MjExRUZCMTQ0NzAwQjU0NUIzIC8qIENvcmVBdWRpb0NhcHR1cmVTb3VyY2VJT1MubW0gKi8sCisJ
CQkJMDcxQzAwMzMyNzA3RDk0NDAwRDAyN0M3IC8qIFJlcGxheUtpdENhcHR1cmVTb3VyY2UuaCAq
LywKKwkJCQkwNzFDMDAzMjI3MDdEOTQzMDBEMDI3QzcgLyogUmVwbGF5S2l0Q2FwdHVyZVNvdXJj
ZS5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gaW9zOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKQEAgLTM1MDc5LDYgKzM1MDg1LDcgQEAKIAkJCQlBODlDQ0M1MzBGNDRFOTgxMDBCNURBMTAg
LyogUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJERjUx
MkNFMUQ4NzNFNDcwMDFENjc4MCAvKiBSZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzMzA5RTBBMDk5RTY0OTIwMDU2RTU4MSAvKiBSZXBsYWNlU2VsZWN0
aW9uQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDcxQzAwMzQyNzA3RDk1NTAwRDAyN0M3
IC8qIFJlcGxheUtpdENhcHR1cmVTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2REQ2RTFG
MjZFN0RCRTcwMDhDMUY0QyAvKiBSZXBvcnRpbmdFbmRwb2ludHNDYWNoZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDk5OEFFQzYxM0Y5RDBFQTAwOTBCMUFBIC8qIFJlcXVlc3RBbmltYXRpb25GcmFt
ZUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0REMDEyNTFGMTJEMDAzRUYyNjkg
LyogUmVzZXRJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzY4MDAsNiArMzY4MDcsNyBA
QAogCQkJCUNEQTI5QTMwMUNCRjc0RDQwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VBVktpdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQTI5QTE2MUNCREE1NkMwMDkwMUNDRiAv
KiBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk0MTky
NDI0OTIxMjdCOTNFMDA2MzRGQ0YgLyogUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2Eu
bW0gaW4gU291cmNlcyAqLywKKwkJCQkwNzFDMDA0QjI3MEI4NjQ5MDBEMDI3QzcgLyogUmVwbGF5
S2l0Q2FwdHVyZVNvdXJjZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDMkIxQUVDMjIzOTdFQkMw
MEI5MUNGNyAvKiBSZXNvdXJjZVJlc3BvbnNlQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQlC
QzUxMTU2RTEyQjE3NDlDMDBDOTY3NTQgLyogU2Nyb2xsQW5pbWF0b3JNYWMubW0gaW4gU291cmNl
cyAqLywKIAkJCQkwRkVFMzcxMTI2RjE5NTI5MDAxQjUxODQgLyogU2Nyb2xsYmFyc0NvbnRyb2xs
ZXJNYWMubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VuLmxw
cm9qL0xvY2FsaXphYmxlLnN0cmluZ3MgYi9Tb3VyY2UvV2ViQ29yZS9lbi5scHJvai9Mb2NhbGl6
YWJsZS5zdHJpbmdzCmluZGV4IGUxMjljY2E5ODNiOWVmZDRmODNlNzRiMjJiNGJmMzY3NDk4YTE1
ZDMuLmEwNTlkN2JiMmUwYmFmM2IyMDBmOTRmZjcxMjMwMjljODA5ZGI2NDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKKysrIGIvU291cmNl
L1dlYkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwpAQCAtMTYzLDYgKzE2Myw5IEBA
CiAvKiBBbGxvdyBidXR0b24gdGl0bGUgaW4gdXNlciBtZWRpYSBwcm9tcHQgKi8KICJBbGxvdyAo
dXNlcm1lZGlhKSIgPSAiQWxsb3ciOwogCisvKiBBbGxvdyBidXR0b24gdGl0bGUgaW4gc2NyZWVu
IHNoYXJpbmcgcHJvbXB0ICovCisiQWxsb3cgKHNjcmVlbnNoYXJpbmcpIiA9ICJBbGxvdyI7CisK
IC8qIE1lc3NhZ2UgZm9yIHJlcXVlc3RpbmcgY3Jvc3Mtc2l0ZSBjb29raWUgYW5kIHdlYnNpdGUg
ZGF0YSBhY2Nlc3MuICovCiAiQWxsb3cg4oCcJUDigJ0gYW5kIOKAnCVA4oCdIHRvIHVzZSBjb29r
aWVzIGFuZCB3ZWJzaXRlIGRhdGEgd2hpbGUgYnJvd3Npbmcg4oCcJUDigJ0/IiA9ICJBbGxvdyDi
gJwlQOKAnSBhbmQg4oCcJUDigJ0gdG8gdXNlIGNvb2tpZXMgYW5kIHdlYnNpdGUgZGF0YSB3aGls
ZSBicm93c2luZyDigJwlQOKAnT8iOwogCkBAIC0xODQsNiArMTg3LDkgQEAKIC8qIE1lc3NhZ2Ug
Zm9yIHVzZXIgbWljcm9waG9uZSBhY2Nlc3MgcHJvbXB0ICovCiAiQWxsb3cg4oCcJUDigJ0gdG8g
dXNlIHlvdXIgbWljcm9waG9uZT8iID0gIkFsbG93IOKAnCVA4oCdIHRvIHVzZSB5b3VyIG1pY3Jv
cGhvbmU/IjsKIAorLyogTWVzc2FnZSBmb3Igc2NyZWVuIHNoYXJpbmcgcHJvbXB0LiAqLworIkFs
bG93IOKAnCVA4oCdIHRvIG9ic2VydmUgeW91ciBzY3JlZW4/IiA9ICJBbGxvdyDigJwlQOKAnSB0
byBvYnNlcnZlIHlvdXIgc2NyZWVuPyI7CisKIC8qIFdLRXJyb3JVbmtub3duIGRlc2NyaXB0aW9u
ICovCiAiQW4gdW5rbm93biBlcnJvciBvY2N1cnJlZCIgPSAiQW4gdW5rbm93biBlcnJvciBvY2N1
cnJlZCI7CiAKQEAgLTM5MSw2ICszOTcsOSBAQAogLyogRGlzYWxsb3cgYnV0dG9uIHRpdGxlIGlu
IHVzZXIgbWVkaWEgcHJvbXB0ICovCiAiRG9u4oCZdCBBbGxvdyAodXNlcm1lZGlhKSIgPSAiRG9u
4oCZdCBBbGxvdyI7CiAKKy8qIERpc2FsbG93IGJ1dHRvbiB0aXRsZSBpbiBzY3JlZW4gc2hhcmlu
ZyBwcm9tcHQgKi8KKyJEb27igJl0IEFsbG93IChzY3JlZW5zaGFyaW5nKSIgPSAiRG9u4oCZdCBB
bGxvdyI7CisKIC8qIERvd25sb2FkIEF1ZGlvIFRvIERpc2sgY29udGV4dCBtZW51IGl0ZW0gKi8K
ICJEb3dubG9hZCBBdWRpbyIgPSAiRG93bmxvYWQgQXVkaW8iOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lv
blZULmgKaW5kZXggNGYyMjlkZTZhZmY5ZGYxYTFkNDJkNzYwZTI3MDk5MDVjODg3ZjQwZC4uZWM5
NWJmYjgzNGFmM2NjZTIyNzRiNWRlNWRlNzZiZjMzMzIzNmFjZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNz
aW9uVlQuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8TWVkaWFTYW1w
bGU+IGNvbnZlcnRNZWRpYVNhbXBsZShNZWRpYVNhbXBsZSYsIGNvbnN0IEludFNpemUmKTsKICAg
ICBSZWZQdHI8TWVkaWFTYW1wbGU+IGNyZWF0ZU1lZGlhU2FtcGxlKENHSW1hZ2VSZWYsIGNvbnN0
IE1lZGlhVGltZSYsIGNvbnN0IEludFNpemUmLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiA9
IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lLCBib29sIG1pcnJvcmVkID0gZmFsc2Up
OwotICAgIFJlZlB0cjxNZWRpYVNhbXBsZT4gY3JlYXRlTWVkaWFTYW1wbGUoQ01TYW1wbGVCdWZm
ZXJSZWYsIGNvbnN0IEludFNpemUmLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiA9IE1lZGlh
U2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lLCBib29sIG1pcnJvcmVkID0gZmFsc2UpOworICAg
IFJlZlB0cjxNZWRpYVNhbXBsZT4gY3JlYXRlTWVkaWFTYW1wbGUoQ01TYW1wbGVCdWZmZXJSZWYs
IGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IEludFNpemUmLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3Rh
dGlvbiA9IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lLCBib29sIG1pcnJvcmVkID0g
ZmFsc2UpOwogCiAjaWYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIFdFQkNPUkVfRVhQT1JU
IFJlZlB0cjxNZWRpYVNhbXBsZT4gY3JlYXRlTWVkaWFTYW1wbGUoSU9TdXJmYWNlUmVmLCBjb25z
dCBNZWRpYVRpbWUmLCBjb25zdCBJbnRTaXplJiwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24g
PSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSwgYm9vbCBtaXJyb3JlZCA9IGZhbHNl
KTsKQEAgLTY3LDcgKzY3LDcgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8Q01TYW1wbGVCdWZm
ZXJSZWY+IGNyZWF0ZUNNU2FtcGxlQnVmZmVyKElPU3VyZmFjZVJlZiwgY29uc3QgTWVkaWFUaW1l
JiwgY29uc3QgSW50U2l6ZSYpOwogI2VuZGlmCiAKLSAgICBSZXRhaW5QdHI8Q01TYW1wbGVCdWZm
ZXJSZWY+IGNvbnZlcnRDTVNhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZiwgY29uc3QgSW50
U2l6ZSYpOworICAgIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gY29udmVydENNU2FtcGxl
QnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmLCBjb25zdCBJbnRTaXplJiwgY29uc3QgTWVkaWFUaW1l
KiA9IG51bGxwdHIpOwogICAgIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gY3JlYXRlQ01T
YW1wbGVCdWZmZXIoQ1ZQaXhlbEJ1ZmZlclJlZiwgY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgSW50
U2l6ZSYpOwogICAgIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gY3JlYXRlQ01TYW1wbGVC
dWZmZXIoQ0dJbWFnZVJlZiwgY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgSW50U2l6ZSYpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5z
ZmVyU2Vzc2lvblZULm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1h
Z2VUcmFuc2ZlclNlc3Npb25WVC5tbQppbmRleCBkNTczYjdmOTVhYWNhOGMyNDFlNWE1MWI5NDBi
YjMwN2ExMjdmOGVkLi5hYmI5OTIzOTNlNTc1M2IzNjllN2M1NTQ0NmExMWJkMDczN2FkOTRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5z
ZmVyU2Vzc2lvblZULm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2
L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQubW0KQEAgLTEwOCw3ICsxMDgsNyBAQCBSZXRhaW5QdHI8
Q1ZQaXhlbEJ1ZmZlclJlZj4gSW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y29udmVydFBpeGVsQnVm
ZmVyKENWUGl4ZWxCdQogICAgIHJldHVybiBvdXRwdXRCdWZmZXI7CiB9CiAKLVJldGFpblB0cjxD
TVNhbXBsZUJ1ZmZlclJlZj4gSW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y29udmVydENNU2FtcGxl
QnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmIHNvdXJjZUJ1ZmZlciwgY29uc3QgSW50U2l6ZSYgc2l6
ZSkKK1JldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gSW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6
Y29udmVydENNU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmIHNvdXJjZUJ1ZmZlciwgY29u
c3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgTWVkaWFUaW1lKiBzYW1wbGVUaW1lKQogewogICAgIGlm
ICghc291cmNlQnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE0MSw2ICsxNDEs
MTQgQEAgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBJbWFnZVRyYW5zZmVyU2Vzc2lvblZU
Ojpjb252ZXJ0Q01TYW1wbGVCdWZmZXIoQ01TYW0KICAgICAgICAgICAgIFJFTEVBU0VfTE9HKE1l
ZGlhLCAiSW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y29udmVydENNU2FtcGxlQnVmZmVyOiBDTVNh
bXBsZUJ1ZmZlckdldFNhbXBsZVRpbWluZ0luZm9BcnJheSBmYWlsZWQgd2l0aCBlcnJvciBjb2Rl
OiAlZCIsIHN0YXRpY19jYXN0PGludD4oc3RhdHVzKSk7CiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAgICAgfQorCisgICAgICAgIGlmIChzYW1wbGVUaW1lKSB7CisgICAgICAgICAg
ICBhdXRvIGNtVGltZSA9IFBBTDo6dG9DTVRpbWUoKnNhbXBsZVRpbWUpOworICAgICAgICAgICAg
Zm9yIChhdXRvJiB0aW1pbmcgOiB0aW1pbmdJbmZvQXJyYXkpIHsKKyAgICAgICAgICAgICAgICB0
aW1pbmcucHJlc2VudGF0aW9uVGltZVN0YW1wID0gY21UaW1lOworICAgICAgICAgICAgICAgIHRp
bWluZy5kZWNvZGVUaW1lU3RhbXAgPSBjbVRpbWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
ICAgICAgICAgdGltZWluZ0luZm9QdHIgPSB0aW1pbmdJbmZvQXJyYXkuZGF0YSgpOwogICAgIH0K
IApAQCAtMjg3LDkgKzI5NSw5IEBAIFJlZlB0cjxNZWRpYVNhbXBsZT4gSW1hZ2VUcmFuc2ZlclNl
c3Npb25WVDo6Y3JlYXRlTWVkaWFTYW1wbGUoQ0dJbWFnZVJlZiBpbWFnZSwKICAgICByZXR1cm4g
TWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGUoc2FtcGxlQnVmZmVyLmdldCgpLCByb3RhdGlvbiwg
bWlycm9yZWQpOwogfQogCi1SZWZQdHI8TWVkaWFTYW1wbGU+IEltYWdlVHJhbnNmZXJTZXNzaW9u
VlQ6OmNyZWF0ZU1lZGlhU2FtcGxlKENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlciwgY29uc3QgSW50
U2l6ZSYgc2l6ZSwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb24sIGJvb2wgbWly
cm9yZWQpCitSZWZQdHI8TWVkaWFTYW1wbGU+IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNyZWF0
ZU1lZGlhU2FtcGxlKENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlciwgY29uc3QgTWVkaWFUaW1lJiBz
YW1wbGVUaW1lLCBjb25zdCBJbnRTaXplJiBzaXplLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlv
biByb3RhdGlvbiwgYm9vbCBtaXJyb3JlZCkKIHsKLSAgICBhdXRvIHNhbXBsZUJ1ZmZlciA9IGNv
bnZlcnRDTVNhbXBsZUJ1ZmZlcihidWZmZXIsIHNpemUpOworICAgIGF1dG8gc2FtcGxlQnVmZmVy
ID0gY29udmVydENNU2FtcGxlQnVmZmVyKGJ1ZmZlciwgc2l6ZSwgJnNhbXBsZVRpbWUpOwogICAg
IGlmICghc2FtcGxlQnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL1JlcGxheUtpdENhcHR1
cmVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9SZXBs
YXlLaXRDYXB0dXJlU291cmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWVhNTM2OTBmMDA2MjQ0ZmE0MGY1ZTEx
NTAzMjcxNTU2ZjQwMWMyMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2lvcy9SZXBsYXlLaXRDYXB0dXJlU291cmNlLmgKQEAgLTAsMCArMSw4
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKKworI2luY2x1ZGUgIkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuaCIKKyNpbmNsdWRlICJU
aW1lci5oIgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFTUyBSUFNjcmVl
blJlY29yZGVyOworT0JKQ19DTEFTUyBXZWJDb3JlUmVwbGF5S2l0U2NyZWVuUmVjb3JkZXJIZWxw
ZXI7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVwbGF5S2l0Q2FwdHVyZVNvdXJj
ZSBmaW5hbCA6IHB1YmxpYyBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpDYXB0dXJlciwgcHVi
bGljIENhbk1ha2VXZWFrUHRyPFJlcGxheUtpdENhcHR1cmVTb3VyY2U+IHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgRXhwZWN0ZWQ8VW5pcXVlUmVmPERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OkNh
cHR1cmVyPiwgU3RyaW5nPiBjcmVhdGUoY29uc3QgU3RyaW5nJik7CisKKyAgICBSZXBsYXlLaXRD
YXB0dXJlU291cmNlKCk7CisgICAgdmlydHVhbCB+UmVwbGF5S2l0Q2FwdHVyZVNvdXJjZSgpOwor
CisgICAgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKTsKKworICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPENhcHR1cmVEZXZpY2U+IHNjcmVlbkNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKGNv
bnN0IFN0cmluZyYpOworICAgIHN0YXRpYyB2b2lkIHNjcmVlbkNhcHR1cmVEZXZpY2VzKFZlY3Rv
cjxDYXB0dXJlRGV2aWNlPiYpOworCisgICAgdm9pZCBjYXB0dXJlU3RhdGVEaWRDaGFuZ2UoKTsK
KworcHJpdmF0ZToKKworICAgIC8vIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OkNhcHR1cmVy
CisgICAgYm9vbCBzdGFydCgpIGZpbmFsOworICAgIHZvaWQgc3RvcCgpIGZpbmFsOworICAgIERp
c3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OkRpc3BsYXlGcmFtZVR5cGUgZ2VuZXJhdGVGcmFtZSgp
IGZpbmFsOworICAgIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgZGV2aWNlVHlwZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNjcmVlbjsgfQorICAg
IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RGlzcGxheVN1cmZhY2VUeXBlIHN1cmZhY2VU
eXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpE
aXNwbGF5U3VyZmFjZVR5cGU6Ok1vbml0b3I7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29u
ZmlndXJhdGlvbihjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmKSB7IH0KKyAgICB2
aXJ0dWFsIEludFNpemUgaW50cmluc2ljU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW50cmluc2lj
U2l6ZTsgfQorCisgICAgLy8gTG9nZ2VySGVscGVyCisgICAgY29uc3QgY2hhciogbG9nQ2xhc3NO
YW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlJlcGxheUtpdENhcHR1cmVTb3VyY2UiOyB9CisK
KyAgICB2b2lkIHNjcmVlblJlY29yZGVyRGlkT3V0cHV0VmlkZW9TYW1wbGUoUmV0YWluUHRyPENN
U2FtcGxlQnVmZmVyUmVmPiYmKTsKKyAgICB2b2lkIHN0YXJ0Q2FwdHVyZVdhdGNoZG9nVGltZXIo
KTsKKyAgICB2b2lkIHZlcmlmeUNhcHR1cmVJc0FjdGl2ZSgpOworCisgICAgUmV0YWluUHRyPENN
U2FtcGxlQnVmZmVyUmVmPiBtX2N1cnJlbnRGcmFtZTsKKyAgICBSZXRhaW5QdHI8UlBTY3JlZW5S
ZWNvcmRlcj4gbV9zY3JlZW5SZWNvcmRlcjsKKyAgICBSZXRhaW5QdHI8V2ViQ29yZVJlcGxheUtp
dFNjcmVlblJlY29yZGVySGVscGVyPiBtX3JlY29yZGVySGVscGVyOworCisgICAgVGltZXIgbV9j
YXB0dXJlV2F0Y2hkb2dUaW1lcjsKKyAgICB1aW50NjRfdCBtX2ZyYW1lQ291bnQgeyAwIH07Cisg
ICAgdWludDY0X3QgbV9sYXN0RnJhbWVDb3VudCB7IDAgfTsKKyAgICBJbnRTaXplIG1faW50cmlu
c2ljU2l6ZTsKKyAgICBib29sIG1faXNSdW5uaW5nIHsgZmFsc2UgfTsKKyAgICBib29sIG1faW50
ZXJydXB0ZWQgeyBmYWxzZSB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9SZXBsYXlLaXRD
YXB0dXJlU291cmNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9z
L1JlcGxheUtpdENhcHR1cmVTb3VyY2UubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWViMTYzYTUzMzI2Y2JlZmIz
MzAxMDMwMmRlOGJkYzE0NzlkZGI0ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9SZXBsYXlLaXRDYXB0dXJlU291cmNlLm1tCkBAIC0w
LDAgKzEsMjgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlcGxheUtpdENhcHR1cmVTb3VyY2Uu
aCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCisK
KyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgIlJlYWx0aW1lVmlkZW9VdGlsaXRpZXMuaCIK
KyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CisjaW1wb3J0IDx3dGYvVVVJRC5oPgorI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2Vy
Q29udmVyc2lvbi5oPgorCisjaW1wb3J0IDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KKyNp
bXBvcnQgPHBhbC9pb3MvUmVwbGF5S2l0U29mdExpbmsuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CitAaW50ZXJmYWNlIFdlYkNvcmVSZXBsYXlLaXRTY3JlZW5SZWNvcmRlckhlbHBlciA6
IE5TT2JqZWN0IHsKKyAgICBXZWFrUHRyPFJlcGxheUtpdENhcHR1cmVTb3VyY2U+IF9jYWxsYmFj
azsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ2FsbGJhY2s6KFJlcGxheUtpdENhcHR1
cmVTb3VyY2UqKWNhbGxiYWNrOworLSAodm9pZClkaXNjb25uZWN0OworLSAodm9pZClvYnNlcnZl
VmFsdWVGb3JLZXlQYXRoOmtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGlj
dGlvbmFyeSopY2hhbmdlIGNvbnRleHQ6KHZvaWQqKWNvbnRleHQ7CitAZW5kCisKK0BpbXBsZW1l
bnRhdGlvbiBXZWJDb3JlUmVwbGF5S2l0U2NyZWVuUmVjb3JkZXJIZWxwZXIKKy0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aENhbGxiYWNrOihSZXBsYXlLaXRDYXB0dXJlU291cmNlKiljYWxsYmFjawor
eworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1
cm4gc2VsZjsKKworICAgIF9jYWxsYmFjayA9IG1ha2VXZWFrUHRyKGNhbGxiYWNrKTsKKyAgICBb
W1BBTDo6Z2V0UlBTY3JlZW5SZWNvcmRlckNsYXNzKCkgc2hhcmVkUmVjb3JkZXJdIGFkZE9ic2Vy
dmVyOnNlbGYgZm9yS2V5UGF0aDpAInJlY29yZGluZyIgb3B0aW9uczpOU0tleVZhbHVlT2JzZXJ2
aW5nT3B0aW9uTmV3IGNvbnRleHQ6KHZvaWQgKiluaWxdOworCisgICAgcmV0dXJuIHNlbGY7Cit9
CisKKy0gKHZvaWQpZGlzY29ubmVjdAoreworICAgIF9jYWxsYmFjayA9IG51bGxwdHI7CisgICAg
W1tQQUw6OmdldFJQU2NyZWVuUmVjb3JkZXJDbGFzcygpIHNoYXJlZFJlY29yZGVyXSByZW1vdmVP
YnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJyZWNvcmRpbmciXTsKK30KKworLSAodm9pZClvYnNl
cnZlVmFsdWVGb3JLZXlQYXRoOmtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5T
RGljdGlvbmFyeSopY2hhbmdlIGNvbnRleHQ6KHZvaWQqKWNvbnRleHQKK3sKKyAgICBVTlVTRURf
UEFSQU0ob2JqZWN0KTsKKyAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CisKKyAgICBpZiAoIV9j
YWxsYmFjaykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWQgbmV3VmFsdWUgPSBbY2hhbmdlIHZh
bHVlRm9yS2V5Ok5TS2V5VmFsdWVDaGFuZ2VOZXdLZXldOworICAgIGJvb2wgd2lsbENoYW5nZSA9
IFtbY2hhbmdlIHZhbHVlRm9yS2V5Ok5TS2V5VmFsdWVDaGFuZ2VOb3RpZmljYXRpb25Jc1ByaW9y
S2V5XSBib29sVmFsdWVdOworCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgaWYgKF9j
YWxsYmFjay0+bG9nZ2VyUHRyKCkpIHsKKyAgICAgICAgYXV0byBpZGVudGlmaWVyID0gTG9nZ2Vy
OjpMb2dTaXRlSWRlbnRpZmllcigiUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZSIsICJvYnNlcnZlVmFs
dWVGb3JLZXlQYXRoIiwgX2NhbGxiYWNrLT5sb2dJZGVudGlmaWVyKCkpOworICAgICAgICBSZXRh
aW5QdHI8TlNTdHJpbmc+IHZhbHVlU3RyaW5nID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBp
bml0V2l0aEZvcm1hdDpAIiVAIiwgbmV3VmFsdWVdKTsKKyAgICAgICAgX2NhbGxiYWNrLT5sb2dn
ZXIoKS5sb2dBbHdheXMoX2NhbGxiYWNrLT5sb2dDaGFubmVsKCksIGlkZW50aWZpZXIsIHdpbGxD
aGFuZ2UgPyAid2lsbCIgOiAiZGlkIiwgIiBjaGFuZ2UgJyIsIFtrZXlQYXRoIFVURjhTdHJpbmdd
LCAiJyB0byAiLCBbdmFsdWVTdHJpbmcuZ2V0KCkgVVRGOFN0cmluZ10pOworICAgIH0KKyNlbmRp
ZgorCisgICAgaWYgKHdpbGxDaGFuZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChba2V5
UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJyZWNvcmRpbmciXSkKKyAgICAgICAgX2NhbGxiYWNrLT5j
YXB0dXJlU3RhdGVEaWRDaGFuZ2UoKTsKK30KK0BlbmQKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
Citib29sIFJlcGxheUtpdENhcHR1cmVTb3VyY2U6OmlzQXZhaWxhYmxlKCkKK3sKKyAgICByZXR1
cm4gW1BBTDo6Z2V0UlBTY3JlZW5SZWNvcmRlckNsYXNzKCkgc2hhcmVkUmVjb3JkZXJdLmlzQXZh
aWxhYmxlOworfQorCitFeHBlY3RlZDxVbmlxdWVSZWY8RGlzcGxheUNhcHR1cmVTb3VyY2VDb2Nv
YTo6Q2FwdHVyZXI+LCBTdHJpbmc+IFJlcGxheUtpdENhcHR1cmVTb3VyY2U6OmNyZWF0ZShjb25z
dCBTdHJpbmcmKQoreworICAgIGlmICghaXNBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKCJTY3JlZW4gY2FwdHVyZSB1bmF2YWlsYWJsZSJfcyk7CisKKyAgICByZXR1
cm4gVW5pcXVlUmVmPERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OkNhcHR1cmVyPihtYWtlVW5p
cXVlUmVmPFJlcGxheUtpdENhcHR1cmVTb3VyY2U+KCkpOworfQorCitSZXBsYXlLaXRDYXB0dXJl
U291cmNlOjpSZXBsYXlLaXRDYXB0dXJlU291cmNlKCkKKyAgICA6IG1fY2FwdHVyZVdhdGNoZG9n
VGltZXIoKnRoaXMsICZSZXBsYXlLaXRDYXB0dXJlU291cmNlOjp2ZXJpZnlDYXB0dXJlSXNBY3Rp
dmUpCit7Cit9CisKK1JlcGxheUtpdENhcHR1cmVTb3VyY2U6On5SZXBsYXlLaXRDYXB0dXJlU291
cmNlKCkKK3sKKyAgICBbbV9yZWNvcmRlckhlbHBlciBkaXNjb25uZWN0XTsKKyAgICBzdG9wKCk7
CisgICAgbV9jdXJyZW50RnJhbWUgPSBudWxscHRyOworfQorCitib29sIFJlcGxheUtpdENhcHR1
cmVTb3VyY2U6OnN0YXJ0KCkKK3sKKyAgICBBU1NFUlQoaXNBdmFpbGFibGUoKSk7CisKKyAgICBh
dXRvIGlkZW50aWZpZXIgPSBMT0dJREVOVElGSUVSOworICAgIEFMV0FZU19MT0dfSUYobG9nZ2Vy
UHRyKCksIGlkZW50aWZpZXIpOworCisgICAgYXV0byAqc2NyZWVuUmVjb3JkZXIgPSBbUEFMOjpn
ZXRSUFNjcmVlblJlY29yZGVyQ2xhc3MoKSBzaGFyZWRSZWNvcmRlcl07CisgICAgaWYgKHNjcmVl
blJlY29yZGVyLnJlY29yZGluZykKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBGSVhN
RTogQWRkIHN1cHBvcnQgZm9yIGNvbmN1cnJlbnQgYXVkaW8gY2FwdHVyZS4KKyAgICBbc2NyZWVu
UmVjb3JkZXIgc2V0TWljcm9waG9uZUVuYWJsZWQ6Tk9dOworCisgICAgaWYgKCFtX3JlY29yZGVy
SGVscGVyKQorICAgICAgICBtX3JlY29yZGVySGVscGVyID0gKFtbV2ViQ29yZVJlcGxheUtpdFNj
cmVlblJlY29yZGVySGVscGVyIGFsbG9jXSBpbml0V2l0aENhbGxiYWNrOnRoaXNdKTsKKworICAg
IGF1dG8gY2FwdHVyZUhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoW3RoaXMsIHdlYWtUaGlzID0gbWFr
ZVdlYWtQdHIoKnRoaXMpLCBpZGVudGlmaWVyXShDTVNhbXBsZUJ1ZmZlclJlZiBfTm9ubnVsbCBz
YW1wbGVCdWZmZXIsIFJQU2FtcGxlQnVmZmVyVHlwZSBidWZmZXJUeXBlLCBOU0Vycm9yICogX051
bGxhYmxlIGVycm9yKSB7CisKKyAgICAgICAgaWYgKGJ1ZmZlclR5cGUgIT0gUlBTYW1wbGVCdWZm
ZXJUeXBlVmlkZW8pCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgRVJST1JfTE9HX0lG
KGVycm9yICYmIGxvZ2dlclB0cigpLCBpZGVudGlmaWVyLCAic3RhcnRDYXB0dXJlV2l0aEhhbmRs
ZXIgZmFpbGVkICIsIFtlcnJvciBsb2NhbGl6ZWREZXNjcmlwdGlvbl0uVVRGOFN0cmluZyk7CisK
KyAgICAgICAgKyttX2ZyYW1lQ291bnQ7CisKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFt3ZWFrVGhpcywgc2FtcGxlQnVmZmVyID0gcmV0YWluUHRyKHNhbXBsZUJ1ZmZlcildKCkg
bXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICAgICAgd2Vha1RoaXMtPnNjcmVlblJlY29yZGVyRGlkT3V0cHV0Vmlk
ZW9TYW1wbGUoV1RGTW92ZShzYW1wbGVCdWZmZXIpKTsKKyAgICAgICAgfSk7CisgICAgfSk7CisK
KyAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKFt0aGlzLCB3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgaWRlbnRpZmllcl0oTlNFcnJvciAqIF9OdWxsYWJsZSBl
cnJvcikgeworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHdlYWtUaGlz
LCBlcnJvciA9IHJldGFpblB0cihlcnJvciksIGlkZW50aWZpZXJdKCkgbXV0YWJsZSB7CisgICAg
ICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICFlcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgICAgIEVSUk9SX0xPR19JRihsb2dnZXJQdHIoKSwgaWRlbnRpZmllciwgImNv
bXBsZXRpb25IYW5kbGVyIGZhaWxlZCAiLCBbZXJyb3IgbG9jYWxpemVkRGVzY3JpcHRpb25dLlVU
RjhTdHJpbmcpOworICAgICAgICAgICAgd2Vha1RoaXMtPnN0b3AoKTsKKyAgICAgICAgfSk7Cisg
ICAgfSk7CisKKyAgICBbc2NyZWVuUmVjb3JkZXIgc3RhcnRDYXB0dXJlV2l0aEhhbmRsZXI6Y2Fw
dHVyZUhhbmRsZXIuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXIuZ2V0
KCldOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgUmVwbGF5S2l0Q2FwdHVyZVNvdXJj
ZTo6c2NyZWVuUmVjb3JkZXJEaWRPdXRwdXRWaWRlb1NhbXBsZShSZXRhaW5QdHI8Q01TYW1wbGVC
dWZmZXJSZWY+JiYgc2FtcGxlQnVmZmVyKQoreworICAgIG1fY3VycmVudEZyYW1lID0gc2FtcGxl
QnVmZmVyLmdldCgpOworICAgIG1faW50cmluc2ljU2l6ZSA9IEludFNpemUoUEFMOjpDTVZpZGVv
Rm9ybWF0RGVzY3JpcHRpb25HZXRQcmVzZW50YXRpb25EaW1lbnNpb25zKFBBTDo6Q01TYW1wbGVC
dWZmZXJHZXRGb3JtYXREZXNjcmlwdGlvbihtX2N1cnJlbnRGcmFtZS5nZXQoKSksIHRydWUsIHRy
dWUpKTsKK30KKwordm9pZCBSZXBsYXlLaXRDYXB0dXJlU291cmNlOjpjYXB0dXJlU3RhdGVEaWRD
aGFuZ2UoKQoreworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgd2Vha1RoaXMg
PSBtYWtlV2Vha1B0cigqdGhpcyksIGlkZW50aWZpZXIgPSBMT0dJREVOVElGSUVSXSgpIG11dGFi
bGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGJvb2wgaXNSZWNvcmRpbmcgPSAhIVtbUEFMOjpnZXRSUFNjcmVlblJlY29yZGVyQ2xhc3Mo
KSBzaGFyZWRSZWNvcmRlcl0gaXNSZWNvcmRpbmddOworICAgICAgICBpZiAobV9pc1J1bm5pbmcg
PT0gKGlzUmVjb3JkaW5nICYmICFtX2ludGVycnVwdGVkKSkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICBtX2lzUnVubmluZyA9IGlzUmVjb3JkaW5nICYmICFtX2ludGVycnVwdGVkOwor
ICAgICAgICBBTFdBWVNfTE9HX0lGKGxvZ2dlclB0cigpLCBpZGVudGlmaWVyLCBtX2lzUnVubmlu
Zyk7CisgICAgICAgIGNhcHR1cmVySXNSdW5uaW5nQ2hhbmdlZChtX2lzUnVubmluZyk7CisgICAg
fSk7Cit9CisKK3ZvaWQgUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZTo6c3RvcCgpCit7CisgICAgYXV0
byBpZGVudGlmaWVyID0gTE9HSURFTlRJRklFUjsKKyAgICBBTFdBWVNfTE9HX0lGKGxvZ2dlclB0
cigpLCBpZGVudGlmaWVyKTsKKyAgICBtX2NhcHR1cmVXYXRjaGRvZ1RpbWVyLnN0b3AoKTsKKyAg
ICBtX2ludGVycnVwdGVkID0gZmFsc2U7CisgICAgbV9pc1J1bm5pbmcgPSBmYWxzZTsKKworICAg
IGF1dG8gKnNjcmVlblJlY29yZGVyID0gW1BBTDo6Z2V0UlBTY3JlZW5SZWNvcmRlckNsYXNzKCkg
c2hhcmVkUmVjb3JkZXJdOworICAgIGlmIChzY3JlZW5SZWNvcmRlci5yZWNvcmRpbmcpIHsKKyAg
ICAgICAgW3NjcmVlblJlY29yZGVyIHN0b3BDYXB0dXJlV2l0aEhhbmRsZXI6XihOU0Vycm9yICog
X051bGxhYmxlIGVycm9yKSB7CisgICAgICAgICAgICBFUlJPUl9MT0dfSUYoZXJyb3IgJiYgbG9n
Z2VyUHRyKCksIGlkZW50aWZpZXIsICJzdGFydENhcHR1cmVXaXRoSGFuZGxlciBmYWlsZWQgIiwg
W2Vycm9yIGxvY2FsaXplZERlc2NyaXB0aW9uXS5VVEY4U3RyaW5nKTsKKyAgICAgICAgfV07Cisg
ICAgfQorfQorCitEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpEaXNwbGF5RnJhbWVUeXBlIFJl
cGxheUtpdENhcHR1cmVTb3VyY2U6OmdlbmVyYXRlRnJhbWUoKQoreworICAgIHJldHVybiBtX2N1
cnJlbnRGcmFtZTsKK30KKwordm9pZCBSZXBsYXlLaXRDYXB0dXJlU291cmNlOjp2ZXJpZnlDYXB0
dXJlSXNBY3RpdmUoKQoreworICAgIEFTU0VSVChtX2lzUnVubmluZyB8fCBtX2ludGVycnVwdGVk
KTsKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBMT0dJREVOVElGSUVSOworICAgIGlmIChtX2xhc3RG
cmFtZUNvdW50ICE9IG1fZnJhbWVDb3VudCkgeworICAgICAgICBtX2xhc3RGcmFtZUNvdW50ID0g
bV9mcmFtZUNvdW50OworICAgICAgICBpZiAobV9pbnRlcnJ1cHRlZCkgeworICAgICAgICAgICAg
QUxXQVlTX0xPR19JRihsb2dnZXJQdHIoKSwgaWRlbnRpZmllciwgImZyYW1lIHJlY2VpdmVkIGFm
dGVyIGludGVycnVwdGlvbiwgdW5tdXRpbmciKTsKKyAgICAgICAgICAgIG1faW50ZXJydXB0ZWQg
PSBmYWxzZTsKKyAgICAgICAgICAgIGNhcHR1cmVTdGF0ZURpZENoYW5nZSgpOworICAgICAgICB9
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBTFdBWVNfTE9HX0lGKGxvZ2dlclB0cigp
LCBpZGVudGlmaWVyLCAibm8gZnJhbWUgcmVjZWl2ZWQgaW4gIiwgc3RhdGljX2Nhc3Q8aW50Piht
X2NhcHR1cmVXYXRjaGRvZ1RpbWVyLnJlcGVhdEludGVydmFsKCkudmFsdWUoKSksICIgc2Vjb25k
cywgbXV0aW5nIik7CisgICAgbV9pbnRlcnJ1cHRlZCA9IHRydWU7CisgICAgY2FwdHVyZVN0YXRl
RGlkQ2hhbmdlKCk7Cit9CisKK3ZvaWQgUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZTo6c3RhcnRDYXB0
dXJlV2F0Y2hkb2dUaW1lcigpCit7CisgICAgc3RhdGljIGNvbnN0ZXhwciBTZWNvbmRzIHZlcmlm
eUNhcHR1cmVJbnRlcnZhbCA9IDJfczsKKyAgICBpZiAobV9jYXB0dXJlV2F0Y2hkb2dUaW1lci5p
c0FjdGl2ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NhcHR1cmVXYXRjaGRvZ1RpbWVy
LnN0YXJ0UmVwZWF0aW5nKHZlcmlmeUNhcHR1cmVJbnRlcnZhbCk7CisgICAgbV9sYXN0RnJhbWVD
b3VudCA9IG1fZnJhbWVDb3VudDsKK30KKworc3RhdGljIFN0cmluZyBzY3JlZW5EZXZpY2VVVUlE
KCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzY3JlZW5JRCA9IGNyZWF0
ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKKyAgICByZXR1cm4gc2NyZWVuSUQ7Cit9CisKK3N0YXRp
YyBDYXB0dXJlRGV2aWNlJiBzY3JlZW5EZXZpY2UoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxDYXB0dXJlRGV2aWNlPiBkZXZpY2UgPSB7IHNjcmVlbkRldmljZVVVSUQoKSwgQ2FwdHVy
ZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuLCBtYWtlU3RyaW5nKCJTY3JlZW4gMSIpLCBlbXB0
eVN0cmluZygpLCB0cnVlIH07CisgICAgcmV0dXJuIGRldmljZTsKK30KKworc3RkOjpvcHRpb25h
bDxDYXB0dXJlRGV2aWNlPiBSZXBsYXlLaXRDYXB0dXJlU291cmNlOjpzY3JlZW5DYXB0dXJlRGV2
aWNlV2l0aFBlcnNpc3RlbnRJRChjb25zdCBTdHJpbmcmIGRpc3BsYXlJRCkKK3sKKyAgICBpZiAo
IWlzQXZhaWxhYmxlKCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAiUmVw
bGF5S2l0Q2FwdHVyZVNvdXJjZTo6c2NyZWVuQ2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQ6
IHNjcmVlbiBjYXB0dXJlIHVuYXZhaWxhYmxlIik7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgfQorCisgICAgaWYgKGRpc3BsYXlJRCAhPSBzY3JlZW5EZXZpY2VVVUlEKCkpIHsK
KyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAiUmVwbGF5S2l0Q2FwdHVyZVNvdXJj
ZTo6c2NyZWVuQ2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQ6IGludmFsaWQgZGlzcGxheSBJ
RCIpOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKworICAgIHJldHVybiBz
Y3JlZW5EZXZpY2UoKTsKK30KKwordm9pZCBSZXBsYXlLaXRDYXB0dXJlU291cmNlOjpzY3JlZW5D
YXB0dXJlRGV2aWNlcyhWZWN0b3I8Q2FwdHVyZURldmljZT4mIGRpc3BsYXlzKQoreworICAgIGlm
IChpc0F2YWlsYWJsZSgpKQorICAgICAgICBkaXNwbGF5cy5hcHBlbmQoc2NyZWVuRGV2aWNlKCkp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFf
U1RSRUFNKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NHRGlzcGxheVN0
cmVhbUNhcHR1cmVTb3VyY2UuY3BwCmluZGV4IDFiNWZhMTA2MDE0NmMyY2ZhMzMyMTEwOGZhOGVk
MDE1NzA0YjQ2OTMuLjUxNGI5NjM4MTBiMmU3MDU5YjQ1N2YxMTU5ZWUzNTg3ZjM3YzlkYmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR0Rpc3Bs
YXlTdHJlYW1DYXB0dXJlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZS5jcHAKQEAgLTcxLDkg
KzcxLDkgQEAgdm9pZCBDR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlOjpzdG9wKCkKICAgICBt
X2lzUnVubmluZyA9IGZhbHNlOwogfQogCi1EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6RGlzcGxh
eUZyYW1lVHlwZSBDR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlOjpnZW5lcmF0ZUZyYW1lKCkK
K0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OkRpc3BsYXlGcmFtZVR5cGUgQ0dEaXNwbGF5U3Ry
ZWFtQ2FwdHVyZVNvdXJjZTo6Z2VuZXJhdGVGcmFtZSgpCiB7Ci0gICAgcmV0dXJuIFJldGFpblB0
ciB7IG1fY3VycmVudEZyYW1lLmlvU3VyZmFjZSgpIH07CisgICAgcmV0dXJuIG1fY3VycmVudEZy
YW1lOwogfQogCiBib29sIENHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2U6OnN0YXJ0RGlzcGxh
eVN0cmVhbSgpCkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBDR0Rpc3BsYXlTdHJlYW1DYXB0dXJl
U291cmNlOjpkaXNwbGF5UmVjb25maWd1cmF0aW9uQ2FsbEJhY2soQ0dEaXJlY3REaXNwbGEKICAg
ICAgICAgcmVpbnRlcnByZXRfY2FzdDxDR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlICo+KHVz
ZXJJbmZvKS0+ZGlzcGxheVdhc1JlY29uZmlndXJlZChkaXNwbGF5LCBmbGFncyk7CiB9CiAKLXZv
aWQgQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6bmV3RnJhbWUoQ0dEaXNwbGF5U3RyZWFt
RnJhbWVTdGF0dXMgc3RhdHVzLCBEaXNwbGF5U3VyZmFjZSYmIG5ld0ZyYW1lKQordm9pZCBDR0Rp
c3BsYXlTdHJlYW1DYXB0dXJlU291cmNlOjpuZXdGcmFtZShDR0Rpc3BsYXlTdHJlYW1GcmFtZVN0
YXR1cyBzdGF0dXMsIFJldGFpblB0cjxJT1N1cmZhY2VSZWY+JiYgbmV3RnJhbWUpCiB7CiAgICAg
c3dpdGNoIChzdGF0dXMpIHsKICAgICBjYXNlIGtDR0Rpc3BsYXlTdHJlYW1GcmFtZVN0YXR1c0Zy
YW1lQ29tcGxldGU6CkBAIC0xNzEsNyArMTcxLDcgQEAgQ0dEaXNwbGF5U3RyZWFtRnJhbWVBdmFp
bGFibGVIYW5kbGVyIENHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2U6OmZyYW1lQXZhaWxhYmwK
ICAgICAgICAgaWYgKCFyZWN0cyB8fCAhY291bnQpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcywgc3RhdHVzLCBmcmFtZSA9
IERpc3BsYXlTdXJmYWNlIHsgZnJhbWVTdXJmYWNlIH1dKCkgbXV0YWJsZSB7CisgICAgICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMsIHN0YXR1cywgZnJhbWUgPSByZXRhaW5Q
dHIoZnJhbWVTdXJmYWNlKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgd2Vha1RoaXMtPm5ld0ZyYW1l
KHN0YXR1cywgV1RGTW92ZShmcmFtZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR0Rpc3BsYXlTdHJlYW1DYXB0
dXJlU291cmNlLmgKaW5kZXggYTE5MDM4ZGNhYWQ0YTFmYjgzMjU3ODA2OTU2YWQwNDUxMWNmMmM2
NC4uNWExMzE2NmJhNGYzZWNhZmE4YmU3NWU0NzMzNTgwMGI0OWUxZTM4NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NHRGlzcGxheVN0cmVhbUNh
cHR1cmVTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZS5oCkBAIC0yNyw4ICsyNyw3IEBACiAKICNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShNQUMpCiAKLSNpbmNsdWRlICJEaXNw
bGF5Q2FwdHVyZVNvdXJjZU1hYy5oIgotI2luY2x1ZGUgIklPU3VyZmFjZS5oIgorI2luY2x1ZGUg
IkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuaCIKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dE
aXNwbGF5Q29uZmlndXJhdGlvbi5oPgogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR0Rpc3BsYXlT
dHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvQmxvY2tQdHIuaD4KQEAgLTQwLDEwICszOSwxMCBAQCB0
eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZmZXJSZWY7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJj
ZSA6IHB1YmxpYyBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6Q2FwdHVyZXIsIHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxDR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlPiB7CitjbGFzcyBDR0Rpc3Bs
YXlTdHJlYW1DYXB0dXJlU291cmNlIDogcHVibGljIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6
OkNhcHR1cmVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNv
dXJjZT4gewogcHVibGljOgogICAgIGV4cGxpY2l0IENHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3Vy
Y2UoKSA9IGRlZmF1bHQ7Ci0gICAgfkNHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2UoKTsKKyAg
ICB2aXJ0dWFsIH5DR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlKCk7CiAKIHByb3RlY3RlZDoK
ICAgICB1c2luZyBGcmFtZUF2YWlsYWJsZUNhbGxiYWNrID0gdm9pZCAoXikoQ0dEaXNwbGF5U3Ry
ZWFtRnJhbWVTdGF0dXMsIHVpbnQ2NF90LCBJT1N1cmZhY2VSZWYsIENHRGlzcGxheVN0cmVhbVVw
ZGF0ZVJlZik7CkBAIC02MCw1MSArNTksMTkgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBz
dGF0aWMgdm9pZCBkaXNwbGF5UmVjb25maWd1cmF0aW9uQ2FsbEJhY2soQ0dEaXJlY3REaXNwbGF5
SUQsIENHRGlzcGxheUNoYW5nZVN1bW1hcnlGbGFncywgdm9pZCopOwogCi0gICAgLy8gRGlzcGxh
eUNhcHR1cmVTb3VyY2VNYWM6OkNhcHR1cmVyCisgICAgLy8gRGlzcGxheUNhcHR1cmVTb3VyY2VD
b2NvYTo6Q2FwdHVyZXIKICAgICBib29sIHN0YXJ0KCkgZmluYWw7CiAgICAgdm9pZCBzdG9wKCkg
ZmluYWw7Ci0gICAgRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OkRpc3BsYXlGcmFtZVR5cGUgZ2Vu
ZXJhdGVGcmFtZSgpIGZpbmFsOworICAgIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OkRpc3Bs
YXlGcmFtZVR5cGUgZ2VuZXJhdGVGcmFtZSgpIGZpbmFsOwogICAgIHZvaWQgY29tbWl0Q29uZmln
dXJhdGlvbihjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmKSBmaW5hbDsKIAogICAg
IHZvaWQgZGlzcGxheVdhc1JlY29uZmlndXJlZChDR0RpcmVjdERpc3BsYXlJRCwgQ0dEaXNwbGF5
Q2hhbmdlU3VtbWFyeUZsYWdzKTsKICAgICBib29sIHN0YXJ0RGlzcGxheVN0cmVhbSgpOwogICAg
IEZyYW1lQXZhaWxhYmxlQ2FsbGJhY2sgZnJhbWVBdmFpbGFibGVIYW5kbGVyKCk7CiAKLSAgICBj
bGFzcyBEaXNwbGF5U3VyZmFjZSB7Ci0gICAgcHVibGljOgotICAgICAgICBEaXNwbGF5U3VyZmFj
ZSgpID0gZGVmYXVsdDsKLSAgICAgICAgZXhwbGljaXQgRGlzcGxheVN1cmZhY2UoSU9TdXJmYWNl
UmVmIHN1cmZhY2UpCi0gICAgICAgICAgICA6IG1fc3VyZmFjZShzdXJmYWNlKQotICAgICAgICB7
Ci0gICAgICAgICAgICBpZiAobV9zdXJmYWNlKQotICAgICAgICAgICAgICAgIElPU3VyZmFjZUlu
Y3JlbWVudFVzZUNvdW50KG1fc3VyZmFjZS5nZXQoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICB+
RGlzcGxheVN1cmZhY2UoKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobV9zdXJmYWNlKQot
ICAgICAgICAgICAgICAgIElPU3VyZmFjZURlY3JlbWVudFVzZUNvdW50KG1fc3VyZmFjZS5nZXQo
KSk7Ci0gICAgICAgIH0KLQotICAgICAgICBEaXNwbGF5U3VyZmFjZSYgb3BlcmF0b3I9KElPU3Vy
ZmFjZVJlZiBzdXJmYWNlKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobV9zdXJmYWNlKQot
ICAgICAgICAgICAgICAgIElPU3VyZmFjZURlY3JlbWVudFVzZUNvdW50KG1fc3VyZmFjZS5nZXQo
KSk7Ci0gICAgICAgICAgICBpZiAoc3VyZmFjZSkKLSAgICAgICAgICAgICAgICBJT1N1cmZhY2VJ
bmNyZW1lbnRVc2VDb3VudChzdXJmYWNlKTsKLSAgICAgICAgICAgIG1fc3VyZmFjZSA9IHN1cmZh
Y2U7Ci0gICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgIH0KLQotICAgICAgICBJT1N1
cmZhY2VSZWYgaW9TdXJmYWNlKCkgY29uc3QgeyByZXR1cm4gbV9zdXJmYWNlLmdldCgpOyB9Ci0K
LSAgICBwcml2YXRlOgotICAgICAgICBSZXRhaW5QdHI8SU9TdXJmYWNlUmVmPiBtX3N1cmZhY2U7
Ci0gICAgfTsKLQotICAgIHZvaWQgbmV3RnJhbWUoQ0dEaXNwbGF5U3RyZWFtRnJhbWVTdGF0dXMs
IERpc3BsYXlTdXJmYWNlJiYpOwotCi0gICAgRGlzcGxheVN1cmZhY2UgbV9jdXJyZW50RnJhbWU7
CisgICAgdm9pZCBuZXdGcmFtZShDR0Rpc3BsYXlTdHJlYW1GcmFtZVN0YXR1cywgUmV0YWluUHRy
PElPU3VyZmFjZVJlZj4mJik7CisKKyAgICBSZXRhaW5QdHI8SU9TdXJmYWNlUmVmPiBtX2N1cnJl
bnRGcmFtZTsKICAgICBSZXRhaW5QdHI8Q0dEaXNwbGF5U3RyZWFtUmVmPiBtX2Rpc3BsYXlTdHJl
YW07CiAgICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4gbV9jYXB0dXJlUXVldWU7CiAg
ICAgQmxvY2tQdHI8dm9pZChDR0Rpc3BsYXlTdHJlYW1GcmFtZVN0YXR1cywgdWludDY0X3QsIElP
U3VyZmFjZVJlZiwgQ0dEaXNwbGF5U3RyZWFtVXBkYXRlUmVmKT4gbV9mcmFtZUF2YWlsYWJsZUhh
bmRsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3Vy
Y2UuaAppbmRleCBlMTYwNDQwNzVkYjQyOWM3YzA2NTE4MzVjYTgzM2Y1OWIzZGJjYjQ2Li5lYjFi
Zjc5M2RhMTNiMGY2ZTVmZjBhYjE1ZjIyMjYwMzdjNTg1YzBkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2Fw
dHVyZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9DR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlLmgKQEAgLTQxLDcgKzQxLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJl
U291cmNlIGZpbmFsIDogcHVibGljIENHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2UgewogcHVi
bGljOgotICAgIHN0YXRpYyBFeHBlY3RlZDxVbmlxdWVSZWY8RGlzcGxheUNhcHR1cmVTb3VyY2VN
YWM6OkNhcHR1cmVyPiwgU3RyaW5nPiBjcmVhdGUoY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGlj
IEV4cGVjdGVkPFVuaXF1ZVJlZjxEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpDYXB0dXJlcj4s
IFN0cmluZz4gY3JlYXRlKGNvbnN0IFN0cmluZyYpOwogCiAgICAgZXhwbGljaXQgQ0dEaXNwbGF5
U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZSh1aW50MzJfdCk7CiAgICAgfkNHRGlzcGxheVN0cmVh
bVNjcmVlbkNhcHR1cmVTb3VyY2UoKSA9IGRlZmF1bHQ7CkBAIC01MSw3ICs1MSw3IEBAIHB1Ymxp
YzoKIAogcHJpdmF0ZToKIAotICAgIC8vIERpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpDYXB0dXJl
cgorICAgIC8vIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OkNhcHR1cmVyCiAgICAgQ2FwdHVy
ZURldmljZTo6RGV2aWNlVHlwZSBkZXZpY2VUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gQ2Fw
dHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuOyB9CiAgICAgUmVhbHRpbWVNZWRpYVNvdXJj
ZVNldHRpbmdzOjpEaXNwbGF5U3VyZmFjZVR5cGUgc3VyZmFjZVR5cGUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkRpc3BsYXlTdXJmYWNlVHlwZTo6
TW9uaXRvcjsgfQogICAgIEludFNpemUgaW50cmluc2ljU2l6ZSgpIGNvbnN0IGZpbmFsOwpAQCAt
NjMsMzggKzYzLDYgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8Q0dEaXNwbGF5U3RyZWFtUmVm
PiBjcmVhdGVEaXNwbGF5U3RyZWFtKEZyYW1lQXZhaWxhYmxlQ2FsbGJhY2ssIGRpc3BhdGNoX3F1
ZXVlX3QpIGZpbmFsOwogICAgIGJvb2wgY2hlY2tEaXNwbGF5U3RyZWFtKCkgZmluYWw7CiAKLSAg
ICBjbGFzcyBEaXNwbGF5U3VyZmFjZSB7Ci0gICAgcHVibGljOgotICAgICAgICBEaXNwbGF5U3Vy
ZmFjZSgpID0gZGVmYXVsdDsKLSAgICAgICAgZXhwbGljaXQgRGlzcGxheVN1cmZhY2UoSU9TdXJm
YWNlUmVmIHN1cmZhY2UpCi0gICAgICAgICAgICA6IG1fc3VyZmFjZShzdXJmYWNlKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBpZiAobV9zdXJmYWNlKQotICAgICAgICAgICAgICAgIElPU3VyZmFj
ZUluY3JlbWVudFVzZUNvdW50KG1fc3VyZmFjZS5nZXQoKSk7Ci0gICAgICAgIH0KLQotICAgICAg
ICB+RGlzcGxheVN1cmZhY2UoKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobV9zdXJmYWNl
KQotICAgICAgICAgICAgICAgIElPU3VyZmFjZURlY3JlbWVudFVzZUNvdW50KG1fc3VyZmFjZS5n
ZXQoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBEaXNwbGF5U3VyZmFjZSYgb3BlcmF0b3I9KElP
U3VyZmFjZVJlZiBzdXJmYWNlKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobV9zdXJmYWNl
KQotICAgICAgICAgICAgICAgIElPU3VyZmFjZURlY3JlbWVudFVzZUNvdW50KG1fc3VyZmFjZS5n
ZXQoKSk7Ci0gICAgICAgICAgICBpZiAoc3VyZmFjZSkKLSAgICAgICAgICAgICAgICBJT1N1cmZh
Y2VJbmNyZW1lbnRVc2VDb3VudChzdXJmYWNlKTsKLSAgICAgICAgICAgIG1fc3VyZmFjZSA9IHN1
cmZhY2U7Ci0gICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgIH0KLQotICAgICAgICBJ
T1N1cmZhY2VSZWYgaW9TdXJmYWNlKCkgY29uc3QgeyByZXR1cm4gbV9zdXJmYWNlLmdldCgpOyB9
Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBSZXRhaW5QdHI8SU9TdXJmYWNlUmVmPiBtX3N1cmZh
Y2U7Ci0gICAgfTsKLQogICAgIFJldGFpblB0cjxDR0Rpc3BsYXlTdHJlYW1SZWY+IG1fZGlzcGxh
eVN0cmVhbTsKIAogICAgIHVpbnQzMl90IG1fZGlzcGxheUlEIHsgMCB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NHRGlzcGxheVN0cmVhbVNj
cmVlbkNhcHR1cmVTb3VyY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZS5tbQppbmRleCBiN2M3NDVk
ZGRmMTNkNWI3ZjYzNmFlOWVlYjRiNWM4MjQ4NDQwZTM2Li45YmRhNzI0ZDUzNjk5ZTdiZWU4NDQx
N2JlYTk5MTk5MDc5NWI5OTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFt
U2NyZWVuQ2FwdHVyZVNvdXJjZS5tbQpAQCAtNzUsNyArNzUsNyBAQCBzdGF0aWMgc3RkOjpvcHRp
b25hbDxDR0RpcmVjdERpc3BsYXlJRD4gdXBkYXRlRGlzcGxheUlEKENHRGlyZWN0RGlzcGxheUlE
IGRpc3BsYQogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLUV4cGVjdGVkPFVuaXF1ZVJl
ZjxEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6Q2FwdHVyZXI+LCBTdHJpbmc+IENHRGlzcGxheVN0
cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2U6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGRldmljZUlEKQor
RXhwZWN0ZWQ8VW5pcXVlUmVmPERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OkNhcHR1cmVyPiwg
U3RyaW5nPiBDR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlOjpjcmVhdGUoY29uc3Qg
U3RyaW5nJiBkZXZpY2VJRCkKIHsKICAgICBhdXRvIGRpc3BsYXlJRCA9IHBhcnNlSW50ZWdlcjx1
aW50MzJfdD4oZGV2aWNlSUQpOwogICAgIGlmICghZGlzcGxheUlEKQpAQCAtODUsNyArODUsNyBA
QCBFeHBlY3RlZDxVbmlxdWVSZWY8RGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OkNhcHR1cmVyPiwg
U3RyaW5nPiBDR0Rpc3BsYXlTdHJlYW1TYwogICAgIGlmICghYWN0dWFsRGlzcGxheUlEKQogICAg
ICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIkludmFsaWQgZGlzcGxheSBJRCJfcyk7CiAKLSAg
ICByZXR1cm4gVW5pcXVlUmVmPERpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpDYXB0dXJlcj4obWFr
ZVVuaXF1ZVJlZjxDR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlPihhY3R1YWxEaXNw
bGF5SUQudmFsdWUoKSkpOworICAgIHJldHVybiBVbmlxdWVSZWY8RGlzcGxheUNhcHR1cmVTb3Vy
Y2VDb2NvYTo6Q2FwdHVyZXI+KG1ha2VVbmlxdWVSZWY8Q0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2Fw
dHVyZVNvdXJjZT4oYWN0dWFsRGlzcGxheUlELnZhbHVlKCkpKTsKIH0KIAogQ0dEaXNwbGF5U3Ry
ZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZTo6Q0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJj
ZSh1aW50MzJfdCBkaXNwbGF5SUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVNYW5hZ2VyQ29jb2EuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlTWFuYWdlckNv
Y29hLmNwcAppbmRleCA4ODU1NGJhYjRjMjAxYjQyM2YyNTExYzIyNTVkMjNkODk0OWIyYmVjLi40
NGZjNTI1NTMxOWFlZTczZTQyYjkyMTFjZmYxYWFjZTE4NjFiYWNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVNYW5hZ2Vy
Q29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9E
aXNwbGF5Q2FwdHVyZU1hbmFnZXJDb2NvYS5jcHAKQEAgLTM0LDEwICszNCwxMSBAQAogCiAjaWYg
UExBVEZPUk0oTUFDKQogI2luY2x1ZGUgIkNHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3Vy
Y2UuaCIKLSNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dEaXJlY3REaXNwbGF5Lmg+CiAjZW5kaWYK
IAotI2luY2x1ZGUgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKKyNpbmNsdWRlICJSZXBsYXlLaXRDYXB0dXJlU291cmNlLmgiCisjZW5kaWYKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC02MSw2ICs2Miw4IEBAIHZvaWQgRGlzcGxheUNhcHR1cmVNYW5h
Z2VyQ29jb2E6OnVwZGF0ZURpc3BsYXlDYXB0dXJlRGV2aWNlcygpCiB7CiAjaWYgUExBVEZPUk0o
TUFDKQogICAgIENHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2U6OnNjcmVlbkNhcHR1
cmVEZXZpY2VzKG1fZGV2aWNlcyk7CisjZWxzZQorICAgIFJlcGxheUtpdENhcHR1cmVTb3VyY2U6
OnNjcmVlbkNhcHR1cmVEZXZpY2VzKG1fZGV2aWNlcyk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJl
U291cmNlQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBlNmI4ZWUxODA2MDFl
MjViZmFlYjRiMWRjMWY5YTcyZWY5ZDU1Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5j
cHAKQEAgLTAsMCArMSwzMTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEaXNwbGF5Q2Fw
dHVyZVNvdXJjZUNvY29hLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9S
TShDT0NPQSkKKworI2luY2x1ZGUgIkNHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2Uu
aCIKKyNpbmNsdWRlICJJbWFnZVRyYW5zZmVyU2Vzc2lvblZULmgiCisjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgorI2luY2x1ZGUgIk1lZGlhU2FtcGxlQVZGT2JqQy5oIgorI2luY2x1ZGUgIlBpeGVsQnVm
ZmVyQ29uZm9ybWVyQ1YuaCIKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlLmgiCisjaW5j
bHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIgorI2luY2x1ZGUgIlJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlJlYWx0aW1lVmlkZW9VdGlsaXRpZXMuaCIK
KyNpbmNsdWRlICJSZW1vdGVWaWRlb1NhbXBsZS5oIgorI2luY2x1ZGUgIlJlcGxheUtpdENhcHR1
cmVTb3VyY2UuaCIKKyNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgPENvcmVNZWRpYS9DTVN5
bmMuaD4KKyNpbmNsdWRlIDxJT1N1cmZhY2UvSU9TdXJmYWNlUmVmLmg+CisjaW5jbHVkZSA8bWFj
aC9tYWNoX3RpbWUuaD4KKyNpbmNsdWRlIDxwYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91
bmRhdGlvbi5oPgorI2luY2x1ZGUgPHBhbC9zcGkvY2YvQ29yZUF1ZGlvU1BJLmg+CisjaW5jbHVk
ZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KKyNpbmNsdWRlIDxwYWwvc3BpL2NvY29h
L0lPU3VyZmFjZVNQSS5oPgorI2luY2x1ZGUgPHN5cy90aW1lLmg+CisjaW5jbHVkZSA8d3RmL01h
aW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworI2luY2x1ZGUg
IkNvcmVWaWRlb1NvZnRMaW5rLmgiCisjaW5jbHVkZSA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5r
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ2FwdHVyZVNvdXJjZU9yRXJyb3IgRGlzcGxh
eUNhcHR1cmVTb3VyY2VDb2NvYTo6Y3JlYXRlKGNvbnN0IENhcHR1cmVEZXZpY2UmIGRldmljZSwg
Y29uc3QgTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMpCit7CisgICAgc3dpdGNoIChkZXZp
Y2UudHlwZSgpKSB7CisgICAgY2FzZSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW46
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAgICAgcmV0dXJuIGNyZWF0ZShSZXBsYXlL
aXRDYXB0dXJlU291cmNlOjpjcmVhdGUoZGV2aWNlLnBlcnNpc3RlbnRJZCgpKSwgZGV2aWNlLCBj
b25zdHJhaW50cyk7CisjZWxzZQorICAgICAgICByZXR1cm4gY3JlYXRlKENHRGlzcGxheVN0cmVh
bVNjcmVlbkNhcHR1cmVTb3VyY2U6OmNyZWF0ZShkZXZpY2UucGVyc2lzdGVudElkKCkpLCBkZXZp
Y2UsIGNvbnN0cmFpbnRzKTsKKyNlbmRpZgorICAgIGNhc2UgQ2FwdHVyZURldmljZTo6RGV2aWNl
VHlwZTo6V2luZG93OgorICAgIGNhc2UgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6TWljcm9w
aG9uZToKKyAgICBjYXNlIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNwZWFrZXI6CisgICAg
Y2FzZSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpDYW1lcmE6CisgICAgY2FzZSBDYXB0dXJl
RGV2aWNlOjpEZXZpY2VUeXBlOjpVbmtub3duOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIHsgfTsKK30KKworQ2FwdHVy
ZVNvdXJjZU9yRXJyb3IgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Y3JlYXRlKEV4cGVjdGVk
PFVuaXF1ZVJlZjxDYXB0dXJlcj4sIFN0cmluZz4mJiBjYXB0dXJlciwgY29uc3QgQ2FwdHVyZURl
dmljZSYgZGV2aWNlLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cykKK3sKKyAg
ICBpZiAoIWNhcHR1cmVyLmhhc192YWx1ZSgpKQorICAgICAgICByZXR1cm4gQ2FwdHVyZVNvdXJj
ZU9yRXJyb3IgeyBXVEZNb3ZlKGNhcHR1cmVyLmVycm9yKCkpIH07CisKKyAgICBhdXRvIHNvdXJj
ZSA9IGFkb3B0UmVmKCpuZXcgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYShXVEZNb3ZlKGNhcHR1
cmVyLnZhbHVlKCkpLCBTdHJpbmcgeyBkZXZpY2UubGFiZWwoKSB9KSk7CisgICAgaWYgKGNvbnN0
cmFpbnRzKSB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gc291cmNlLT5hcHBseUNvbnN0cmFpbnRz
KCpjb25zdHJhaW50cyk7CisgICAgICAgIGlmIChyZXN1bHQpCisgICAgICAgICAgICByZXR1cm4g
V1RGTW92ZShyZXN1bHQudmFsdWUoKS5iYWRDb25zdHJhaW50KTsKKyAgICB9CisKKyAgICByZXR1
cm4gQ2FwdHVyZVNvdXJjZU9yRXJyb3IoV1RGTW92ZShzb3VyY2UpKTsKK30KKworRGlzcGxheUNh
cHR1cmVTb3VyY2VDb2NvYTo6RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYShVbmlxdWVSZWY8Q2Fw
dHVyZXI+JiYgY2FwdHVyZXIsIFN0cmluZyYmIG5hbWUpCisgICAgOiBSZWFsdGltZU1lZGlhU291
cmNlKFR5cGU6OlZpZGVvLCBXVEZNb3ZlKG5hbWUpKQorICAgICwgbV9jYXB0dXJlcihXVEZNb3Zl
KGNhcHR1cmVyKSkKKyAgICAsIG1fdGltZXIoUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmRGlz
cGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6ZW1pdEZyYW1lKQoreworICAgIGlmIChsb2dnZXJQdHIo
KSkKKyAgICAgICAgbV9jYXB0dXJlci0+c2V0TG9nZ2VyKGxvZ2dlcigpLCBsb2dJZGVudGlmaWVy
KCkpOworfQorCitEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjp+RGlzcGxheUNhcHR1cmVTb3Vy
Y2VDb2NvYSgpCit7Cit9CisKK2NvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMm
IERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OmNhcGFiaWxpdGllcygpCit7CisgICAgaWYgKCFt
X2NhcGFiaWxpdGllcykgeworICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVz
IGNhcGFiaWxpdGllcyhzZXR0aW5ncygpLnN1cHBvcnRlZENvbnN0cmFpbnRzKCkpOworCisgICAg
ICAgIGF1dG8gaW50cmluc2ljU2l6ZSA9IG1fY2FwdHVyZXItPmludHJpbnNpY1NpemUoKTsKKyAg
ICAgICAgY2FwYWJpbGl0aWVzLnNldFdpZHRoKENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UoMSwgaW50
cmluc2ljU2l6ZS53aWR0aCgpKSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5zZXRIZWlnaHQoQ2Fw
YWJpbGl0eVZhbHVlT3JSYW5nZSgxLCBpbnRyaW5zaWNTaXplLmhlaWdodCgpKSk7CisgICAgICAg
IGNhcGFiaWxpdGllcy5zZXRGcmFtZVJhdGUoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSguMDEsIDMw
LjApKTsKKworICAgICAgICBtX2NhcGFiaWxpdGllcyA9IFdURk1vdmUoY2FwYWJpbGl0aWVzKTsK
KyAgICB9CisgICAgcmV0dXJuIG1fY2FwYWJpbGl0aWVzLnZhbHVlKCk7Cit9CisKK2NvbnN0IFJl
YWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6c2V0
dGluZ3MoKQoreworICAgIGlmICghbV9jdXJyZW50U2V0dGluZ3MpIHsKKyAgICAgICAgUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzIHNldHRpbmdzOworICAgICAgICBzZXR0aW5ncy5zZXRGcmFt
ZVJhdGUoZnJhbWVSYXRlKCkpOworCisgICAgICAgIGF1dG8gc2l6ZSA9IHRoaXMtPnNpemUoKTsK
KyAgICAgICAgc2V0dGluZ3Muc2V0V2lkdGgoc2l6ZS53aWR0aCgpKTsKKyAgICAgICAgc2V0dGlu
Z3Muc2V0SGVpZ2h0KHNpemUuaGVpZ2h0KCkpOworCisgICAgICAgIHNldHRpbmdzLnNldERpc3Bs
YXlTdXJmYWNlKG1fY2FwdHVyZXItPnN1cmZhY2VUeXBlKCkpOworICAgICAgICBzZXR0aW5ncy5z
ZXRMb2dpY2FsU3VyZmFjZShmYWxzZSk7CisKKyAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN1
cHBvcnRlZENvbnN0cmFpbnRzIHN1cHBvcnRlZENvbnN0cmFpbnRzOworICAgICAgICBzdXBwb3J0
ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c0ZyYW1lUmF0ZSh0cnVlKTsKKyAgICAgICAgc3VwcG9y
dGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNXaWR0aCh0cnVlKTsKKyAgICAgICAgc3VwcG9ydGVk
Q29uc3RyYWludHMuc2V0U3VwcG9ydHNIZWlnaHQodHJ1ZSk7CisgICAgICAgIHN1cHBvcnRlZENv
bnN0cmFpbnRzLnNldFN1cHBvcnRzRGlzcGxheVN1cmZhY2UodHJ1ZSk7CisgICAgICAgIHN1cHBv
cnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzTG9naWNhbFN1cmZhY2UodHJ1ZSk7CisKKyAgICAg
ICAgc2V0dGluZ3Muc2V0U3VwcG9ydGVkQ29uc3RyYWludHMoc3VwcG9ydGVkQ29uc3RyYWludHMp
OworCisgICAgICAgIG1fY3VycmVudFNldHRpbmdzID0gV1RGTW92ZShzZXR0aW5ncyk7CisgICAg
fQorICAgIHJldHVybiBtX2N1cnJlbnRTZXR0aW5ncy52YWx1ZSgpOworfQorCit2b2lkIERpc3Bs
YXlDYXB0dXJlU291cmNlQ29jb2E6OnNldHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNldDxSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc+IHNldHRpbmdzKQoreworICAgIGlmIChzZXR0aW5n
cy5jb250YWlucyhSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OkZyYW1lUmF0ZSkg
JiYgbV90aW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3RpbWVyLnN0YXJ0UmVwZWF0aW5nKDFf
cyAvIGZyYW1lUmF0ZSgpKTsKKworICAgIG1fY3VycmVudFNldHRpbmdzID0geyB9OworfQorCit2
b2lkIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCit7Cisg
ICAgbV9zdGFydFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKKyAgICBtX3RpbWVyLnN0YXJ0
UmVwZWF0aW5nKDFfcyAvIGZyYW1lUmF0ZSgpKTsKKworICAgIGlmICghbV9jYXB0dXJlci0+c3Rh
cnQoKSkKKyAgICAgICAgY2FwdHVyZUZhaWxlZCgpOworfQorCit2b2lkIERpc3BsYXlDYXB0dXJl
U291cmNlQ29jb2E6OnN0b3BQcm9kdWNpbmdEYXRhKCkKK3sKKyAgICBtX3RpbWVyLnN0b3AoKTsK
KyAgICBtX2VsYXBzZWRUaW1lICs9IE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV9zdGFydFRpbWU7
CisgICAgbV9zdGFydFRpbWUgPSBNb25vdG9uaWNUaW1lOjpuYW4oKTsKKworICAgIG1fY2FwdHVy
ZXItPnN0b3AoKTsKK30KKworU2Vjb25kcyBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjplbGFw
c2VkVGltZSgpCit7CisgICAgaWYgKHN0ZDo6aXNuYW4obV9zdGFydFRpbWUpKQorICAgICAgICBy
ZXR1cm4gbV9lbGFwc2VkVGltZTsKKworICAgIHJldHVybiBtX2VsYXBzZWRUaW1lICsgKE1vbm90
b25pY1RpbWU6Om5vdygpIC0gbV9zdGFydFRpbWUpOworfQorCisvLyBXZSBrZWVwIHRoZSBhc3Bl
Y3QgcmF0aW8gb2YgdGhlIGludHJpbnNpYyBzaXplIGZvciB0aGUgZnJhbWUgc2l6ZSBhcyBnZXRE
aXNwbGF5TWVkaWEgYWxsb3dzIG1heCBjb25zdHJhaW50cyBvbmx5Lgordm9pZCBEaXNwbGF5Q2Fw
dHVyZVNvdXJjZUNvY29hOjp1cGRhdGVGcmFtZVNpemUoKQoreworICAgIGF1dG8gaW50cmluc2lj
U2l6ZSA9IHRoaXMtPmludHJpbnNpY1NpemUoKTsKKworICAgIGF1dG8gZnJhbWVTaXplID0gc2l6
ZSgpOworICAgIGlmICghZnJhbWVTaXplLmhlaWdodCgpKQorICAgICAgICBmcmFtZVNpemUuc2V0
SGVpZ2h0KGludHJpbnNpY1NpemUuaGVpZ2h0KCkpOworICAgIGlmICghZnJhbWVTaXplLndpZHRo
KCkpCisgICAgICAgIGZyYW1lU2l6ZS5zZXRXaWR0aChpbnRyaW5zaWNTaXplLndpZHRoKCkpOwor
CisgICAgYXV0byBtYXhIZWlnaHQgPSBzdGQ6Om1pbihmcmFtZVNpemUuaGVpZ2h0KCksIGludHJp
bnNpY1NpemUuaGVpZ2h0KCkpOworICAgIGF1dG8gbWF4V2lkdGggPSBzdGQ6Om1pbihmcmFtZVNp
emUud2lkdGgoKSwgaW50cmluc2ljU2l6ZS53aWR0aCgpKTsKKworICAgIGF1dG8gaGVpZ2h0Rm9y
TWF4V2lkdGggPSBtYXhXaWR0aCAqIGludHJpbnNpY1NpemUuaGVpZ2h0KCkgLyBpbnRyaW5zaWNT
aXplLndpZHRoKCk7CisgICAgYXV0byB3aWR0aEZvck1heEhlaWdodCA9IG1heEhlaWdodCAqIGlu
dHJpbnNpY1NpemUud2lkdGgoKSAvIGludHJpbnNpY1NpemUuaGVpZ2h0KCk7CisKKyAgICBpZiAo
aGVpZ2h0Rm9yTWF4V2lkdGggPD0gbWF4SGVpZ2h0KSB7CisgICAgICAgIHNldFNpemUoeyBtYXhX
aWR0aCwgaGVpZ2h0Rm9yTWF4V2lkdGggfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
aWYgKHdpZHRoRm9yTWF4SGVpZ2h0IDw9IG1heFdpZHRoKSB7CisgICAgICAgIHNldFNpemUoeyB3
aWR0aEZvck1heEhlaWdodCwgbWF4SGVpZ2h0IH0pOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIHNldFNpemUoaW50cmluc2ljU2l6ZSk7Cit9CisKK3ZvaWQgRGlzcGxheUNhcHR1cmVTb3Vy
Y2VDb2NvYTo6ZW1pdEZyYW1lKCkKK3sKKyAgICBpZiAobXV0ZWQoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgaWYgKCFtX2ltYWdlVHJhbnNmZXJTZXNzaW9uKQorICAgICAgICBtX2ltYWdlVHJh
bnNmZXJTZXNzaW9uID0gSW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y3JlYXRlKHByZWZlcmVkUGl4
ZWxCdWZmZXJGb3JtYXQoKSk7CisKKyAgICBhdXRvIHNhbXBsZVRpbWUgPSBNZWRpYVRpbWU6OmNy
ZWF0ZVdpdGhEb3VibGUoKGVsYXBzZWRUaW1lKCkgKyAxMDBfbXMpLnNlY29uZHMoKSk7CisKKyAg
ICBhdXRvIGZyYW1lID0gbV9jYXB0dXJlci0+Z2VuZXJhdGVGcmFtZSgpOworICAgIGF1dG8gaW1h
Z2VTaXplID0gV1RGOjpzd2l0Y2hPbihmcmFtZSwKKyAgICAgICAgW10oUmV0YWluUHRyPElPU3Vy
ZmFjZVJlZj4gc3VyZmFjZSkgLT4gSW50U2l6ZSB7CisgICAgICAgICAgICBpZiAoIXN1cmZhY2Up
CisgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKKworICAgICAgICAgICAgcmV0dXJuIEludFNp
emUoSU9TdXJmYWNlR2V0V2lkdGgoc3VyZmFjZS5nZXQoKSksIElPU3VyZmFjZUdldEhlaWdodChz
dXJmYWNlLmdldCgpKSk7CisgICAgICAgIH0sCisgICAgICAgIFtdKFJlZlB0cjxOYXRpdmVJbWFn
ZT4gaW1hZ2UpIC0+IEludFNpemUgeworICAgICAgICAgICAgaWYgKCFpbWFnZSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4geyB9OworCisgICAgICAgICAgICByZXR1cm4gaW1hZ2UtPnNpemUoKTsK
KyAgICAgICAgfSwKKyAgICAgICAgW10oUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBzYW1w
bGUpIC0+IEludFNpemUgeworICAgICAgICAgICAgaWYgKCFzYW1wbGUpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHsgfTsKKworICAgICAgICAgICAgQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3Jt
YXREZXNjcmlwdGlvbiA9IFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRGb3JtYXREZXNjcmlwdGlvbihz
YW1wbGUuZ2V0KCkpOworICAgICAgICAgICAgaWYgKFBBTDo6Q01Gb3JtYXREZXNjcmlwdGlvbkdl
dE1lZGlhVHlwZShmb3JtYXREZXNjcmlwdGlvbikgIT0ga0NNTWVkaWFUeXBlX1ZpZGVvKQorICAg
ICAgICAgICAgICAgIHJldHVybiBJbnRTaXplKCk7CisKKyAgICAgICAgICAgIHJldHVybiBJbnRT
aXplKFBBTDo6Q01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uR2V0UHJlc2VudGF0aW9uRGltZW5zaW9u
cyhmb3JtYXREZXNjcmlwdGlvbiwgdHJ1ZSwgdHJ1ZSkpOworICAgICAgICB9CisgICAgKTsKKwor
ICAgIGlmIChpbWFnZVNpemUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo
aW50cmluc2ljU2l6ZSgpICE9IGltYWdlU2l6ZSkgeworICAgICAgICBzZXRJbnRyaW5zaWNTaXpl
KGltYWdlU2l6ZSk7CisgICAgICAgIHVwZGF0ZUZyYW1lU2l6ZSgpOworICAgIH0KKworICAgIGF1
dG8gc2FtcGxlID0gV1RGOjpzd2l0Y2hPbihmcmFtZSwKKyAgICAgICAgW3RoaXMsIHNhbXBsZVRp
bWVdKFJldGFpblB0cjxJT1N1cmZhY2VSZWY+IHN1cmZhY2UpIC0+IFJlZlB0cjxNZWRpYVNhbXBs
ZT4geworICAgICAgICAgICAgaWYgKCFzdXJmYWNlKQorICAgICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgICAgICAgICByZXR1cm4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3Jl
YXRlTWVkaWFTYW1wbGUoc3VyZmFjZS5nZXQoKSwgc2FtcGxlVGltZSwgc2l6ZSgpKTsKKyAgICAg
ICAgfSwKKyAgICAgICAgW3RoaXMsIHNhbXBsZVRpbWVdKFJlZlB0cjxOYXRpdmVJbWFnZT4gaW1h
Z2UpIC0+IFJlZlB0cjxNZWRpYVNhbXBsZT4geworICAgICAgICAgICAgaWYgKCFpbWFnZSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICAgICAgcmV0dXJuIG1faW1h
Z2VUcmFuc2ZlclNlc3Npb24tPmNyZWF0ZU1lZGlhU2FtcGxlKGltYWdlLT5wbGF0Zm9ybUltYWdl
KCkuZ2V0KCksIHNhbXBsZVRpbWUsIHNpemUoKSk7CisgICAgICAgIH0sCisgICAgICAgIFt0aGlz
LCBzYW1wbGVUaW1lXShSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IHNhbXBsZSkgLT4gUmVm
UHRyPE1lZGlhU2FtcGxlPiB7CisgICAgICAgICAgICBpZiAoIXNhbXBsZSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICAgICAgcmV0dXJuIG1faW1hZ2VUcmFuc2Zl
clNlc3Npb24tPmNyZWF0ZU1lZGlhU2FtcGxlKHNhbXBsZS5nZXQoKSwgc2FtcGxlVGltZSwgc2l6
ZSgpKTsKKyAgICAgICAgfQorICAgICk7CisKKyAgICBpZiAoIXNhbXBsZSkgeworICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHZpZGVv
U2FtcGxlQXZhaWxhYmxlKCpzYW1wbGUuZ2V0KCkpOworfQorCit2b2lkIERpc3BsYXlDYXB0dXJl
U291cmNlQ29jb2E6OnNldExvZ2dlcihjb25zdCBMb2dnZXImIGxvZ2dlciwgY29uc3Qgdm9pZCog
aWRlbnRpZmllcikKK3sKKyAgICBSZWFsdGltZU1lZGlhU291cmNlOjpzZXRMb2dnZXIobG9nZ2Vy
LCBpZGVudGlmaWVyKTsKKyAgICBtX2NhcHR1cmVyLT5zZXRMb2dnZXIobG9nZ2VyLCBpZGVudGlm
aWVyKTsKK30KKwordm9pZCBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpDYXB0dXJlcjo6c2V0
TG9nZ2VyKGNvbnN0IExvZ2dlciYgbmV3TG9nZ2VyLCBjb25zdCB2b2lkKiBuZXdMb2dJZGVudGlm
aWVyKQoreworICAgIG1fbG9nZ2VyID0gJm5ld0xvZ2dlcjsKKyAgICBtX2xvZ0lkZW50aWZpZXIg
PSBuZXdMb2dJZGVudGlmaWVyOworfQorCitXVEZMb2dDaGFubmVsJiBEaXNwbGF5Q2FwdHVyZVNv
dXJjZUNvY29hOjpDYXB0dXJlcjo6bG9nQ2hhbm5lbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIExv
Z1dlYlJUQzsKK30KKworRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Q2FwdHVyZXI6Ok9ic2Vy
dmVyOjp+T2JzZXJ2ZXIoKQoreworfQorCit2b2lkIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6
OkNhcHR1cmVyOjpzZXRPYnNlcnZlcihPYnNlcnZlciogb2JzZXJ2ZXIpCit7CisgICAgbV9vYnNl
cnZlciA9IG1ha2VXZWFrUHRyKG9ic2VydmVyKTsKK30KKwordm9pZCBEaXNwbGF5Q2FwdHVyZVNv
dXJjZUNvY29hOjpDYXB0dXJlcjo6Y2FwdHVyZXJJc1J1bm5pbmdDaGFuZ2VkKGJvb2wgcnVubmlu
ZykKK3sKKyAgICBpZiAobV9vYnNlcnZlcikKKyAgICAgICAgbV9vYnNlcnZlci0+Y2FwdHVyZXJJ
c1J1bm5pbmdDaGFuZ2VkKHJ1bm5pbmcpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShDT0NPQSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2Fw
dHVyZVNvdXJjZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwOGE1MGI3NmQzZDg5
OGUyZGEwY2M0ZDdmZDljM2U2NGM1YzEwMzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5o
CkBAIC0wLDAgKzEsMTM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYm
IFBMQVRGT1JNKENPQ09BKQorCisjaW5jbHVkZSAiQ2FwdHVyZURldmljZS5oIgorI2luY2x1ZGUg
IlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUg
PHd0Zi9VbmlxdWVSZWYuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworCit0
eXBlZGVmIHN0cnVjdCBDR0ltYWdlICpDR0ltYWdlUmVmOwordHlwZWRlZiBzdHJ1Y3QgX19DVkJ1
ZmZlciAqQ1ZQaXhlbEJ1ZmZlclJlZjsKK3R5cGVkZWYgc3RydWN0IF9fSU9TdXJmYWNlICpJT1N1
cmZhY2VSZWY7CisKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgTWVkaWFUaW1lOworfQorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENhcHR1cmVEZXZpY2VJbmZvOworY2xhc3MgSW1hZ2VU
cmFuc2ZlclNlc3Npb25WVDsKK2NsYXNzIFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y7CisKK2NsYXNz
IERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EgZmluYWwgOiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNv
dXJjZSB7CitwdWJsaWM6CisgICAgdXNpbmcgRGlzcGxheUZyYW1lVHlwZSA9IFdURjo6VmFyaWFu
dDxSZWZQdHI8TmF0aXZlSW1hZ2U+LCBSZXRhaW5QdHI8SU9TdXJmYWNlUmVmPiwgUmV0YWluUHRy
PENNU2FtcGxlQnVmZmVyUmVmPj47CisKKyAgICBjbGFzcyBDYXB0dXJlciA6IHB1YmxpYyBMb2dn
ZXJIZWxwZXIgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6
CisKKyAgICAgICAgY2xhc3MgT2JzZXJ2ZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8T2JzZXJ2
ZXI+IHsKKyAgICAgICAgcHVibGljOgorICAgICAgICAgICAgdmlydHVhbCB+T2JzZXJ2ZXIoKTsK
KworICAgICAgICAgICAgLy8gQ2FwdHVyZXIgc3RhdGUgY2hhbmdlcy4KKyAgICAgICAgICAgIHZp
cnR1YWwgdm9pZCBjYXB0dXJlcklzUnVubmluZ0NoYW5nZWQoYm9vbCkgeyB9CisgICAgICAgIH07
CisKKyAgICAgICAgdmlydHVhbCB+Q2FwdHVyZXIoKSA9IGRlZmF1bHQ7CisKKyAgICAgICAgdmly
dHVhbCBib29sIHN0YXJ0KCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpID0gMDsK
KyAgICAgICAgdmlydHVhbCBEaXNwbGF5RnJhbWVUeXBlIGdlbmVyYXRlRnJhbWUoKSA9IDA7Cisg
ICAgICAgIHZpcnR1YWwgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSBkZXZpY2VUeXBlKCkgY29u
c3QgPSAwOworICAgICAgICB2aXJ0dWFsIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RGlz
cGxheVN1cmZhY2VUeXBlIHN1cmZhY2VUeXBlKCkgY29uc3QgPSAwOworICAgICAgICB2aXJ0dWFs
IHZvaWQgY29tbWl0Q29uZmlndXJhdGlvbihjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3MmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgSW50U2l6ZSBpbnRyaW5zaWNTaXplKCkgY29uc3Qg
PSAwOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRMb2dnZXIoY29uc3QgTG9nZ2VyJiwgY29u
c3Qgdm9pZCopOworICAgICAgICBjb25zdCBMb2dnZXIqIGxvZ2dlclB0cigpIGNvbnN0IHsgcmV0
dXJuIG1fbG9nZ2VyLmdldCgpOyB9CisgICAgICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29u
c3QgZmluYWwgeyBBU1NFUlQobV9sb2dnZXIpOyByZXR1cm4gKm1fbG9nZ2VyLmdldCgpOyB9Cisg
ICAgICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2xvZ0lkZW50aWZpZXI7IH0KKyAgICAgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNv
bnN0IGZpbmFsOworCisgICAgICAgIHZvaWQgc2V0T2JzZXJ2ZXIoT2JzZXJ2ZXIqKTsKKworICAg
IHByb3RlY3RlZDoKKyAgICAgICAgdm9pZCBjYXB0dXJlcklzUnVubmluZ0NoYW5nZWQoYm9vbCk7
CisKKyAgICBwcml2YXRlOgorICAgICAgICBXZWFrUHRyPE9ic2VydmVyPiBtX29ic2VydmVyOwor
ICAgICAgICBSZWZQdHI8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICAgICAgY29uc3Qgdm9p
ZCogbV9sb2dJZGVudGlmaWVyOworICAgIH07CisKKyAgICBzdGF0aWMgQ2FwdHVyZVNvdXJjZU9y
RXJyb3IgY3JlYXRlKGNvbnN0IENhcHR1cmVEZXZpY2UmLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRz
Kik7CisgICAgc3RhdGljIENhcHR1cmVTb3VyY2VPckVycm9yIGNyZWF0ZShFeHBlY3RlZDxVbmlx
dWVSZWY8Q2FwdHVyZXI+LCBTdHJpbmc+JiYsIGNvbnN0IENhcHR1cmVEZXZpY2UmLCBjb25zdCBN
ZWRpYUNvbnN0cmFpbnRzKik7CisKKyAgICBTZWNvbmRzIGVsYXBzZWRUaW1lKCk7CisgICAgdm9p
ZCB1cGRhdGVGcmFtZVNpemUoKTsKKworcHJpdmF0ZToKKyAgICBEaXNwbGF5Q2FwdHVyZVNvdXJj
ZUNvY29hKFVuaXF1ZVJlZjxDYXB0dXJlcj4mJiwgU3RyaW5nJiYgbmFtZSk7CisgICAgdmlydHVh
bCB+RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYSgpOworCisgICAgdm9pZCBzdGFydFByb2R1Y2lu
Z0RhdGEoKSBmaW5hbDsKKyAgICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkgZmluYWw7CisgICAg
dm9pZCBzZXR0aW5nc0RpZENoYW5nZShPcHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzOjpGbGFnPikgZmluYWw7CisgICAgYm9vbCBpc0NhcHR1cmVTb3VyY2UoKSBjb25zdCBmaW5h
bCB7IHJldHVybiB0cnVlOyB9CisgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxp
dGllcyYgY2FwYWJpbGl0aWVzKCkgZmluYWw7CisgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJj
ZVNldHRpbmdzJiBzZXR0aW5ncygpIGZpbmFsOworICAgIENhcHR1cmVEZXZpY2U6OkRldmljZVR5
cGUgZGV2aWNlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FwdHVyZXItPmRldmljZVR5cGUoKTsg
fQorICAgIHZvaWQgY29tbWl0Q29uZmlndXJhdGlvbigpIGZpbmFsIHsgbV9jYXB0dXJlci0+Y29t
bWl0Q29uZmlndXJhdGlvbihzZXR0aW5ncygpKTsgfQorCisgICAgY29uc3QgY2hhciogbG9nQ2xh
c3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2Ei
OyB9CisgICAgdm9pZCBzZXRMb2dnZXIoY29uc3QgTG9nZ2VyJiwgY29uc3Qgdm9pZCopIGZpbmFs
OworCisgICAgdm9pZCBlbWl0RnJhbWUoKTsKKworICAgIFVuaXF1ZVJlZjxDYXB0dXJlcj4gbV9j
YXB0dXJlcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRp
ZXM+IG1fY2FwYWJpbGl0aWVzOworICAgIHN0ZDo6b3B0aW9uYWw8UmVhbHRpbWVNZWRpYVNvdXJj
ZVNldHRpbmdzPiBtX2N1cnJlbnRTZXR0aW5nczsKKyAgICBSZWFsdGltZU1lZGlhU291cmNlU3Vw
cG9ydGVkQ29uc3RyYWludHMgbV9zdXBwb3J0ZWRDb25zdHJhaW50czsKKworICAgIE1vbm90b25p
Y1RpbWUgbV9zdGFydFRpbWUgeyBNb25vdG9uaWNUaW1lOjpuYW4oKSB9OworICAgIFNlY29uZHMg
bV9lbGFwc2VkVGltZSB7IDBfcyB9OworCisgICAgUnVuTG9vcDo6VGltZXI8RGlzcGxheUNhcHR1
cmVTb3VyY2VDb2NvYT4gbV90aW1lcjsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZVRyYW5z
ZmVyU2Vzc2lvblZUPiBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0o
Q09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlTWFjLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZTI1NjZlMTNmNzc5OGY0YmMyN2EyNTY4MDQ4OWYzMmYwNTg4OGRk
YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjc0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5oIgotCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkgJiYgUExBVEZPUk0oTUFDKQotCi0jaW5jbHVkZSAiQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2Fw
dHVyZVNvdXJjZS5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJNZWRpYVNhbXBs
ZUFWRk9iakMuaCIKLSNpbmNsdWRlICJQaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmgiCi0jaW5jbHVk
ZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgotI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXIuaCIKLSNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaCIKLSNpbmNs
dWRlICJSZWFsdGltZVZpZGVvVXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAiUmVtb3RlVmlkZW9TYW1w
bGUuaCIKLSNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgPENvcmVNZWRpYS9DTVN5bmMuaD4K
LSNpbmNsdWRlIDxtYWNoL21hY2hfdGltZS5oPgotI2luY2x1ZGUgPHBhbC9hdmZvdW5kYXRpb24v
TWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+Ci0jaW5jbHVkZSA8cGFsL3NwaS9jZi9Db3JlQXVkaW9T
UEkuaD4KLSNpbmNsdWRlIDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgotI2luY2x1ZGUg
PHBhbC9zcGkvY29jb2EvSU9TdXJmYWNlU1BJLmg+Ci0jaW5jbHVkZSA8c3lzL3RpbWUuaD4KLSNp
bmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgotCi0jaW5jbHVkZSAiQ29yZVZpZGVvU29mdExpbmsuaCIKLSNpbmNsdWRlIDxwYWwvY2YvQ29y
ZU1lZGlhU29mdExpbmsuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1DYXB0dXJlU291cmNl
T3JFcnJvciBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6Y3JlYXRlKGNvbnN0IENhcHR1cmVEZXZp
Y2UmIGRldmljZSwgY29uc3QgTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMpCi17Ci0gICAg
c3dpdGNoIChkZXZpY2UudHlwZSgpKSB7Ci0gICAgY2FzZSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VU
eXBlOjpTY3JlZW46Ci0gICAgICAgIHJldHVybiBjcmVhdGUoQ0dEaXNwbGF5U3RyZWFtU2NyZWVu
Q2FwdHVyZVNvdXJjZTo6Y3JlYXRlKGRldmljZS5wZXJzaXN0ZW50SWQoKSksIGRldmljZSwgY29u
c3RyYWludHMpOwotICAgIGNhc2UgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6V2luZG93Ogot
ICAgIGNhc2UgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6TWljcm9waG9uZToKLSAgICBjYXNl
IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNwZWFrZXI6Ci0gICAgY2FzZSBDYXB0dXJlRGV2
aWNlOjpEZXZpY2VUeXBlOjpDYW1lcmE6Ci0gICAgY2FzZSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VU
eXBlOjpVbmtub3duOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgfQotCi0gICAgcmV0dXJuIHsgfTsKLX0KLQotQ2FwdHVyZVNvdXJjZU9yRXJyb3Ig
RGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OmNyZWF0ZShFeHBlY3RlZDxVbmlxdWVSZWY8Q2FwdHVy
ZXI+LCBTdHJpbmc+JiYgY2FwdHVyZXIsIGNvbnN0IENhcHR1cmVEZXZpY2UmIGRldmljZSwgY29u
c3QgTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMpCi17Ci0gICAgaWYgKCFjYXB0dXJlci5o
YXNfdmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIENhcHR1cmVTb3VyY2VPckVycm9yIHsgV1RGTW92
ZShjYXB0dXJlci5lcnJvcigpKSB9OwotCi0gICAgYXV0byBzb3VyY2UgPSBhZG9wdFJlZigqbmV3
IERpc3BsYXlDYXB0dXJlU291cmNlTWFjKFdURk1vdmUoY2FwdHVyZXIudmFsdWUoKSksIFN0cmlu
ZyB7IGRldmljZS5sYWJlbCgpIH0pKTsKLSAgICBpZiAoY29uc3RyYWludHMpIHsKLSAgICAgICAg
YXV0byByZXN1bHQgPSBzb3VyY2UtPmFwcGx5Q29uc3RyYWludHMoKmNvbnN0cmFpbnRzKTsKLSAg
ICAgICAgaWYgKHJlc3VsdCkKLSAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdC52YWx1
ZSgpLmJhZENvbnN0cmFpbnQpOwotICAgIH0KLQotICAgIHJldHVybiBDYXB0dXJlU291cmNlT3JF
cnJvcihXVEZNb3ZlKHNvdXJjZSkpOwotfQotCi1EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6RGlz
cGxheUNhcHR1cmVTb3VyY2VNYWMoVW5pcXVlUmVmPENhcHR1cmVyPiYmIGNhcHR1cmVyLCBTdHJp
bmcmJiBuYW1lKQotICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZShUeXBlOjpWaWRlbywgV1RGTW92
ZShuYW1lKSkKLSAgICAsIG1fY2FwdHVyZXIoV1RGTW92ZShjYXB0dXJlcikpCi0gICAgLCBtX3Rp
bWVyKFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJkRpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpl
bWl0RnJhbWUpCi17Ci19Ci0KLURpc3BsYXlDYXB0dXJlU291cmNlTWFjOjp+RGlzcGxheUNhcHR1
cmVTb3VyY2VNYWMoKQotewotfQotCi1jb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0
aWVzJiBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6Y2FwYWJpbGl0aWVzKCkKLXsKLSAgICBpZiAo
IW1fY2FwYWJpbGl0aWVzKSB7Ci0gICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRp
ZXMgY2FwYWJpbGl0aWVzKHNldHRpbmdzKCkuc3VwcG9ydGVkQ29uc3RyYWludHMoKSk7Ci0KLSAg
ICAgICAgYXV0byBpbnRyaW5zaWNTaXplID0gbV9jYXB0dXJlci0+aW50cmluc2ljU2l6ZSgpOwot
ICAgICAgICBjYXBhYmlsaXRpZXMuc2V0V2lkdGgoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSgxLCBp
bnRyaW5zaWNTaXplLndpZHRoKCkpKTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLnNldEhlaWdodChD
YXBhYmlsaXR5VmFsdWVPclJhbmdlKDEsIGludHJpbnNpY1NpemUuaGVpZ2h0KCkpKTsKLSAgICAg
ICAgY2FwYWJpbGl0aWVzLnNldEZyYW1lUmF0ZShDYXBhYmlsaXR5VmFsdWVPclJhbmdlKC4wMSwg
MzAuMCkpOwotCi0gICAgICAgIG1fY2FwYWJpbGl0aWVzID0gV1RGTW92ZShjYXBhYmlsaXRpZXMp
OwotICAgIH0KLSAgICByZXR1cm4gbV9jYXBhYmlsaXRpZXMudmFsdWUoKTsKLX0KLQotY29uc3Qg
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6c2V0
dGluZ3MoKQotewotICAgIGlmICghbV9jdXJyZW50U2V0dGluZ3MpIHsKLSAgICAgICAgUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzIHNldHRpbmdzOwotICAgICAgICBzZXR0aW5ncy5zZXRGcmFt
ZVJhdGUoZnJhbWVSYXRlKCkpOwotCi0gICAgICAgIGF1dG8gc2l6ZSA9IHRoaXMtPnNpemUoKTsK
LSAgICAgICAgc2V0dGluZ3Muc2V0V2lkdGgoc2l6ZS53aWR0aCgpKTsKLSAgICAgICAgc2V0dGlu
Z3Muc2V0SGVpZ2h0KHNpemUuaGVpZ2h0KCkpOwotCi0gICAgICAgIHNldHRpbmdzLnNldERpc3Bs
YXlTdXJmYWNlKG1fY2FwdHVyZXItPnN1cmZhY2VUeXBlKCkpOwotICAgICAgICBzZXR0aW5ncy5z
ZXRMb2dpY2FsU3VyZmFjZShmYWxzZSk7Ci0KLSAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN1
cHBvcnRlZENvbnN0cmFpbnRzIHN1cHBvcnRlZENvbnN0cmFpbnRzOwotICAgICAgICBzdXBwb3J0
ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c0ZyYW1lUmF0ZSh0cnVlKTsKLSAgICAgICAgc3VwcG9y
dGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNXaWR0aCh0cnVlKTsKLSAgICAgICAgc3VwcG9ydGVk
Q29uc3RyYWludHMuc2V0U3VwcG9ydHNIZWlnaHQodHJ1ZSk7Ci0gICAgICAgIHN1cHBvcnRlZENv
bnN0cmFpbnRzLnNldFN1cHBvcnRzRGlzcGxheVN1cmZhY2UodHJ1ZSk7Ci0gICAgICAgIHN1cHBv
cnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzTG9naWNhbFN1cmZhY2UodHJ1ZSk7Ci0KLSAgICAg
ICAgc2V0dGluZ3Muc2V0U3VwcG9ydGVkQ29uc3RyYWludHMoc3VwcG9ydGVkQ29uc3RyYWludHMp
OwotCi0gICAgICAgIG1fY3VycmVudFNldHRpbmdzID0gV1RGTW92ZShzZXR0aW5ncyk7Ci0gICAg
fQotICAgIHJldHVybiBtX2N1cnJlbnRTZXR0aW5ncy52YWx1ZSgpOwotfQotCi12b2lkIERpc3Bs
YXlDYXB0dXJlU291cmNlTWFjOjpzZXR0aW5nc0RpZENoYW5nZShPcHRpb25TZXQ8UmVhbHRpbWVN
ZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnPiBzZXR0aW5ncykKLXsKLSAgICBpZiAoc2V0dGluZ3Mu
Y29udGFpbnMoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpGcmFtZVJhdGUpICYm
IG1fdGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgbV90aW1lci5zdGFydFJlcGVhdGluZygxX3Mg
LyBmcmFtZVJhdGUoKSk7Ci0KLSAgICBtX2N1cnJlbnRTZXR0aW5ncyA9IHsgfTsKLX0KLQotdm9p
ZCBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKLXsKLSAgICBt
X3N0YXJ0VGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwotICAgIG1fdGltZXIuc3RhcnRSZXBl
YXRpbmcoMV9zIC8gZnJhbWVSYXRlKCkpOwotCi0gICAgY29tbWl0Q29uZmlndXJhdGlvbigpOwot
ICAgIGlmICghbV9jYXB0dXJlci0+c3RhcnQoKSkKLSAgICAgICAgY2FwdHVyZUZhaWxlZCgpOwot
fQotCi12b2lkIERpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpzdG9wUHJvZHVjaW5nRGF0YSgpCi17
Ci0gICAgbV90aW1lci5zdG9wKCk7Ci0gICAgbV9lbGFwc2VkVGltZSArPSBNb25vdG9uaWNUaW1l
Ojpub3coKSAtIG1fc3RhcnRUaW1lOwotICAgIG1fc3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6
bmFuKCk7Ci0KLSAgICBtX2NhcHR1cmVyLT5zdG9wKCk7Ci19Ci0KLVNlY29uZHMgRGlzcGxheUNh
cHR1cmVTb3VyY2VNYWM6OmVsYXBzZWRUaW1lKCkKLXsKLSAgICBpZiAoc3RkOjppc25hbihtX3N0
YXJ0VGltZSkpCi0gICAgICAgIHJldHVybiBtX2VsYXBzZWRUaW1lOwotCi0gICAgcmV0dXJuIG1f
ZWxhcHNlZFRpbWUgKyAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX3N0YXJ0VGltZSk7Ci19Ci0K
LS8vIFdlIGtlZXAgdGhlIGFzcGVjdCByYXRpbyBvZiB0aGUgaW50cmluc2ljIHNpemUgZm9yIHRo
ZSBmcmFtZSBzaXplIGFzIGdldERpc3BsYXlNZWRpYSBhbGxvd3MgbWF4IGNvbnN0cmFpbnRzIG9u
bHkuCi12b2lkIERpc3BsYXlDYXB0dXJlU291cmNlTWFjOjp1cGRhdGVGcmFtZVNpemUoKQotewot
ICAgIGF1dG8gaW50cmluc2ljU2l6ZSA9IHRoaXMtPmludHJpbnNpY1NpemUoKTsKLQotICAgIGF1
dG8gZnJhbWVTaXplID0gc2l6ZSgpOwotICAgIGlmICghZnJhbWVTaXplLmhlaWdodCgpKQotICAg
ICAgICBmcmFtZVNpemUuc2V0SGVpZ2h0KGludHJpbnNpY1NpemUuaGVpZ2h0KCkpOwotICAgIGlm
ICghZnJhbWVTaXplLndpZHRoKCkpCi0gICAgICAgIGZyYW1lU2l6ZS5zZXRXaWR0aChpbnRyaW5z
aWNTaXplLndpZHRoKCkpOwotCi0gICAgYXV0byBtYXhIZWlnaHQgPSBzdGQ6Om1pbihmcmFtZVNp
emUuaGVpZ2h0KCksIGludHJpbnNpY1NpemUuaGVpZ2h0KCkpOwotICAgIGF1dG8gbWF4V2lkdGgg
PSBzdGQ6Om1pbihmcmFtZVNpemUud2lkdGgoKSwgaW50cmluc2ljU2l6ZS53aWR0aCgpKTsKLQot
ICAgIGF1dG8gaGVpZ2h0Rm9yTWF4V2lkdGggPSBtYXhXaWR0aCAqIGludHJpbnNpY1NpemUuaGVp
Z2h0KCkgLyBpbnRyaW5zaWNTaXplLndpZHRoKCk7Ci0gICAgYXV0byB3aWR0aEZvck1heEhlaWdo
dCA9IG1heEhlaWdodCAqIGludHJpbnNpY1NpemUud2lkdGgoKSAvIGludHJpbnNpY1NpemUuaGVp
Z2h0KCk7Ci0KLSAgICBpZiAoaGVpZ2h0Rm9yTWF4V2lkdGggPD0gbWF4SGVpZ2h0KSB7Ci0gICAg
ICAgIHNldFNpemUoeyBtYXhXaWR0aCwgaGVpZ2h0Rm9yTWF4V2lkdGggfSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgaWYgKHdpZHRoRm9yTWF4SGVpZ2h0IDw9IG1heFdpZHRoKSB7Ci0g
ICAgICAgIHNldFNpemUoeyB3aWR0aEZvck1heEhlaWdodCwgbWF4SGVpZ2h0IH0pOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIHNldFNpemUoaW50cmluc2ljU2l6ZSk7Ci19Ci0KLXZvaWQg
RGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OmVtaXRGcmFtZSgpCi17Ci0gICAgaWYgKG11dGVkKCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbikKLSAg
ICAgICAgbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbiA9IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNy
ZWF0ZShwcmVmZXJlZFBpeGVsQnVmZmVyRm9ybWF0KCkpOwotCi0gICAgYXV0byBzYW1wbGVUaW1l
ID0gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKChlbGFwc2VkVGltZSgpICsgMTAwX21zKS5z
ZWNvbmRzKCkpOwotCi0gICAgYXV0byBmcmFtZSA9IG1fY2FwdHVyZXItPmdlbmVyYXRlRnJhbWUo
KTsKLSAgICBhdXRvIGltYWdlU2l6ZSA9IFdURjo6c3dpdGNoT24oZnJhbWUsCi0gICAgICAgIFtd
KFJldGFpblB0cjxJT1N1cmZhY2VSZWY+IHN1cmZhY2UpIC0+IEludFNpemUgewotICAgICAgICAg
ICAgaWYgKCFzdXJmYWNlKQotICAgICAgICAgICAgICAgIHJldHVybiB7IH07Ci0KLSAgICAgICAg
ICAgIHJldHVybiBJbnRTaXplKElPU3VyZmFjZUdldFdpZHRoKHN1cmZhY2UuZ2V0KCkpLCBJT1N1
cmZhY2VHZXRIZWlnaHQoc3VyZmFjZS5nZXQoKSkpOwotICAgICAgICB9LAotICAgICAgICBbXShS
ZWZQdHI8TmF0aXZlSW1hZ2U+IGltYWdlKSAtPiBJbnRTaXplIHsKLSAgICAgICAgICAgIGlmICgh
aW1hZ2UpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgICAgICAgICAgcmV0dXJu
IGltYWdlLT5zaXplKCk7Ci0gICAgICAgIH0KLSAgICApOwotCi0gICAgaWYgKGltYWdlU2l6ZS5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChpbnRyaW5zaWNTaXplKCkgIT0g
aW1hZ2VTaXplKSB7Ci0gICAgICAgIHNldEludHJpbnNpY1NpemUoaW1hZ2VTaXplKTsKLSAgICAg
ICAgdXBkYXRlRnJhbWVTaXplKCk7Ci0gICAgfQotCi0gICAgYXV0byBzYW1wbGUgPSBXVEY6OnN3
aXRjaE9uKGZyYW1lLAotICAgICAgICBbdGhpcywgc2FtcGxlVGltZV0oUmV0YWluUHRyPElPU3Vy
ZmFjZVJlZj4gc3VyZmFjZSkgLT4gUmVmUHRyPE1lZGlhU2FtcGxlPiB7Ci0gICAgICAgICAgICBp
ZiAoIXN1cmZhY2UpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAgICAg
ICAgIHJldHVybiBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5jcmVhdGVNZWRpYVNhbXBsZShzdXJm
YWNlLmdldCgpLCBzYW1wbGVUaW1lLCBzaXplKCkpOwotICAgICAgICB9LAotICAgICAgICBbdGhp
cywgc2FtcGxlVGltZV0oUmVmUHRyPE5hdGl2ZUltYWdlPiBpbWFnZSkgLT4gUmVmUHRyPE1lZGlh
U2FtcGxlPiB7Ci0gICAgICAgICAgICBpZiAoIWltYWdlKQotICAgICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwotCi0gICAgICAgICAgICByZXR1cm4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+
Y3JlYXRlTWVkaWFTYW1wbGUoaW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgc2FtcGxlVGlt
ZSwgc2l6ZSgpKTsKLSAgICAgICAgfQotICAgICk7Ci0KLSAgICBpZiAoIXNhbXBsZSkgewotICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IHZpZGVvU2FtcGxlQXZhaWxhYmxlKCpzYW1wbGUuZ2V0KCkpOwotfQotCi12b2lkIERpc3BsYXlD
YXB0dXJlU291cmNlTWFjOjpDYXB0dXJlcjo6c2V0TG9nZ2VyKGNvbnN0IExvZ2dlciYgbmV3TG9n
Z2VyLCBjb25zdCB2b2lkKiBuZXdMb2dJZGVudGlmaWVyKQotewotICAgIG1fbG9nZ2VyID0gJm5l
d0xvZ2dlcjsKLSAgICBtX2xvZ0lkZW50aWZpZXIgPSBuZXdMb2dJZGVudGlmaWVyOwotfQotCi1X
VEZMb2dDaGFubmVsJiBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6Q2FwdHVyZXI6OmxvZ0NoYW5u
ZWwoKSBjb25zdAotewotICAgIHJldHVybiBMb2dXZWJSVEM7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKE1B
QykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9E
aXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlTWFjLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDhkMjBlYzExMjFiMWY1ODc2ZjZiYTAwYjVjMzYyMWQwY2RhYjMxZjMuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlTWFjLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKSAmJiBQTEFURk9STShNQUMpCi0KLSNpbmNsdWRlICJDYXB0dXJlRGV2aWNlLmgiCi0jaW5j
bHVkZSAiSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oIgotI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFT
b3VyY2UuaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYu
aD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotdHlwZWRlZiBzdHJ1Y3QgQ0dJ
bWFnZSAqQ0dJbWFnZVJlZjsKLXR5cGVkZWYgc3RydWN0IF9fQ1ZCdWZmZXIgKkNWUGl4ZWxCdWZm
ZXJSZWY7Ci10eXBlZGVmIHN0cnVjdCBfX0lPU3VyZmFjZSAqSU9TdXJmYWNlUmVmOwotCi1uYW1l
c3BhY2UgV1RGIHsKLWNsYXNzIE1lZGlhVGltZTsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBDYXB0dXJlRGV2aWNlSW5mbzsKLWNsYXNzIEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ7
Ci1jbGFzcyBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWOwotCi1jbGFzcyBEaXNwbGF5Q2FwdHVyZVNv
dXJjZU1hYyBmaW5hbCA6IHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlIHsKLXB1YmxpYzoKLSAg
ICB1c2luZyBEaXNwbGF5RnJhbWVUeXBlID0gV1RGOjpWYXJpYW50PFJlZlB0cjxOYXRpdmVJbWFn
ZT4sIFJldGFpblB0cjxJT1N1cmZhY2VSZWY+PjsKLQotICAgIGNsYXNzIENhcHR1cmVyIDogcHVi
bGljIExvZ2dlckhlbHBlciB7Ci0gICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAg
IHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB+Q2FwdHVyZXIoKSA9IGRlZmF1bHQ7Ci0KLSAgICAg
ICAgdmlydHVhbCBib29sIHN0YXJ0KCkgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgp
ID0gMDsKLSAgICAgICAgdmlydHVhbCBEaXNwbGF5RnJhbWVUeXBlIGdlbmVyYXRlRnJhbWUoKSA9
IDA7Ci0gICAgICAgIHZpcnR1YWwgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSBkZXZpY2VUeXBl
KCkgY29uc3QgPSAwOwotICAgICAgICB2aXJ0dWFsIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5n
czo6RGlzcGxheVN1cmZhY2VUeXBlIHN1cmZhY2VUeXBlKCkgY29uc3QgPSAwOwotICAgICAgICB2
aXJ0dWFsIHZvaWQgY29tbWl0Q29uZmlndXJhdGlvbihjb25zdCBSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3MmKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgSW50U2l6ZSBpbnRyaW5zaWNTaXplKCkg
Y29uc3QgPSAwOwotCi0gICAgICAgIHZpcnR1YWwgdm9pZCBzZXRMb2dnZXIoY29uc3QgTG9nZ2Vy
JiwgY29uc3Qgdm9pZCopOwotICAgICAgICBjb25zdCBMb2dnZXIqIGxvZ2dlclB0cigpIGNvbnN0
IHsgcmV0dXJuIG1fbG9nZ2VyLmdldCgpOyB9Ci0gICAgICAgIGNvbnN0IExvZ2dlciYgbG9nZ2Vy
KCkgY29uc3QgZmluYWwgeyBBU1NFUlQobV9sb2dnZXIpOyByZXR1cm4gKm1fbG9nZ2VyLmdldCgp
OyB9Ci0gICAgICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX2xvZ0lkZW50aWZpZXI7IH0KLSAgICAgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5l
bCgpIGNvbnN0IGZpbmFsOwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgUmVmUHRyPGNvbnN0IExv
Z2dlcj4gbV9sb2dnZXI7Ci0gICAgICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllcjsKLSAg
ICB9OwotCi0gICAgc3RhdGljIENhcHR1cmVTb3VyY2VPckVycm9yIGNyZWF0ZShjb25zdCBDYXB0
dXJlRGV2aWNlJiwgY29uc3QgTWVkaWFDb25zdHJhaW50cyopOwotICAgIHN0YXRpYyBDYXB0dXJl
U291cmNlT3JFcnJvciBjcmVhdGUoRXhwZWN0ZWQ8VW5pcXVlUmVmPENhcHR1cmVyPiwgU3RyaW5n
PiYmLCBjb25zdCBDYXB0dXJlRGV2aWNlJiwgY29uc3QgTWVkaWFDb25zdHJhaW50cyopOwotCi0g
ICAgU2Vjb25kcyBlbGFwc2VkVGltZSgpOwotICAgIHZvaWQgdXBkYXRlRnJhbWVTaXplKCk7Ci0K
LXByaXZhdGU6Ci0gICAgRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMoVW5pcXVlUmVmPENhcHR1cmVy
PiYmLCBTdHJpbmcmJiBuYW1lKTsKLSAgICB+RGlzcGxheUNhcHR1cmVTb3VyY2VNYWMoKTsKLQot
ICAgIHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRhKCkgZmluYWw7Ci0gICAgdm9pZCBzdG9wUHJvZHVj
aW5nRGF0YSgpIGZpbmFsOwotICAgIHZvaWQgc2V0dGluZ3NEaWRDaGFuZ2UoT3B0aW9uU2V0PFJl
YWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZz4pIGZpbmFsOwotICAgIGJvb2wgaXNDYXB0
dXJlU291cmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIGNvbnN0IFJlYWx0
aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcygpIGZpbmFsOwotICAgIGNv
bnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MoKSBmaW5hbDsKLSAgICBD
YXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIGRldmljZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2Nh
cHR1cmVyLT5kZXZpY2VUeXBlKCk7IH0KLSAgICB2b2lkIGNvbW1pdENvbmZpZ3VyYXRpb24oKSBm
aW5hbCB7IG1fY2FwdHVyZXItPmNvbW1pdENvbmZpZ3VyYXRpb24oc2V0dGluZ3MoKSk7IH0KLQot
ICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJEaXNw
bGF5Q2FwdHVyZVNvdXJjZU1hYyI7IH0KLQotICAgIHZvaWQgZW1pdEZyYW1lKCk7Ci0KLSAgICBV
bmlxdWVSZWY8Q2FwdHVyZXI+IG1fY2FwdHVyZXI7Ci0gICAgc3RkOjpvcHRpb25hbDxSZWFsdGlt
ZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzPiBtX2NhcGFiaWxpdGllczsKLSAgICBzdGQ6Om9wdGlv
bmFsPFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncz4gbV9jdXJyZW50U2V0dGluZ3M7Ci0gICAg
UmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzIG1fc3VwcG9ydGVkQ29uc3Ry
YWludHM7Ci0KLSAgICBNb25vdG9uaWNUaW1lIG1fc3RhcnRUaW1lIHsgTW9ub3RvbmljVGltZTo6
bmFuKCkgfTsKLSAgICBTZWNvbmRzIG1fZWxhcHNlZFRpbWUgeyAwX3MgfTsKLQotICAgIFJ1bkxv
b3A6OlRpbWVyPERpc3BsYXlDYXB0dXJlU291cmNlTWFjPiBtX3RpbWVyOwotCi0gICAgc3RkOjp1
bmlxdWVfcHRyPEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ+IG1faW1hZ2VUcmFuc2ZlclNlc3Npb247
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFf
U1RSRUFNKSAmJiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlck1hYy5jcHAKaW5kZXggY2U0OTA5MTAzZTZjY2M4Y2EyNDRhZTdiZjU4OWM5NTMyNTQx
OWE5OS4uYTQxOGE2MDUwMmI3Y2ZhN2YzNzM0OWYxMTE5YzdhMWUyNjQ1YjFhYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcApAQCAtMzYsNyArMzYsNyBA
QAogI2luY2x1ZGUgIkFWVmlkZW9DYXB0dXJlU291cmNlLmgiCiAjaW5jbHVkZSAiQ29yZUF1ZGlv
Q2FwdHVyZVNvdXJjZS5oIgogI2luY2x1ZGUgIkRpc3BsYXlDYXB0dXJlTWFuYWdlckNvY29hLmgi
Ci0jaW5jbHVkZSAiRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMuaCIKKyNpbmNsdWRlICJEaXNwbGF5
Q2FwdHVyZVNvdXJjZUNvY29hLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1l
ZGlhU3RyZWFtUHJpdmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC01OSwx
NSArNTksNyBAQCBjbGFzcyBEaXNwbGF5Q2FwdHVyZVNvdXJjZUZhY3RvcnlNYWMgZmluYWwgOiBw
dWJsaWMgRGlzcGxheUNhcHR1cmVGYWN0b3J5IHsKIHB1YmxpYzoKICAgICBDYXB0dXJlU291cmNl
T3JFcnJvciBjcmVhdGVEaXNwbGF5Q2FwdHVyZVNvdXJjZShjb25zdCBDYXB0dXJlRGV2aWNlJiBk
ZXZpY2UsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzKSBmaW5hbAogICAgIHsK
LSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAgICBVTlVTRURfUEFSQU0oZGV2aWNlKTsK
LSAgICAgICAgVU5VU0VEX1BBUkFNKGNvbnN0cmFpbnRzKTsKLSNlbmRpZgotI2lmIFBMQVRGT1JN
KE1BQykKLSAgICAgICAgcmV0dXJuIERpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpjcmVhdGUoZGV2
aWNlLCBjb25zdHJhaW50cyk7Ci0jZWxzZQotICAgICAgICByZXR1cm4geyB9OwotI2VuZGlmCisg
ICAgICAgIHJldHVybiBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpjcmVhdGUoZGV2aWNlLCBj
b25zdHJhaW50cyk7CiAgICAgfQogcHJpdmF0ZToKICAgICBDYXB0dXJlRGV2aWNlTWFuYWdlciYg
ZGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyKCkgeyByZXR1cm4gRGlzcGxheUNhcHR1cmVNYW5h
Z2VyQ29jb2E6OnNpbmdsZXRvbigpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCmluZGV4
IGJiZTI4ZTBiMWY5OWU1MjUyODY2YmFkZDk4MWE4NjRjMjg5NDUwZjMuLjkzNWYyYWE1MDllNjcz
NTEzMmQxNjMzN2FmYTExM2I4ZmY0ODZmMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3Bw
CkBAIC00Myw3ICs0Myw3IEBACiAKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlICJDb3Jl
QXVkaW9DYXB0dXJlU291cmNlLmgiCi0jaW5jbHVkZSAiRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMu
aCIKKyNpbmNsdWRlICJEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmgiCiAjaW5jbHVkZSAiTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMuaCIKICNlbmRpZgogCkBAIC0xMTUsMTQgKzExNSwxNCBA
QCBwcml2YXRlOgogfTsKIAogI2lmIFBMQVRGT1JNKE1BQykKLWNsYXNzIE1vY2tEaXNwbGF5Q2Fw
dHVyZXIgZmluYWwgOiBwdWJsaWMgRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OkNhcHR1cmVyIHsK
K2NsYXNzIE1vY2tEaXNwbGF5Q2FwdHVyZXIgZmluYWwgOiBwdWJsaWMgRGlzcGxheUNhcHR1cmVT
b3VyY2VDb2NvYTo6Q2FwdHVyZXIgewogcHVibGljOgogICAgIGV4cGxpY2l0IE1vY2tEaXNwbGF5
Q2FwdHVyZXIoY29uc3QgQ2FwdHVyZURldmljZSYpOwogCiBwcml2YXRlOgogICAgIGJvb2wgc3Rh
cnQoKSBmaW5hbDsKICAgICB2b2lkIHN0b3AoKSBmaW5hbCAgeyBtX3NvdXJjZS0+c3RvcCgpOyB9
Ci0gICAgRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OkRpc3BsYXlGcmFtZVR5cGUgZ2VuZXJhdGVG
cmFtZSgpIGZpbmFsOworICAgIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OkRpc3BsYXlGcmFt
ZVR5cGUgZ2VuZXJhdGVGcmFtZSgpIGZpbmFsOwogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5nczo6RGlzcGxheVN1cmZhY2VUeXBlIHN1cmZhY2VUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpEaXNwbGF5U3VyZmFjZVR5cGU6Ok1vbml0
b3I7IH0KICAgICB2b2lkIGNvbW1pdENvbmZpZ3VyYXRpb24oY29uc3QgUmVhbHRpbWVNZWRpYVNv
dXJjZVNldHRpbmdzJikgZmluYWw7CiAgICAgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSBkZXZp
Y2VUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6
U2NyZWVuOyB9CkBAIC0xNTIsNyArMTUyLDcgQEAgdm9pZCBNb2NrRGlzcGxheUNhcHR1cmVyOjpj
b21taXRDb25maWd1cmF0aW9uKGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYKICAg
ICBtX3NldHRpbmdzID0gc2V0dGluZ3M7CiB9CiAKLURpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpE
aXNwbGF5RnJhbWVUeXBlIE1vY2tEaXNwbGF5Q2FwdHVyZXI6OmdlbmVyYXRlRnJhbWUoKQorRGlz
cGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6RGlzcGxheUZyYW1lVHlwZSBNb2NrRGlzcGxheUNhcHR1
cmVyOjpnZW5lcmF0ZUZyYW1lKCkKIHsKICAgICBpZiAoYXV0byogaW1hZ2VCdWZmZXIgPSBtX3Nv
dXJjZS0+aW1hZ2VCdWZmZXIoKSkKICAgICAgICAgcmV0dXJuIGltYWdlQnVmZmVyLT5jb3B5TmF0
aXZlSW1hZ2UoKTsKQEAgLTE4Niw3ICsxODYsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgQ2Fw
dHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuOgogICAgICAgICBjYXNlIENhcHR1cmVEZXZp
Y2U6OkRldmljZVR5cGU6OldpbmRvdzoKICNpZiBQTEFURk9STShNQUMpCi0gICAgICAgICAgICBy
ZXR1cm4gRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OmNyZWF0ZShVbmlxdWVSZWY8RGlzcGxheUNh
cHR1cmVTb3VyY2VNYWM6OkNhcHR1cmVyPihtYWtlVW5pcXVlUmVmPE1vY2tEaXNwbGF5Q2FwdHVy
ZXI+KGRldmljZSkpLCBkZXZpY2UsIGNvbnN0cmFpbnRzKTsKKyAgICAgICAgICAgIHJldHVybiBE
aXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpjcmVhdGUoVW5pcXVlUmVmPERpc3BsYXlDYXB0dXJl
U291cmNlQ29jb2E6OkNhcHR1cmVyPihtYWtlVW5pcXVlUmVmPE1vY2tEaXNwbGF5Q2FwdHVyZXI+
KGRldmljZSkpLCBkZXZpY2UsIGNvbnN0cmFpbnRzKTsKICNlbGlmIFVTRShHU1RSRUFNRVIpCiAg
ICAgICAgICAgICByZXR1cm4gTW9ja0Rpc3BsYXlDYXB0dXJlU291cmNlR1N0cmVhbWVyOjpjcmVh
dGUoZGV2aWNlLCBjb25zdHJhaW50cyk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLm1tCmluZGV4IDFk
NzZhODgwNmQwMTk5YmU4MTE3ZTU4Nzk3MjA5NGYzMTg1ZDJhZGUuLjBiYzE3ZmZmZmE3YTQ4ZWM3
YWJhNDkwY2YzYWYyM2IyYjVmNmI4ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW0KQEAgLTE0MSw2ICsx
NDEsOCBAQCBzdGF0aWMgTlNTdHJpbmcgKmFsZXJ0TWVzc2FnZVRleHQoTWVkaWFQZXJtaXNzaW9u
UmVhc29uIHJlYXNvbiwgY29uc3QgV2ViQ29yZTo6UwogICAgICAgICByZXR1cm4gW05TU3RyaW5n
IHN0cmluZ1dpdGhGb3JtYXQ6V0VCX1VJX05TU1RSSU5HKEAiQWxsb3cg4oCcJUDigJ0gdG8gdXNl
IHlvdXIgY2FtZXJhIGFuZCBtaWNyb3Bob25lPyIsIEAiTWVzc2FnZSBmb3IgdXNlciBtZWRpYSBw
cm9tcHQiKSwgdmlzaWJsZU9yaWdpbl07CiAgICAgY2FzZSBNZWRpYVBlcm1pc3Npb25SZWFzb246
Ok1pY3JvcGhvbmU6CiAgICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpX
RUJfVUlfTlNTVFJJTkcoQCJBbGxvdyDigJwlQOKAnSB0byB1c2UgeW91ciBtaWNyb3Bob25lPyIs
IEAiTWVzc2FnZSBmb3IgdXNlciBtaWNyb3Bob25lIGFjY2VzcyBwcm9tcHQiKSwgdmlzaWJsZU9y
aWdpbl07CisgICAgY2FzZSBNZWRpYVBlcm1pc3Npb25SZWFzb246OlNjcmVlbkNhcHR1cmU6Cisg
ICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpXRUJfVUlfTlNTVFJJTkco
QCJBbGxvdyDigJwlQOKAnSB0byBvYnNlcnZlIHlvdXIgc2NyZWVuPyIsIEAiTWVzc2FnZSBmb3Ig
c2NyZWVuIHNoYXJpbmcgcHJvbXB0IiksIHZpc2libGVPcmlnaW5dOwogICAgIGNhc2UgTWVkaWFQ
ZXJtaXNzaW9uUmVhc29uOjpEZXZpY2VPcmllbnRhdGlvbjoKICAgICAgICAgcmV0dXJuIFtOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OldFQl9VSV9OU1NUUklORyhAIuKAnCVA4oCdIFdvdWxkIExp
a2UgdG8gQWNjZXNzIE1vdGlvbiBhbmQgT3JpZW50YXRpb24iLCBAIk1lc3NhZ2UgZm9yIHJlcXVl
c3RpbmcgYWNjZXNzIHRvIHRoZSBkZXZpY2UgbW90aW9uIGFuZCBvcmllbnRhdGlvbiIpLCB2aXNp
YmxlT3JpZ2luXTsKICAgICBjYXNlIE1lZGlhUGVybWlzc2lvblJlYXNvbjo6R2VvbG9jYXRpb246
CkBAIC0xNTcsNiArMTU5LDggQEAgc3RhdGljIE5TU3RyaW5nICphbGxvd0J1dHRvblRleHQoTWVk
aWFQZXJtaXNzaW9uUmVhc29uIHJlYXNvbikKICAgICBjYXNlIE1lZGlhUGVybWlzc2lvblJlYXNv
bjo6Q2FtZXJhQW5kTWljcm9waG9uZToKICAgICBjYXNlIE1lZGlhUGVybWlzc2lvblJlYXNvbjo6
TWljcm9waG9uZToKICAgICAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkdfS0VZKEAiQWxsb3ciLCAi
QWxsb3cgKHVzZXJtZWRpYSkiLCBAIkFsbG93IGJ1dHRvbiB0aXRsZSBpbiB1c2VyIG1lZGlhIHBy
b21wdCIpOworICAgIGNhc2UgTWVkaWFQZXJtaXNzaW9uUmVhc29uOjpTY3JlZW5DYXB0dXJlOgor
ICAgICAgICByZXR1cm4gV0VCX1VJX1NUUklOR19LRVkoQCJBbGxvdyIsICJBbGxvdyAoc2NyZWVu
c2hhcmluZykiLCBAIkFsbG93IGJ1dHRvbiB0aXRsZSBpbiBzY3JlZW4gc2hhcmluZyBwcm9tcHQi
KTsKICAgICBjYXNlIE1lZGlhUGVybWlzc2lvblJlYXNvbjo6RGV2aWNlT3JpZW50YXRpb246CiAg
ICAgICAgIHJldHVybiBXRUJfVUlfU1RSSU5HX0tFWShAIkFsbG93IiwgIkFsbG93IChkZXZpY2Ug
bW90aW9uIGFuZCBvcmllbnRhdGlvbiBhY2Nlc3MpIiwgQCJCdXR0b24gdGl0bGUgaW4gRGV2aWNl
IE9yaWVudGF0aW9uIFBlcm1pc3Npb24gQVBJIHByb21wdCIpOwogICAgIGNhc2UgTWVkaWFQZXJt
aXNzaW9uUmVhc29uOjpHZW9sb2NhdGlvbjoKQEAgLTE3Myw2ICsxNzcsOCBAQCBzdGF0aWMgTlNT
dHJpbmcgKmRvTm90QWxsb3dCdXR0b25UZXh0KE1lZGlhUGVybWlzc2lvblJlYXNvbiByZWFzb24p
CiAgICAgY2FzZSBNZWRpYVBlcm1pc3Npb25SZWFzb246OkNhbWVyYUFuZE1pY3JvcGhvbmU6CiAg
ICAgY2FzZSBNZWRpYVBlcm1pc3Npb25SZWFzb246Ok1pY3JvcGhvbmU6CiAgICAgICAgIHJldHVy
biBXRUJfVUlfU1RSSU5HX0tFWShAIkRvbuKAmXQgQWxsb3ciLCAiRG9u4oCZdCBBbGxvdyAodXNl
cm1lZGlhKSIsIEAiRGlzYWxsb3cgYnV0dG9uIHRpdGxlIGluIHVzZXIgbWVkaWEgcHJvbXB0Iik7
CisgICAgY2FzZSBNZWRpYVBlcm1pc3Npb25SZWFzb246OlNjcmVlbkNhcHR1cmU6CisgICAgICAg
IHJldHVybiBXRUJfVUlfU1RSSU5HX0tFWShAIkRvbuKAmXQgQWxsb3ciLCAiRG9u4oCZdCBBbGxv
dyAoc2NyZWVuc2hhcmluZykiLCBAIkRpc2FsbG93IGJ1dHRvbiB0aXRsZSBpbiBzY3JlZW4gc2hh
cmluZyBwcm9tcHQiKTsKICAgICBjYXNlIE1lZGlhUGVybWlzc2lvblJlYXNvbjo6RGV2aWNlT3Jp
ZW50YXRpb246CiAgICAgICAgIHJldHVybiBXRUJfVUlfU1RSSU5HX0tFWShAIkNhbmNlbCIsICJD
YW5jZWwgKGRldmljZSBtb3Rpb24gYW5kIG9yaWVudGF0aW9uIGFjY2VzcykiLCBAIkJ1dHRvbiB0
aXRsZSBpbiBEZXZpY2UgT3JpZW50YXRpb24gUGVybWlzc2lvbiBBUEkgcHJvbXB0Iik7CiAgICAg
Y2FzZSBNZWRpYVBlcm1pc3Npb25SZWFzb246Okdlb2xvY2F0aW9uOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KaW5kZXggMTFiN2E0MDU4YTViNjQxYWI4ODRh
OTc2NTc3Y2YyMTAzYmNiNmJkZC4uMWIwYTY0NzdmZWZmMjhjZGJjNzNhMzc4M2FkMWY5YmQ4OTUx
NzhiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCkBA
IC0xMTE3LDYgKzExMTcsMTEgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9s
aWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3gKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAorICAgIGlmIChyZXF1ZXN0LnJlcXVpcmVzRGlzcGxheUNhcHR1cmUoKSAm
JiByZXF1ZXN0LmNhblByb21wdEZvckdldERpc3BsYXlNZWRpYSgpKSB7CisgICAgICAgIHJlcXVl
c3QucHJvbXB0Rm9yR2V0RGlzcGxheU1lZGlhKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
ICAgICAvLyBGSVhNRTogUHJvdmlkZSBhIHNwZWNpZmljIGRlbGVnYXRlIGZvciBkaXNwbGF5IGNh
cHR1cmUuCiAgICAgaWYgKCFyZXF1ZXN0LnJlcXVpcmVzRGlzcGxheUNhcHR1cmUoKSAmJiByZXNw
b25kc1RvUmVxdWVzdE1lZGlhQ2FwdHVyZVBlcm1pc3Npb24pIHsKICAgICAgICAgYXV0byBjaGVj
a2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLCBAc2Vs
ZWN0b3Iod2ViVmlldzpyZXF1ZXN0TWVkaWFDYXB0dXJlUGVybWlzc2lvbkZvck9yaWdpbjppbml0
aWF0ZWRCeUZyYW1lOnR5cGU6ZGVjaXNpb25IYW5kbGVyOikpOwpAQCAtMTEyNyw3ICsxMTMyLDcg
QEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3gKIAogICAgICAgICAgICAgc3dpdGNoIChkZWNpc2lv
bikgewogICAgICAgICAgICAgY2FzZSBXS1Blcm1pc3Npb25EZWNpc2lvblByb21wdDoKLSAgICAg
ICAgICAgICAgICBwcm90ZWN0ZWRSZXF1ZXN0LT5wcm9tcHQoKTsKKyAgICAgICAgICAgICAgICBw
cm90ZWN0ZWRSZXF1ZXN0LT5wcm9tcHRGb3JHZXRVc2VyTWVkaWEoKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGNhc2UgV0tQZXJtaXNzaW9uRGVjaXNpb25HcmFudDogewog
ICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgdmlkZW9EZXZpY2VVSUQgPSBwcm90ZWN0ZWRS
ZXF1ZXN0LT5yZXF1aXJlc1ZpZGVvQ2FwdHVyZSgpID8gcHJvdGVjdGVkUmVxdWVzdC0+dmlkZW9E
ZXZpY2VVSURzKCkuZmlyc3QoKSA6IFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaAppbmRleCA0MWVhNDFkZmQ0NzQ2YWZj
YjdmYjMyNzQ1ZDgzZmQ3ZWY4NDJlYzAzLi4xNzVjMjVjMDQ0OTMyZmE1YjZhYTY1NzEyOTkzMzlh
MTJhMTYxMTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRpYVBlcm1p
c3Npb25VdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRpYVBlcm1p
c3Npb25VdGlsaXRpZXMuaApAQCAtNTQsNyArNTQsOCBAQCBlbnVtIGNsYXNzIE1lZGlhUGVybWlz
c2lvblJlYXNvbiB7CiAgICAgTWljcm9waG9uZSwKICAgICBEZXZpY2VPcmllbnRhdGlvbiwKICAg
ICBHZW9sb2NhdGlvbiwKLSAgICBTcGVlY2hSZWNvZ25pdGlvbgorICAgIFNwZWVjaFJlY29nbml0
aW9uLAorICAgIFNjcmVlbkNhcHR1cmUKIH07CiAKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RQcm94eS5jcHAKaW5kZXggMmNmY2FlNzQ4NWQ1OWZkMWNhZTkzNGFlNDU4NjA3ZWQwN2Y3
MzQ4My4uMTQ3NjFlNGRlYjEzMzRlMjA4Y2Y3ZWUzNjY4MDg3Mzk2YTJlOWIyZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RQcm94eS5jcHAKQEAgLTE0MCwxNyArMTQwLDI5IEBAIFN0cmluZyBjb252ZXJ0RW51bWVy
YXRpb25Ub1N0cmluZyhVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFB
Y2NlCiAgICAgcmV0dXJuIHZhbHVlc1tzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFs
dWUpXTsKIH0KIAotdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5Ojpwcm9tcHQo
KQordm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5Ojpwcm9tcHRGb3JHZXREaXNw
bGF5TWVkaWEoKQogewogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKENPQ09B
KQotICAgIEFTU0VSVChtX21hbmFnZXIpOwotICAgIGlmICghbV9tYW5hZ2VyKSB7CisgICAgQVNT
RVJUKG1fbWFuYWdlciAmJiBjYW5Qcm9tcHRGb3JHZXREaXNwbGF5TWVkaWEoKSk7CisgICAgaWYg
KCFtX21hbmFnZXIgfHwgIWNhblByb21wdEZvckdldERpc3BsYXlNZWRpYSgpKSB7CiAgICAgICAg
IGRlbnkoVXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uOjpQZXJtaXNzaW9uRGVuaWVkKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChyZXF1aXJlc0Rpc3BsYXlDYXB0dXJlKCkp
IHsKLSAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBnZXREaXNwbGF5TWVkaWEgcHJvbXB0LCBm
b3Igbm93IGRlbnkuCisgICAgYWxlcnRGb3JQZXJtaXNzaW9uKG1fbWFuYWdlci0+cGFnZSgpLCBN
ZWRpYVBlcm1pc3Npb25SZWFzb246OlNjcmVlbkNhcHR1cmUsIHRvcExldmVsRG9jdW1lbnRTZWN1
cml0eU9yaWdpbigpLmRhdGEoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9
XShib29sIGdyYW50ZWQpIHsKKyAgICAgICAgaWYgKCFncmFudGVkKQorICAgICAgICAgICAgZGVu
eShVc2VyTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb246OlBlcm1pc3Npb25EZW5pZWQpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBhbGxvdygpOworICAgIH0pOworI2VuZGlmCit9CisKK3ZvaWQg
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6cHJvbXB0Rm9yR2V0VXNlck1lZGlhKCkK
K3sKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShDT0NPQSkKKyAgICBBU1NF
UlQobV9tYW5hZ2VyKTsKKyAgICBpZiAoIW1fbWFuYWdlcikgewogICAgICAgICBkZW55KFVzZXJN
ZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbjo6UGVybWlzc2lvbkRlbmllZCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC0xNTgsMTUgKzE3MCw0MCBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0UHJveHk6OnByb21wdCgpCiAgICAgTWVkaWFQZXJtaXNzaW9uUmVhc29uIHJlYXNvbiA9
IE1lZGlhUGVybWlzc2lvblJlYXNvbjo6Q2FtZXJhOwogICAgIGlmIChyZXF1aXJlc0F1ZGlvQ2Fw
dHVyZSgpKQogICAgICAgICByZWFzb24gPSByZXF1aXJlc1ZpZGVvQ2FwdHVyZSgpID8gTWVkaWFQ
ZXJtaXNzaW9uUmVhc29uOjpDYW1lcmFBbmRNaWNyb3Bob25lIDogTWVkaWFQZXJtaXNzaW9uUmVh
c29uOjpNaWNyb3Bob25lOworCiAgICAgYWxlcnRGb3JQZXJtaXNzaW9uKG1fbWFuYWdlci0+cGFn
ZSgpLCByZWFzb24sIHRvcExldmVsRG9jdW1lbnRTZWN1cml0eU9yaWdpbigpLmRhdGEoKSwgW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XShib29sIGdyYW50ZWQpIHsKICAgICAg
ICAgaWYgKCFncmFudGVkKQogICAgICAgICAgICAgZGVueShVc2VyTWVkaWFBY2Nlc3NEZW5pYWxS
ZWFzb246OlBlcm1pc3Npb25EZW5pZWQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBhbGxv
dygpOwogICAgIH0pOworI2VuZGlmCit9CisKK3ZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RQcm94eTo6ZG9EZWZhdWx0QWN0aW9uKCkKK3sKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAm
JiBQTEFURk9STShDT0NPQSkKKyAgICBpZiAocmVxdWlyZXNEaXNwbGF5Q2FwdHVyZSgpKSB7Cisg
ICAgICAgIGlmICghY2FuUHJvbXB0Rm9yR2V0RGlzcGxheU1lZGlhKCkpIHsKKyAgICAgICAgICAg
IGRlbnkoVXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uOjpQZXJtaXNzaW9uRGVuaWVkKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHByb21wdEZvckdldERpc3Bs
YXlNZWRpYSgpOworICAgIH0gZWxzZQorICAgICAgICBwcm9tcHRGb3JHZXRVc2VyTWVkaWEoKTsK
ICNlbHNlCiAgICAgZGVueSgpOwogI2VuZGlmCiB9CiAKK2Jvb2wgVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RQcm94eTo6Y2FuUHJvbXB0Rm9yR2V0RGlzcGxheU1lZGlhKCkKK3sKKyNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIHJldHVybiB0cnVl
OworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdFByb3h5LmgKaW5kZXggMjRjZWUzOGY5YmMxZDhhMmE2YWU3NGQyNGFh
YzQ2ZmNiODFmNWMxZS4uZGY0MTJhYjY1ZWMzN2RkNDczMGVhZmM3Y2I0ZTNkNTUxNjM0OWRiMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0UHJveHkuaApAQCAtNDUsOCArNDUsMTAgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBhbGxvdyhjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlVUlELCBjb25zdCBTdHJpbmcmIHZpZGVv
RGV2aWNlVUlEKTsKICAgICB2b2lkIGFsbG93KCk7Ci0gICAgdm9pZCBwcm9tcHQoKTsKLSAgICB2
b2lkIGRvRGVmYXVsdEFjdGlvbigpIHsgcHJvbXB0KCk7IH0KKyAgICB2b2lkIHByb21wdEZvckdl
dFVzZXJNZWRpYSgpOworICAgIHZvaWQgcHJvbXB0Rm9yR2V0RGlzcGxheU1lZGlhKCk7CisgICAg
Ym9vbCBjYW5Qcm9tcHRGb3JHZXREaXNwbGF5TWVkaWEoKTsKKyAgICB2b2lkIGRvRGVmYXVsdEFj
dGlvbigpOwogICAgIGVudW0gY2xhc3MgVXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uIHsgTm9D
b25zdHJhaW50cywgVXNlck1lZGlhRGlzYWJsZWQsIE5vQ2FwdHVyZURldmljZXMsIEludmFsaWRD
b25zdHJhaW50LCBIYXJkd2FyZUVycm9yLCBQZXJtaXNzaW9uRGVuaWVkLCBPdGhlckZhaWx1cmUg
fTsKICAgICB2b2lkIGRlbnkoVXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uID0gVXNlck1lZGlh
QWNjZXNzRGVuaWFsUmVhc29uOjpVc2VyTWVkaWFEaXNhYmxlZCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441142</attachid>
            <date>2021-10-13 15:10:49 -0700</date>
            <delta_ts>2021-10-13 15:35:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231455-20211013151048.patch</filename>
            <type>text/plain</type>
            <size>103260</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2M2MWNjNWYyZjlmMWJl
MDFlMWQxYWQyNjAxNjA4MTVlMTAwMGZjOS4uNmFkMGNjOWQ5NWQyZmZiNjQ3YTc1NDg2NDBhZWVl
OTQ2NmQwZjg4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAyMS0xMC0xMyAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBTdXBw
b3J0IGdldERpc3BsYXlNZWRpYQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMxNDU1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NDA0NDQ5NT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIEltcGxlbWVudCBz
Y3JlZW4gY2FwdHVyZSBmb3IgaU9TIHVzaW5nIFJlcGxheUtpdC4gUmVwbGF5S2l0IG9ubHkgY2Fw
dHVyZXMgd2hlbiB0aGUgCisgICAgICAgIGhvc3QgYXBwbGljYXRpb24gaXMgaW4gdGhlIGZvcmVn
cm91bmQsIHNvIHRoZSBNZWRpYVN0cmVhbSB0cmFjayBpcyBtdXRlZCB3aGVuIHRoZQorICAgICAg
ICBhcHAgaXMgYmFja2dyb3VuZGVkLgorCisgICAgICAgIGdldERpc3BsYXlNZWRpYSBhdmFpbGFi
aWxpdHkgdG8gSmF2YVNjcmlwdCBpcyBjb250cm9sbGVkIGJ5IHRoZSBgU2NyZWVuQ2FwdHVyZUVu
YWJsZWRgCisgICAgICAgIHNldHRpbmcsIHdoaWNoIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQgb24g
aU9TLgorCisgICAgICAgIEkgaGF2ZW4ndCBmaWd1cmVkIG91dCBob3cgdG8gdGVzdCB0aGlzIGF1
dG9tYXRpY2FsbHkgeWV0IGJlY2F1c2UgUmVwbGF5S2l0IGFsd2F5cworICAgICAgICBzaG93cyBp
dHMgb3duIG1vZGFsIHVzZXIgcHJvbXB0IGJlZm9yZSBpdCBhbGxvd3MgY2FwdHVyZSB0byBiZWdp
bi4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6IEFkZCBSZXBsYXlLaXRDYXB0dXJlU291
cmNlLm1tLiBSZW5hbWUgRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMuY3BwCisgICAgICAgIHRvIERp
c3BsYXlDYXB0dXJlU291cmNlQ29jb2EuY3BwLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgbmV3IGZpbGVzLgorCisgICAgICAgICogZW4ubHByb2ov
TG9jYWxpemFibGUuc3RyaW5nczogQWRkIGxvY2FsaXphYmxlIHN0cmluZ3MgZm9yIGdldERpc3Bs
YXlNZWRpYSBwcm9tcHQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRy
YW5zZmVyU2Vzc2lvblZULmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VU
cmFuc2ZlclNlc3Npb25WVC5tbToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlVHJhbnNmZXJTZXNz
aW9uVlQ6OmNvbnZlcnRDTVNhbXBsZUJ1ZmZlcik6IEFkZCBhbiBvcHRpb25hbCBNZWRpYVRpbWUg
cGFyYW1ldGVyLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y3Jl
YXRlTWVkaWFTYW1wbGUpOiBBZGQgYSBNZWRpYVRpbWUgcGFyYW1ldGVyLgorCisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL1JlcGxheUtpdENhcHR1cmVTb3VyY2UuaDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL1JlcGxheUtpdENhcHR1cmVTb3Vy
Y2UubW06IEFkZGVkLgorICAgICAgICAoLVtXZWJDb3JlUmVwbGF5S2l0U2NyZWVuUmVjb3JkZXJI
ZWxwZXIgaW5pdFdpdGhDYWxsYmFjazpdKToKKyAgICAgICAgKC1bV2ViQ29yZVJlcGxheUtpdFNj
cmVlblJlY29yZGVySGVscGVyIGRpc2Nvbm5lY3RdKToKKyAgICAgICAgKC1bV2ViQ29yZVJlcGxh
eUtpdFNjcmVlblJlY29yZGVySGVscGVyIG9ic2VydmVWYWx1ZUZvcktleVBhdGg6b2ZPYmplY3Q6
Y2hhbmdlOmNvbnRleHQ6XSk6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYXlLaXRDYXB0dXJlU291
cmNlOjppc0F2YWlsYWJsZSk6IENoZWNrIFJlcGxheUtpdCBhdmFpbGFiaWxpdHkuCisgICAgICAg
IChXZWJDb3JlOjpSZXBsYXlLaXRDYXB0dXJlU291cmNlOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVwbGF5S2l0Q2FwdHVyZVNvdXJjZTo6UmVwbGF5S2l0Q2FwdHVyZVNvdXJjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXBsYXlLaXRDYXB0dXJlU291cmNlOjp+UmVwbGF5S2l0Q2FwdHVy
ZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYXlLaXRDYXB0dXJlU291cmNlOjpzdGFy
dCk6IFN0YXJ0IHNjcmVlbiBjYXB0dXJlIG9ubHkuCisgICAgICAgIChXZWJDb3JlOjpSZXBsYXlL
aXRDYXB0dXJlU291cmNlOjpzY3JlZW5SZWNvcmRlckRpZE91dHB1dFZpZGVvU2FtcGxlKTogUmV0
YWluIHRoZQorICAgICAgICB0aGUgbmV3IGZyYW1lLCBzZXQgaW50cmluc2ljIHNpemUgdG8gdGhl
IGltYWdlIHNpemUuCisgICAgICAgIChXZWJDb3JlOjpSZXBsYXlLaXRDYXB0dXJlU291cmNlOjpj
YXB0dXJlU3RhdGVEaWRDaGFuZ2UpOiBVcGRhdGUgb2JzZXJ2ZXIgaWYgaW50ZXJydXB0aW9uCisg
ICAgICAgIHN0YXRlIG9yIHJlY29yZGVyIHN0YXRlIGNoYW5nZXMgc28gaXQgY2FuIHVwZGF0ZSB0
aGUgdHJhY2sncyAnbXV0ZWQnIHN0YXRlLgorICAgICAgICAoV2ViQ29yZTo6UmVwbGF5S2l0Q2Fw
dHVyZVNvdXJjZTo6c3RvcCk6IFN0b3AgY2FwdHVyZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlcGxh
eUtpdENhcHR1cmVTb3VyY2U6OmdlbmVyYXRlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVw
bGF5S2l0Q2FwdHVyZVNvdXJjZTo6dmVyaWZ5Q2FwdHVyZUlzQWN0aXZlKTogUmVwbGF5S2l0IGRv
ZXNuJ3Qgbm90aWZ5IAorICAgICAgICB3aGVuIGNhcHR1cmUgaXMgcGF1c2VkLCBzbyB3YXRjaCBm
b3IgY2hhbmdlcyBieSBtb25pdG9yaW5nIHRoZSBmcmFtZSBjb3VudC4KKyAgICAgICAgKFdlYkNv
cmU6OlJlcGxheUtpdENhcHR1cmVTb3VyY2U6OnN0YXJ0Q2FwdHVyZVdhdGNoZG9nVGltZXIpOiBT
dGFydCB0aGUgdGltZXIgdGhhdAorICAgICAgICB3aWxsIG1vbml0b3IgZm9yIGNhcHR1cmUgcGF1
c2luZy9yZXN1bWluZy4KKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlbkRldmljZVVVSUQpOgorICAg
ICAgICAoV2ViQ29yZTo6c2NyZWVuRGV2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxheUtp
dENhcHR1cmVTb3VyY2U6OnNjcmVlbkNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlcGxheUtpdENhcHR1cmVTb3VyY2U6OnNjcmVlbkNhcHR1cmVEZXZp
Y2VzKToKKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR0Rpc3BsYXlTdHJl
YW1DYXB0dXJlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNHRGlzcGxheVN0cmVhbUNh
cHR1cmVTb3VyY2U6OmdlbmVyYXRlRnJhbWUpOiBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYyB3YXMK
KyAgICAgICAgcmVuYW1lZCBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLgorICAgICAgICAoV2Vi
Q29yZTo6Q0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6bmV3RnJhbWUpOiBUYWtlIGEgUmV0
YWluUHRyPElPU3VyZmFjZVJlZj4KKyAgICAgICAgaW5zdGVhZCBvZiBhIERpc3BsYXlTdXJmYWNl
LgorICAgICAgICAoV2ViQ29yZTo6Q0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6ZnJhbWVB
dmFpbGFibGVIYW5kbGVyKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0NHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNH
RGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2U6OkRpc3BsYXlTdXJmYWNlOjpEaXNwbGF5U3VyZmFj
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291
cmNlOjpEaXNwbGF5U3VyZmFjZTo6fkRpc3BsYXlTdXJmYWNlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkNHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2U6OkRpc3BsYXlTdXJmYWNlOjpv
cGVyYXRvcj0pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q0dEaXNwbGF5U3RyZWFtQ2Fw
dHVyZVNvdXJjZTo6RGlzcGxheVN1cmZhY2U6OmlvU3VyZmFjZSBjb25zdCk6IERlbGV0ZWQuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtU2NyZWVu
Q2FwdHVyZVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR0Rp
c3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q0dE
aXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZTo6Y3JlYXRlKTogRGlzcGxheUNhcHR1cmVT
b3VyY2VNYWMgd2FzCisgICAgICAgIHJlbmFtZWQgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS4K
KworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZU1hbmFn
ZXJDb2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Q2FwdHVyZU1hbmFnZXJDb2Nv
YTo6dXBkYXRlRGlzcGxheUNhcHR1cmVEZXZpY2VzKTogVXNlIAorICAgICAgICBSZXBsYXlLaXRD
YXB0dXJlU291cmNlIG9uIGlPUy4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5jcHAu
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6RGlzcGxheUNhcHR1
cmVTb3VyY2VDb2NvYSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Q2FwdHVyZVNvdXJjZUNv
Y29hOjp+RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpjYXBhYmlsaXRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6c2V0dGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6c2V0dGluZ3NEaWRDaGFuZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6c3RhcnRQcm9kdWNpbmdEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OnN0b3BQcm9kdWNp
bmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OmVs
YXBzZWRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6
OnVwZGF0ZUZyYW1lU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Q2FwdHVyZVNvdXJj
ZUNvY29hOjplbWl0RnJhbWUpOiBTdXBwb3J0IGNhcHR1cmVyIHJldHVybmluZyBhIENNU2FtcGxl
QnVmZmVyLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6c2V0
TG9nZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OkNh
cHR1cmVyOjpzZXRMb2dnZXIpOiBTZXQgdGhlIGNhcHR1cmVyJ3MgbG9nZ2VyLgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Q2FwdHVyZXI6OmxvZ0NoYW5uZWwg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Q2Fw
dHVyZXI6Ok9ic2VydmVyOjp+T2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUNh
cHR1cmVTb3VyY2VDb2NvYTo6Q2FwdHVyZXI6OnNldE9ic2VydmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OkNhcHR1cmVyOjpjYXB0dXJlcklzUnVubmlu
Z0NoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2Fw
dHVyZVNvdXJjZUNvY29hLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMuaC4KKworICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlDYXB0dXJlU291cmNlRmFjdG9yeU1hYzo6Y3JlYXRl
RGlzcGxheUNhcHR1cmVTb3VyY2UpOiBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYworICAgICAgICBy
ZW5hbWVkIHRvIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tEaXNwbGF5Q2FwdHVyZXI6OmdlbmVyYXRlRnJhbWUpOiBEaXR0by4KKwogMjAyMS0x
MC0xMyAgR2FicmllbCBOYXZhIE1hcmlubyAgPGduYXZhbWFyaW5vQGFwcGxlLmNvbT4KIAogICAg
ICAgICBTa2lwIGZhbGxiYWNrRm9udHNGb3JSdW5XaXRoSXRlcmF0b3IgZm9yIGVtcHR5IHJ1bnMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvQ2hhbmdlTG9nCmluZGV4IDVlOTEwMmZhY2EyMjYwY2MxOTg5YzdhYjMyNDM5NmRiMTAx
ZmM2YWYuLjBkODYzMTJhNjFjOGFjM2JiMDQxYjg2MjJmOWZmMTczOTk4ZmY3YzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFM
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTEwLTEzICBFcmljIENhcmxzb24gIDxl
cmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFN1cHBvcnQgZ2V0RGlzcGxh
eU1lZGlhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzE0NTUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg0MDQ0NDk1PgorCisgICAgICAgIFJldmll
d2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgKiBQQUwueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBwYWwvaW9zL1JlcGxheUtpdFNvZnRMaW5rLmg6IEFkZGVkLgor
ICAgICAgICAqIHBhbC9pb3MvUmVwbGF5S2l0U29mdExpbmsubW06IEFkZGVkLgorCiAyMDIxLTEw
LTEzICBBZGl0eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFj
T1NdIEFkZCBzdXBwb3J0IGZvciBhY2NlbnQtY29sb3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZTBlYzliNGM3MzU3
NWE1OTJmMDEzNjYzZWQzOWVjOWVjYjZhYzFmYy4uODhjZjkxMzE5NGQzYzMyODhkNTg3NjZmYWY0
MWVjOTg4MDZjMDk2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAyMS0xMC0xMyAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBTdXBw
b3J0IGdldERpc3BsYXlNZWRpYQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMxNDU1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NDA0NDQ5NT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbToKKyAgICAgICAgKFdlYktpdDo6YWxl
cnRNZXNzYWdlVGV4dCk6IEFkZCB0ZXh0IGZvciBkZWZhdWx0IHNjcmVlbiBjYXB0dXJlIHByb21w
dC4KKyAgICAgICAgKFdlYktpdDo6YWxsb3dCdXR0b25UZXh0KTogRGl0dG8uCisgICAgICAgIChX
ZWJLaXQ6OmRvTm90QWxsb3dCdXR0b25UZXh0KTogRGl0dG8uCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlD
bGllbnQ6OmRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KTogQ2FsbAor
ICAgICAgICBkZWZhdWx0IGdldERpc3BsYXlNZWRpYSBwcm9tcHQgaWYgdGhlIGRlbGVnYXRlIGRv
ZXNuJ3QgaW1wbGVtZW50IHRoZSBwcml2YXRlCisgICAgICAgIHByb21wdCBzZWxlY3Rvci4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OnByb21wdEZvckdldERp
c3BsYXlNZWRpYSk6IE5ldyBkZWZhdWx0CisgICAgICAgIGdldERpc3BsYXlNZWRpYSBwcm9tcHQu
CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OnByb21w
dEZvckdldFVzZXJNZWRpYSk6IAorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFByb3h5Ojpkb0RlZmF1bHRBY3Rpb24pOiBDYWxsIHByb21wdEZvckdldERpc3BsYXlN
ZWRpYQorICAgICAgICBvciBwcm9tcHRGb3JHZXRVc2VyTWVkaWEgYWNjb3JkaW5nIHRvIHRoZSBy
ZXF1ZXN0IHR5cGUuCisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
UHJveHk6OmNhblByb21wdEZvckdldERpc3BsYXlNZWRpYSk6CisgICAgICAgIChXZWJLaXQ6OlVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OnByb21wdCk6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuaDoKKyAgICAgICAg
KFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6ZG9EZWZhdWx0QWN0aW9u
KTogRGVsZXRlZC4KKwogMjAyMS0xMC0xMyAgUGVyIEFybmUgIDxwdm9sbGFuQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXN0cmljdCAiZGFyd2luLW5vdGlmaWNhdGlvbi1wb3N0IiB0byBhIG1pbmlt
YWwgc2V0IGluIHRoZSBXUCBzYW5kYm94CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
UEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggM2U5MDUzZTRjOGMyNzIwZTY3ZWMyNzczYTVh
MzIwNTlmZTAyNzA2Ni4uYTU1MWM2NzAzMzQ3MTc1NGRhZmJhOTU0ZmUwOTcwOTkxNDUyZjJlMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMjEsNiArMjEsOCBAQAogLyogRW5kIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0aW9uICov
CiAKIC8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCisJCTA3MUMwMDM3MjcwN0VERjAw
MEQwMjdDNyAvKiBSZXBsYXlLaXRTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MUMwMDM1MjcwN0VERjAwMEQwMjdDNyAvKiBSZXBsYXlL
aXRTb2Z0TGluay5tbSAqLzsgfTsKKwkJMDcxQzAwMzgyNzA3RURGMDAwRDAyN0M3IC8qIFJlcGxh
eUtpdFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwNzFDMDAzNjI3MDdFREYwMDBEMDI3QzcgLyogUmVwbGF5S2l0U29mdExpbmsuaCAqLzsg
fTsKIAkJMDc2MTFEQjYyNDNGQTVCRjAwRDgwNzA0IC8qIFVzYWdlVHJhY2tpbmdTb2Z0TGluay5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2MTFEQjQy
NDNGQTVCRTAwRDgwNzA0IC8qIFVzYWdlVHJhY2tpbmdTb2Z0TGluay5oICovOyB9OwogCQkwNzYx
MURCNzI0M0ZBNUJGMDBEODA3MDQgLyogVXNhZ2VUcmFja2luZ1NvZnRMaW5rLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2MTFEQjUyNDNGQTVCRjAw
RDgwNzA0IC8qIFVzYWdlVHJhY2tpbmdTb2Z0TGluay5tbSAqLzsgfTsKIAkJMDc3RTg3QjEyMjZB
NDYwMjAwQTJBRkYwIC8qIEFWRm91bmRhdGlvblNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc3RTg3QUYyMjZBNDYwMjAwQTJBRkYwIC8q
IEFWRm91bmRhdGlvblNvZnRMaW5rLm1tICovOyB9OwpAQCAtMjM1LDYgKzIzNyw4IEBACiAvKiBF
bmQgUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRmlsZVJl
ZmVyZW5jZSBzZWN0aW9uICovCisJCTA3MUMwMDM1MjcwN0VERjAwMEQwMjdDNyAvKiBSZXBsYXlL
aXRTb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJl
cGxheUtpdFNvZnRMaW5rLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzFDMDAz
NjI3MDdFREYwMDBEMDI3QzcgLyogUmVwbGF5S2l0U29mdExpbmsuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVwbGF5S2l0U29mdExpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDc2MTFEQjQyNDNGQTVCRTAwRDgwNzA0IC8qIFVzYWdlVHJhY2tpbmdTb2Z0
TGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2FnZVRyYWNraW5nU29m
dExpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2MTFEQjUyNDNGQTVCRjAw
RDgwNzA0IC8qIFVzYWdlVHJhY2tpbmdTb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFVzYWdlVHJhY2tpbmdTb2Z0TGluay5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMDc3RTg3QUYyMjZBNDYwMjAwQTJBRkYwIC8qIEFWRm91bmRhdGlv
blNvZnRMaW5rLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQVZG
b3VuZGF0aW9uU29mdExpbmsubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NzEs
NiArNzc1LDggQEAKIAkJCQk1QzdDNzg3MjIzQUMzRTc3MDA2NUY0N0UgLyogTWFuYWdlZENvbmZp
Z3VyYXRpb25Tb2Z0TGluay5tbSAqLywKIAkJCQk0NDUwRkM5RTIxRjVGNjAyMDA0REZBNTYgLyog
UXVpY2tMb29rU29mdExpbmsuaCAqLywKIAkJCQk0NDUwRkM5RDIxRjVGNjAyMDA0REZBNTYgLyog
UXVpY2tMb29rU29mdExpbmsubW0gKi8sCisJCQkJMDcxQzAwMzYyNzA3RURGMDAwRDAyN0M3IC8q
IFJlcGxheUtpdFNvZnRMaW5rLmggKi8sCisJCQkJMDcxQzAwMzUyNzA3RURGMDAwRDAyN0M3IC8q
IFJlcGxheUtpdFNvZnRMaW5rLm1tICovLAogCQkJCTA3OUQxRDk1MjY5NTBERDcwMDg4MzU3NyAv
KiBTeXN0ZW1TdGF0dXNTb2Z0TGluay5oICovLAogCQkJCTA3OUQxRDk2MjY5NTBERDcwMDg4MzU3
NyAvKiBTeXN0ZW1TdGF0dXNTb2Z0TGluay5tbSAqLywKIAkJCQkyRTEzNDJDQTIxNUFBMTBBMDA3
MTk5RDIgLyogVUlLaXRTb2Z0TGluay5oICovLApAQCAtOTkyLDYgKzk5OCw3IEBACiAJCQkJNDQ1
MEZDQTAyMUY1RjYwMjAwNERGQTU2IC8qIFF1aWNrTG9va1NvZnRMaW5rLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwQzVBRjkyMDFGNDNBNEM3MDAyRUFDMDIgLyogUXVpY2tMb29rU1BJLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGNEM4NUE0RjI2NTg1NTFBMDA1Qjg5Q0MgLyogUXVpY2tMb29rVUlTb2Z0
TGluay5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDcxQzAwMzgyNzA3RURGMDAwRDAyN0M3IC8qIFJl
cGxheUtpdFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDk3NEVBMzI2NUVFQTIyMDBC
NDlCOEMgLyogUmV2ZWFsU29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ0Mjk1NkNEMjE4
QTcyREYwMDgwREI1NCAvKiBSZXZlYWxTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MEFCOEYx
MjBBRTJFOEQwMEI4QkU4NyAvKiBTZWNLZXlQcm94eVNQSS5oIGluIEhlYWRlcnMgKi8sCkBAIC0x
MTM2LDYgKzExNDMsNyBAQAogCQkJCUExMTc1QjRGMUY2QjMzNzMwMEM0QjlGMCAvKiBQb3B1cE1l
bnUubW0gaW4gU291cmNlcyAqLywKIAkJCQk0NDUwRkM5RjIxRjVGNjAyMDA0REZBNTYgLyogUXVp
Y2tMb29rU29mdExpbmsubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNEM4NUE0RTI2NTg1NTFBMDA1
Qjg5Q0MgLyogUXVpY2tMb29rVUlTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAorCQkJCTA3MUMw
MDM3MjcwN0VERjAwMEQwMjdDNyAvKiBSZXBsYXlLaXRTb2Z0TGluay5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUY0OTc0RUE0MjY1RUVBMjIwMEI0OUI4QyAvKiBSZXZlYWxTb2Z0TGluay5tbSBpbiBT
b3VyY2VzICovLAogCQkJCUEzQzY2Q0RDMUY0NjJENkEwMDlFNkVFOSAvKiBTZXNzaW9uSUQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTNBQjZFNTIxRjNEMURDNTAwOUMxNEIxIC8qIFNsZWVwRGlz
YWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2lvcy9SZXBsYXlLaXRTb2Z0TGluay5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9pb3Mv
UmVwbGF5S2l0U29mdExpbmsuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZWMyOTFkZjRjZTQzODJmYjcxZmFmMjVh
ZmE5NGY2YmYyMWJlMDY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9pb3MvUmVwbGF5S2l0U29mdExpbmsuaApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisg
KiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKworI2ltcG9ydCA8UmVw
bGF5S2l0L1JlcGxheUtpdC5oPgorI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisKK1NPRlRf
TElOS19GUkFNRVdPUktfRk9SX0hFQURFUihQQUwsIFJlcGxheUtpdCkKKworU09GVF9MSU5LX0NM
QVNTX0ZPUl9IRUFERVIoUEFMLCBSUFNjcmVlblJlY29yZGVyKQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvaW9zL1JlcGxheUtpdFNvZnRMaW5rLm1tIGIvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9pb3MvUmVwbGF5S2l0U29mdExpbmsubW0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YTdiYjJjYTU4MGNhNmE2MTNhZmUwM2EyMWY2M2I5Y2M5MWQxMTRmNAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvaW9zL1JlcGxheUtpdFNvZnRMaW5rLm1tCkBAIC0w
LDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQorCisjaW1wb3J0IDxSZXBsYXlLaXQvUmVwbGF5S2l0Lmg+CisjaW1w
b3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKworU09GVF9MSU5LX0ZSQU1FV09SS19GT1JfU09VUkNF
KFBBTCwgUmVwbGF5S2l0KQorCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9S
VChQQUwsIFJlcGxheUtpdCwgUlBTY3JlZW5SZWNvcmRlciwgUEFMX0VYUE9SVCkKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dl
YkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCBhNGMwYTc2MjdjMzc4MWRmY2QwNDkwNmZjNTIz
MzA5YzkwNzMwYzJjLi5hZTkzY2M2YWVkMTNjNGRkMmI0MWEyZDFhMmM3MTgzMjc3ZTczMTU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTUyMiw5ICs1MjIsMTEgQEAgcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuY3Bw
CiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ckludGVybmFsVW5pdC5jcHAKIHBsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyVW5pdC5jcHAKK3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0Rp
c3BsYXlDYXB0dXJlU291cmNlQ29jb2EuY3BwCiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZB
dWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlLm1tCiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZB
dWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbSBAbm8tdW5pZnkKIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL2lvcy9Db3JlQXVkaW9DYXB0dXJlU291cmNlSU9TLm1tCitwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9pb3MvUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZS5tbSBAbm8tdW5pZnkKIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlckNvY29hLmNwcAogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0KIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQpAQCAtNTM1LDcgKzUzNyw2IEBA
IHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlLmNwcAogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcAog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuY3BwCiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVNYW5hZ2VyQ29jb2EuY3BwCi1wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMuY3BwCiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvTWVkaWFTdHJlYW1UcmFja0F1ZGlvU291cmNlUHJvdmlkZXJDb2Nv
YS5jcHAKIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrQXVkaW9TaGFyZWRVbml0Lm1tCiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA3NTE5NzRhMmI3ZmYzNzZlMDVmYzExM2JlN2QzNjcxN2U3YzkxYTc1Li5kNTc0YjdhNmEwNGIw
Nzg5ZTNmYWMyMmE0MzcxYTUxNGU3NDJlZDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05OCw2ICs5OCw4IEBACiAJCTA3MEU4
MUQxMUJGMjc2NTYwMDFGREE0OCAvKiBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzBFODFEMDFCRjI3
NjU2MDAxRkRBNDggLyogVmlkZW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oICovOyB9OwogCQkw
NzBGNTQ5ODE3RjEyRjZCMDAxNjlFMDQgLyogTWVkaWFTdHJlYW1Db25zdHJhaW50c1ZhbGlkYXRp
b25DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3MEY1NDk3MTdGMTJGNkIwMDE2OUUwNCAvKiBNZWRpYVN0cmVhbUNvbnN0cmFpbnRzVmFsaWRh
dGlvbkNsaWVudC5oICovOyB9OwogCQkwNzFBOUVDMzE2OEZCQzU1MDAyNjI5RjkgLyogVGV4dFRy
YWNrQ3VlR2VuZXJpYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDcxQTlFQzExNjhGQjU2QzAwMjYyOUY5IC8qIFRleHRUcmFja0N1ZUdlbmVyaWMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwNzFDMDAz
NDI3MDdEOTU1MDBEMDI3QzcgLyogUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcxQzAwMzMyNzA3RDk0NDAwRDAy
N0M3IC8qIFJlcGxheUtpdENhcHR1cmVTb3VyY2UuaCAqLzsgfTsKKwkJMDcxQzAwNEIyNzBCODY0
OTAwRDAyN0M3IC8qIFJlcGxheUtpdENhcHR1cmVTb3VyY2UubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzFDMDAzMjI3MDdEOTQzMDBEMDI3QzcgLyog
UmVwbGF5S2l0Q2FwdHVyZVNvdXJjZS5tbSAqLzsgfTsKIAkJMDcxRTQ5NzAxQUQ1QUI1RTAwOEE1
MEI0IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcxRTQ5NkYxQUQ1QUI1RTAwOEE1MEI0IC8qIE1lZGlh
UGxheWJhY2tUYXJnZXRDb2NvYS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTA3MjVFRkE5MjM5QUQ3OTMwMEE1MzhBOSAvKiBNZWRpYVBsYXllclBy
aXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3
OUY1RTRCMEYzQkVCRUEwMDVFMDc4MiAvKiBNZWRpYVBsYXllclByaXZhdGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwNzI3N0U0RDE3RDAxOEND
MDAxNTUzNEQgLyogSlNNZWRpYVN0cmVhbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDcyNzdFNDExN0QwMThDQzAwMTU1MzREIC8qIEpTTWVkaWFTdHJl
YW0uaCAqLzsgfTsKQEAgLTIwNyw2ICsyMDksNyBAQAogCQkwN0I3MTE2RDFEODk5RTYzMDA5RjBG
RkIgLyogQ2FwdHVyZURldmljZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDdCNzExNkExRDg5OUU2MzAwOUYwRkZCIC8qIENhcHR1cmVEZXZpY2UuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwN0I3MTE2
RjFEODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVyZURldmljZU1hbmFnZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QjcxMTZDMUQ4OTlFNjMwMDlGMEZG
QiAvKiBDYXB0dXJlRGV2aWNlTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTA3QjkzRkZDMjNCOTRFQzcwMDM2RjhFQSAvKiBNSU1FVHlw
ZUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
N0I5M0ZGOTIzQjkyQUFBMDAzNkY4RUEgLyogTUlNRVR5cGVDYWNoZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTA3QkIxRTcwMjcxNzZDRDkwMDFE
RjI4OSAvKiBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0JCMUU2RjI3MTc2Q0NBMDAxREYyODkgLyogRGlz
cGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oICovOyB9OwogCQkwN0MwNDZDNDFFNDI1MDhCMDA3MjAx
RTcgLyogQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzNCODc1ODFFNDBEQ0ZEMDA3MUMwRUMgLyogQ0FBdWRp
b1N0cmVhbURlc2NyaXB0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMDdDMDQ2Q0IxRTQyNjQxMzAwNzIwMUU3IC8qIEF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3M0I4NzU2MUU0MERDRTUwMDcxQzBFQyAvKiBBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDdDMTQ4MkUy
NjEyQTIxRjAwNzc1ODI4IC8qIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3N0JBNTg4MjYxMjZENjYw
MDcyRjE5RiAvKiBNZWRpYVNlc3Npb25Db29yZGluYXRvclN0YXRlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTU4NTIsNiArNTg1NSw4IEBACiAJ
CTA3MTc3NjVGMjZDMzAzQjcwMEE2MzI5OSAvKiBDR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJl
U291cmNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2Fw
dHVyZVNvdXJjZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcxQTlFQzAxNjhG
QjU2QzAwMjYyOUY5IC8qIFRleHRUcmFja0N1ZUdlbmVyaWMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dFRyYWNrQ3VlR2VuZXJpYy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTA3MUE5RUMxMTY4RkI1NkMwMDI2MjlGOSAvKiBUZXh0VHJhY2tD
dWVHZW5lcmljLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRUcmFja0N1
ZUdlbmVyaWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcxQzAwMzIyNzA3RDk0
MzAwRDAyN0M3IC8qIFJlcGxheUtpdENhcHR1cmVTb3VyY2UubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBSZXBsYXlLaXRDYXB0dXJlU291cmNlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwNzFDMDAzMzI3MDdEOTQ0MDBEMDI3QzcgLyogUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZXBsYXlLaXRDYXB0dXJlU291cmNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA3MUU0OTZEMUFENUFBMEQwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNr
VGFyZ2V0Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTA3MUU0OTZGMUFENUFCNUUwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5YmFja1RhcmdldENvY29h
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MjIxQjRDMTdDRUMzMjcwMDg0OEU1
MSAvKiBNZWRpYVN0cmVhbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBNZWRpYVN0cmVhbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MDQwLDEw
ICs2MDQ1LDggQEAKIAkJMDc5RjVFNEIwRjNCRUJFQTAwNUUwNzgyIC8qIE1lZGlhUGxheWVyUHJp
dmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVBsYXllclByaXZh
dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdBNkQxRTkxNDkxMTM3NzAwMDUx
RDBDIC8qIE1lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA3QTZEMUVBMTQ5MTEzNzcwMDA1MUQwQyAvKiBNZWRpYUZyYWdtZW50
VVJJUGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhRnJhZ21l
bnRVUklQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDdBNkQ4NDcxRkVC
NzAwQjAwNjQ0MURFIC8qIERpc3BsYXlDYXB0dXJlU291cmNlTWFjLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpc3BsYXlDYXB0dXJlU291cmNlTWFjLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdBNkQ4NDgxRkVCNzAwQjAwNjQ0MURFIC8qIERp
c3BsYXlDYXB0dXJlTWFuYWdlckNvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IERpc3BsYXlDYXB0dXJlTWFuYWdlckNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMDdBNkQ4NDkxRkVCNzAwQzAwNjQ0MURFIC8qIERpc3BsYXlDYXB0dXJl
TWFuYWdlckNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlD
YXB0dXJlTWFuYWdlckNvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3QTZE
ODRBMUZFQjcwMEQwMDY0NDFERSAvKiBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0FBNkI2OTE2NkQwMTk1MDBENDU2NzEgLyogSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDdBQTZCNkExNjZEMDE5NTAwRDQ1NjcxIC8qIEluYmFuZFRleHRUcmFja1By
aXZhdGVBVkZPYmpDLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTA3QUI5OTY1MThEQTNDMDEwMDE4NzcxRSAvKiBSVENDb25maWd1cmF0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ0NvbmZpZ3VyYXRpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYwNjMsNiArNjA2Niw4IEBACiAJCTA3QjcxMTZDMUQ4
OTlFNjMwMDlGMEZGQiAvKiBDYXB0dXJlRGV2aWNlTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDYXB0dXJlRGV2aWNlTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwN0I5M0ZGOTIzQjkyQUFBMDAzNkY4RUEgLyogTUlNRVR5cGVDYWNoZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNSU1FVHlwZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTA3QjkzRkZCMjNCOTJBQUIwMDM2RjhFQSAvKiBNSU1FVHlwZUNhY2hlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IE1JTUVUeXBlQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwN0JCMUU2RTI3MTc2Q0NBMDAxREYyODkgLyogRGlzcGxheUNhcHR1cmVTb3VyY2VD
b2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdCQjFFNkYyNzE3NkNDQTAwMURGMjg5
IC8qIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUNh
cHR1cmVTb3VyY2VDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0MxNDgy
OTI2MTI5NTVDMDA3NzU4MjggLyogSlNNZWRpYVNlc3Npb25SZWFkeVN0YXRlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTTWVkaWFTZXNzaW9uUmVhZHlTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwN0MxNDgyQjI2MTI5NTVEMDA3NzU4MjggLyogSlNNZWRpYVNlc3Npb25SZWFkeVN0
YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFTZXNzaW9uUmVhZHlTdGF0ZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QzE0ODJDMjYxMjk1NUUwMDc3NTgyOCAv
KiBKU01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNNZWRpYVNlc3Npb25Db29yZGluYXRvclN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE3NzkxLDggKzE3Nzk2LDYgQEAKIAkJCQkzRjNCQjU4MzFFNzA5RUU0MDBDNzAx
RjIgLyogQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oICovLAogCQkJCTA3QTZEODQ4MUZFQjcwMEIw
MDY0NDFERSAvKiBEaXNwbGF5Q2FwdHVyZU1hbmFnZXJDb2NvYS5jcHAgKi8sCiAJCQkJMDdBNkQ4
NDkxRkVCNzAwQzAwNjQ0MURFIC8qIERpc3BsYXlDYXB0dXJlTWFuYWdlckNvY29hLmggKi8sCi0J
CQkJMDdBNkQ4NDcxRkVCNzAwQjAwNjQ0MURFIC8qIERpc3BsYXlDYXB0dXJlU291cmNlTWFjLmNw
cCAqLywKLQkJCQkwN0E2RDg0QTFGRUI3MDBEMDA2NDQxREUgLyogRGlzcGxheUNhcHR1cmVTb3Vy
Y2VNYWMuaCAqLywKIAkJCQk0MTc0RTkyMDI1MzVEQ0REMDBGRTQyMDIgLyogTWVkaWFTdHJlYW1U
cmFja0F1ZGlvU291cmNlUHJvdmlkZXJDb2NvYS5jcHAgKi8sCiAJCQkJNDE3NEU5MUUyNTM1RENE
NjAwRkU0MjAyIC8qIE1lZGlhU3RyZWFtVHJhY2tBdWRpb1NvdXJjZVByb3ZpZGVyQ29jb2EuaCAq
LywKIAkJCQkwNzQ0RUNFQjFFMEM0QUU1MDAwRDA5NDQgLyogTW9ja0F1ZGlvU2hhcmVkVW5pdC5o
ICovLApAQCAtMjAxMDgsNiArMjAxMTEsOCBAQAogCQkJCTQxQzNCODlGMjY0OUIxQjcwMDRFRDRE
RSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdC5oICovLAogCQkJ
CTQxQzNCOEEwMjY0OUIxQjcwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
clVuaXQuY3BwICovLAogCQkJCTQxQzNCODlCMjY0OUIxQjYwMDRFRDRERSAvKiBBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuaCAqLywKKwkJCQkwN0JCMUU2RTI3MTc2Q0NBMDAxREYy
ODkgLyogRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHAgKi8sCisJCQkJMDdCQjFFNkYyNzE3
NkNDQTAwMURGMjg5IC8qIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuaCAqLywKIAkJCSk7CiAJ
CQlwYXRoID0gY29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjg4MDIsNiAr
Mjg4MDcsOCBAQAogCQkJCUNEQzY3NTIwMUVBRUE5QjcwMDcyN0M4NCAvKiBBVkF1ZGlvU2Vzc2lv
bkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tICovLAogCQkJCTA3QUZGNDIwMUVGQjE0NDcwMEI1NDVC
MyAvKiBDb3JlQXVkaW9DYXB0dXJlU291cmNlSU9TLmggKi8sCiAJCQkJMDdBRkY0MjExRUZCMTQ0
NzAwQjU0NUIzIC8qIENvcmVBdWRpb0NhcHR1cmVTb3VyY2VJT1MubW0gKi8sCisJCQkJMDcxQzAw
MzMyNzA3RDk0NDAwRDAyN0M3IC8qIFJlcGxheUtpdENhcHR1cmVTb3VyY2UuaCAqLywKKwkJCQkw
NzFDMDAzMjI3MDdEOTQzMDBEMDI3QzcgLyogUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZS5tbSAqLywK
IAkJCSk7CiAJCQlwYXRoID0gaW9zOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMy
NDU2LDYgKzMyNDYzLDcgQEAKIAkJCQk4MzVENTRDNTFGNERFNTM4MDBFNjA2NzEgLyogRGlyZWN0
b3J5RmlsZUxpc3RDcmVhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDdBMDlEMTIwQTkzQTk3
MDAyNDBGQUUgLyogRGlzYWJsZWRBZGFwdGF0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0VE
QUFGQzkxOUEyQ0NEQzAwMzRERkQxIC8qIERpc2tDYWNoZU1vbml0b3JDb2NvYS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMDdCQjFFNzAyNzE3NkNEOTAwMURGMjg5IC8qIERpc3BsYXlDYXB0dXJlU291
cmNlQ29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTVGQkQzMUMzREQ1MUUwMDA3QTJDQSAv
KiBEaXNwbGF5TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTVBRDA5NDAyNDA4OTY0MDAwREU0
RDJGIC8qIERpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTU1
QUQwOTNFMjQwODk2MzUwMERFNEQyRiAvKiBEaXNwbGF5TGlzdEltYWdlQnVmZmVyLmggaW4gSGVh
ZGVycyAqLywKQEAgLTM1MDg4LDYgKzM1MDk2LDcgQEAKIAkJCQlBODlDQ0M1MzBGNDRFOTgxMDBC
NURBMTAgLyogUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJERjUxMkNFMUQ4NzNFNDcwMDFENjc4MCAvKiBSZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RTBBMDk5RTY0OTIwMDU2RTU4MSAvKiBSZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDcxQzAwMzQyNzA3RDk1NTAw
RDAyN0M3IC8qIFJlcGxheUtpdENhcHR1cmVTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2
REQ2RTFGMjZFN0RCRTcwMDhDMUY0QyAvKiBSZXBvcnRpbmdFbmRwb2ludHNDYWNoZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDk5OEFFQzYxM0Y5RDBFQTAwOTBCMUFBIC8qIFJlcXVlc3RBbmltYXRp
b25GcmFtZUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0REMDEyNTFGMTJEMDAz
RUYyNjkgLyogUmVzZXRJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzY4MTAsNiArMzY4
MTksNyBAQAogCQkJCUNEQTI5QTMwMUNCRjc0RDQwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VBVktpdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQTI5QTE2MUNCREE1NkMwMDkw
MUNDRiAvKiBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk0MTkyNDI0OTIxMjdCOTNFMDA2MzRGQ0YgLyogUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNl
Q29jb2EubW0gaW4gU291cmNlcyAqLywKKwkJCQkwNzFDMDA0QjI3MEI4NjQ5MDBEMDI3QzcgLyog
UmVwbGF5S2l0Q2FwdHVyZVNvdXJjZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDMkIxQUVDMjIz
OTdFQkMwMEI5MUNGNyAvKiBSZXNvdXJjZVJlc3BvbnNlQ29jb2EubW0gaW4gU291cmNlcyAqLywK
IAkJCQlCQzUxMTU2RTEyQjE3NDlDMDBDOTY3NTQgLyogU2Nyb2xsQW5pbWF0b3JNYWMubW0gaW4g
U291cmNlcyAqLywKIAkJCQkwRkVFMzcxMTI2RjE5NTI5MDAxQjUxODQgLyogU2Nyb2xsYmFyc0Nv
bnRyb2xsZXJNYWMubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MgYi9Tb3VyY2UvV2ViQ29yZS9lbi5scHJvai9M
b2NhbGl6YWJsZS5zdHJpbmdzCmluZGV4IGUxMjljY2E5ODNiOWVmZDRmODNlNzRiMjJiNGJmMzY3
NDk4YTE1ZDMuLmEwNTlkN2JiMmUwYmFmM2IyMDBmOTRmZjcxMjMwMjljODA5ZGI2NDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKKysrIGIv
U291cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwpAQCAtMTYzLDYgKzE2
Myw5IEBACiAvKiBBbGxvdyBidXR0b24gdGl0bGUgaW4gdXNlciBtZWRpYSBwcm9tcHQgKi8KICJB
bGxvdyAodXNlcm1lZGlhKSIgPSAiQWxsb3ciOwogCisvKiBBbGxvdyBidXR0b24gdGl0bGUgaW4g
c2NyZWVuIHNoYXJpbmcgcHJvbXB0ICovCisiQWxsb3cgKHNjcmVlbnNoYXJpbmcpIiA9ICJBbGxv
dyI7CisKIC8qIE1lc3NhZ2UgZm9yIHJlcXVlc3RpbmcgY3Jvc3Mtc2l0ZSBjb29raWUgYW5kIHdl
YnNpdGUgZGF0YSBhY2Nlc3MuICovCiAiQWxsb3cg4oCcJUDigJ0gYW5kIOKAnCVA4oCdIHRvIHVz
ZSBjb29raWVzIGFuZCB3ZWJzaXRlIGRhdGEgd2hpbGUgYnJvd3Npbmcg4oCcJUDigJ0/IiA9ICJB
bGxvdyDigJwlQOKAnSBhbmQg4oCcJUDigJ0gdG8gdXNlIGNvb2tpZXMgYW5kIHdlYnNpdGUgZGF0
YSB3aGlsZSBicm93c2luZyDigJwlQOKAnT8iOwogCkBAIC0xODQsNiArMTg3LDkgQEAKIC8qIE1l
c3NhZ2UgZm9yIHVzZXIgbWljcm9waG9uZSBhY2Nlc3MgcHJvbXB0ICovCiAiQWxsb3cg4oCcJUDi
gJ0gdG8gdXNlIHlvdXIgbWljcm9waG9uZT8iID0gIkFsbG93IOKAnCVA4oCdIHRvIHVzZSB5b3Vy
IG1pY3JvcGhvbmU/IjsKIAorLyogTWVzc2FnZSBmb3Igc2NyZWVuIHNoYXJpbmcgcHJvbXB0LiAq
LworIkFsbG93IOKAnCVA4oCdIHRvIG9ic2VydmUgeW91ciBzY3JlZW4/IiA9ICJBbGxvdyDigJwl
QOKAnSB0byBvYnNlcnZlIHlvdXIgc2NyZWVuPyI7CisKIC8qIFdLRXJyb3JVbmtub3duIGRlc2Ny
aXB0aW9uICovCiAiQW4gdW5rbm93biBlcnJvciBvY2N1cnJlZCIgPSAiQW4gdW5rbm93biBlcnJv
ciBvY2N1cnJlZCI7CiAKQEAgLTM5MSw2ICszOTcsOSBAQAogLyogRGlzYWxsb3cgYnV0dG9uIHRp
dGxlIGluIHVzZXIgbWVkaWEgcHJvbXB0ICovCiAiRG9u4oCZdCBBbGxvdyAodXNlcm1lZGlhKSIg
PSAiRG9u4oCZdCBBbGxvdyI7CiAKKy8qIERpc2FsbG93IGJ1dHRvbiB0aXRsZSBpbiBzY3JlZW4g
c2hhcmluZyBwcm9tcHQgKi8KKyJEb27igJl0IEFsbG93IChzY3JlZW5zaGFyaW5nKSIgPSAiRG9u
4oCZdCBBbGxvdyI7CisKIC8qIERvd25sb2FkIEF1ZGlvIFRvIERpc2sgY29udGV4dCBtZW51IGl0
ZW0gKi8KICJEb3dubG9hZCBBdWRpbyIgPSAiRG93bmxvYWQgQXVkaW8iOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lv
blZULmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVy
U2Vzc2lvblZULmgKaW5kZXggNGYyMjlkZTZhZmY5ZGYxYTFkNDJkNzYwZTI3MDk5MDVjODg3ZjQw
ZC4uZWM5NWJmYjgzNGFmM2NjZTIyNzRiNWRlNWRlNzZiZjMzMzIzNmFjZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25W
VC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNm
ZXJTZXNzaW9uVlQuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8TWVk
aWFTYW1wbGU+IGNvbnZlcnRNZWRpYVNhbXBsZShNZWRpYVNhbXBsZSYsIGNvbnN0IEludFNpemUm
KTsKICAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IGNyZWF0ZU1lZGlhU2FtcGxlKENHSW1hZ2VSZWYs
IGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IEludFNpemUmLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3Rh
dGlvbiA9IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lLCBib29sIG1pcnJvcmVkID0g
ZmFsc2UpOwotICAgIFJlZlB0cjxNZWRpYVNhbXBsZT4gY3JlYXRlTWVkaWFTYW1wbGUoQ01TYW1w
bGVCdWZmZXJSZWYsIGNvbnN0IEludFNpemUmLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiA9
IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lLCBib29sIG1pcnJvcmVkID0gZmFsc2Up
OworICAgIFJlZlB0cjxNZWRpYVNhbXBsZT4gY3JlYXRlTWVkaWFTYW1wbGUoQ01TYW1wbGVCdWZm
ZXJSZWYsIGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IEludFNpemUmLCBNZWRpYVNhbXBsZTo6Vmlk
ZW9Sb3RhdGlvbiA9IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lLCBib29sIG1pcnJv
cmVkID0gZmFsc2UpOwogCiAjaWYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIFdFQkNPUkVf
RVhQT1JUIFJlZlB0cjxNZWRpYVNhbXBsZT4gY3JlYXRlTWVkaWFTYW1wbGUoSU9TdXJmYWNlUmVm
LCBjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBJbnRTaXplJiwgTWVkaWFTYW1wbGU6OlZpZGVvUm90
YXRpb24gPSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSwgYm9vbCBtaXJyb3JlZCA9
IGZhbHNlKTsKQEAgLTY3LDcgKzY3LDcgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8Q01TYW1w
bGVCdWZmZXJSZWY+IGNyZWF0ZUNNU2FtcGxlQnVmZmVyKElPU3VyZmFjZVJlZiwgY29uc3QgTWVk
aWFUaW1lJiwgY29uc3QgSW50U2l6ZSYpOwogI2VuZGlmCiAKLSAgICBSZXRhaW5QdHI8Q01TYW1w
bGVCdWZmZXJSZWY+IGNvbnZlcnRDTVNhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZiwgY29u
c3QgSW50U2l6ZSYpOworICAgIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gY29udmVydENN
U2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmLCBjb25zdCBJbnRTaXplJiwgY29uc3QgTWVk
aWFUaW1lKiA9IG51bGxwdHIpOwogICAgIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gY3Jl
YXRlQ01TYW1wbGVCdWZmZXIoQ1ZQaXhlbEJ1ZmZlclJlZiwgY29uc3QgTWVkaWFUaW1lJiwgY29u
c3QgSW50U2l6ZSYpOwogICAgIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gY3JlYXRlQ01T
YW1wbGVCdWZmZXIoQ0dJbWFnZVJlZiwgY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgSW50U2l6ZSYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFn
ZVRyYW5zZmVyU2Vzc2lvblZULm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5tbQppbmRleCBkNTczYjdmOTVhYWNhOGMyNDFlNWE1
MWI5NDBiYjMwN2ExMjdmOGVkLi5hYmI5OTIzOTNlNTc1M2IzNjllN2M1NTQ0NmExMWJkMDczN2Fk
OTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFn
ZVRyYW5zZmVyU2Vzc2lvblZULm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQubW0KQEAgLTEwOCw3ICsxMDgsNyBAQCBSZXRh
aW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gSW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y29udmVydFBp
eGVsQnVmZmVyKENWUGl4ZWxCdQogICAgIHJldHVybiBvdXRwdXRCdWZmZXI7CiB9CiAKLVJldGFp
blB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gSW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y29udmVydENN
U2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmIHNvdXJjZUJ1ZmZlciwgY29uc3QgSW50U2l6
ZSYgc2l6ZSkKK1JldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gSW1hZ2VUcmFuc2ZlclNlc3Np
b25WVDo6Y29udmVydENNU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmIHNvdXJjZUJ1ZmZl
ciwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgTWVkaWFUaW1lKiBzYW1wbGVUaW1lKQogewog
ICAgIGlmICghc291cmNlQnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE0MSw2
ICsxNDEsMTQgQEAgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBJbWFnZVRyYW5zZmVyU2Vz
c2lvblZUOjpjb252ZXJ0Q01TYW1wbGVCdWZmZXIoQ01TYW0KICAgICAgICAgICAgIFJFTEVBU0Vf
TE9HKE1lZGlhLCAiSW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y29udmVydENNU2FtcGxlQnVmZmVy
OiBDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZVRpbWluZ0luZm9BcnJheSBmYWlsZWQgd2l0aCBlcnJv
ciBjb2RlOiAlZCIsIHN0YXRpY19jYXN0PGludD4oc3RhdHVzKSk7CiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAgICAgfQorCisgICAgICAgIGlmIChzYW1wbGVUaW1lKSB7CisgICAg
ICAgICAgICBhdXRvIGNtVGltZSA9IFBBTDo6dG9DTVRpbWUoKnNhbXBsZVRpbWUpOworICAgICAg
ICAgICAgZm9yIChhdXRvJiB0aW1pbmcgOiB0aW1pbmdJbmZvQXJyYXkpIHsKKyAgICAgICAgICAg
ICAgICB0aW1pbmcucHJlc2VudGF0aW9uVGltZVN0YW1wID0gY21UaW1lOworICAgICAgICAgICAg
ICAgIHRpbWluZy5kZWNvZGVUaW1lU3RhbXAgPSBjbVRpbWU7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KICAgICAgICAgdGltZWluZ0luZm9QdHIgPSB0aW1pbmdJbmZvQXJyYXkuZGF0YSgpOwog
ICAgIH0KIApAQCAtMjg3LDkgKzI5NSw5IEBAIFJlZlB0cjxNZWRpYVNhbXBsZT4gSW1hZ2VUcmFu
c2ZlclNlc3Npb25WVDo6Y3JlYXRlTWVkaWFTYW1wbGUoQ0dJbWFnZVJlZiBpbWFnZSwKICAgICBy
ZXR1cm4gTWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGUoc2FtcGxlQnVmZmVyLmdldCgpLCByb3Rh
dGlvbiwgbWlycm9yZWQpOwogfQogCi1SZWZQdHI8TWVkaWFTYW1wbGU+IEltYWdlVHJhbnNmZXJT
ZXNzaW9uVlQ6OmNyZWF0ZU1lZGlhU2FtcGxlKENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlciwgY29u
c3QgSW50U2l6ZSYgc2l6ZSwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb24sIGJv
b2wgbWlycm9yZWQpCitSZWZQdHI8TWVkaWFTYW1wbGU+IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6
OmNyZWF0ZU1lZGlhU2FtcGxlKENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlciwgY29uc3QgTWVkaWFU
aW1lJiBzYW1wbGVUaW1lLCBjb25zdCBJbnRTaXplJiBzaXplLCBNZWRpYVNhbXBsZTo6VmlkZW9S
b3RhdGlvbiByb3RhdGlvbiwgYm9vbCBtaXJyb3JlZCkKIHsKLSAgICBhdXRvIHNhbXBsZUJ1ZmZl
ciA9IGNvbnZlcnRDTVNhbXBsZUJ1ZmZlcihidWZmZXIsIHNpemUpOworICAgIGF1dG8gc2FtcGxl
QnVmZmVyID0gY29udmVydENNU2FtcGxlQnVmZmVyKGJ1ZmZlciwgc2l6ZSwgJnNhbXBsZVRpbWUp
OwogICAgIGlmICghc2FtcGxlQnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvRGlzcGxh
eUNhcHR1cmVTb3VyY2VDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9jb2NvYS9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NDcz
NTljOGFkNzJhNTE0YTNkNjI3MWIxYThmYTc3Yjc0ZWFhOTNkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvRGlzcGxheUNhcHR1cmVT
b3VyY2VDb2NvYS5jcHAKQEAgLTAsMCArMSwzMTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KSAmJiBQTEFURk9STShDT0NPQSkKKworI2luY2x1ZGUgIkNHRGlzcGxheVN0cmVhbVNjcmVlbkNh
cHR1cmVTb3VyY2UuaCIKKyNpbmNsdWRlICJJbWFnZVRyYW5zZmVyU2Vzc2lvblZULmgiCisjaW5j
bHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1lZGlhU2FtcGxlQVZGT2JqQy5oIgorI2luY2x1
ZGUgIlBpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuaCIKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291
cmNlLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIgorI2luY2x1ZGUg
IlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlJlYWx0aW1lVmlkZW9V
dGlsaXRpZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb1NhbXBsZS5oIgorI2luY2x1ZGUgIlJl
cGxheUtpdENhcHR1cmVTb3VyY2UuaCIKKyNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgPENv
cmVNZWRpYS9DTVN5bmMuaD4KKyNpbmNsdWRlIDxJT1N1cmZhY2UvSU9TdXJmYWNlUmVmLmg+Cisj
aW5jbHVkZSA8bWFjaC9tYWNoX3RpbWUuaD4KKyNpbmNsdWRlIDxwYWwvYXZmb3VuZGF0aW9uL01l
ZGlhVGltZUFWRm91bmRhdGlvbi5oPgorI2luY2x1ZGUgPHBhbC9zcGkvY2YvQ29yZUF1ZGlvU1BJ
Lmg+CisjaW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KKyNpbmNsdWRlIDxw
YWwvc3BpL2NvY29hL0lPU3VyZmFjZVNQSS5oPgorI2luY2x1ZGUgPHN5cy90aW1lLmg+CisjaW5j
bHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
KworI2luY2x1ZGUgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCisjaW5jbHVkZSA8cGFsL2NmL0NvcmVN
ZWRpYVNvZnRMaW5rLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ2FwdHVyZVNvdXJjZU9y
RXJyb3IgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Y3JlYXRlKGNvbnN0IENhcHR1cmVEZXZp
Y2UmIGRldmljZSwgY29uc3QgTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMpCit7CisgICAg
c3dpdGNoIChkZXZpY2UudHlwZSgpKSB7CisgICAgY2FzZSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VU
eXBlOjpTY3JlZW46CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAgICAgcmV0dXJuIGNy
ZWF0ZShSZXBsYXlLaXRDYXB0dXJlU291cmNlOjpjcmVhdGUoZGV2aWNlLnBlcnNpc3RlbnRJZCgp
KSwgZGV2aWNlLCBjb25zdHJhaW50cyk7CisjZWxzZQorICAgICAgICByZXR1cm4gY3JlYXRlKENH
RGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2U6OmNyZWF0ZShkZXZpY2UucGVyc2lzdGVu
dElkKCkpLCBkZXZpY2UsIGNvbnN0cmFpbnRzKTsKKyNlbmRpZgorICAgIGNhc2UgQ2FwdHVyZURl
dmljZTo6RGV2aWNlVHlwZTo6V2luZG93OgorICAgIGNhc2UgQ2FwdHVyZURldmljZTo6RGV2aWNl
VHlwZTo6TWljcm9waG9uZToKKyAgICBjYXNlIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNw
ZWFrZXI6CisgICAgY2FzZSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpDYW1lcmE6CisgICAg
Y2FzZSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpVbmtub3duOgorICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIHsgfTsK
K30KKworQ2FwdHVyZVNvdXJjZU9yRXJyb3IgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Y3Jl
YXRlKEV4cGVjdGVkPFVuaXF1ZVJlZjxDYXB0dXJlcj4sIFN0cmluZz4mJiBjYXB0dXJlciwgY29u
c3QgQ2FwdHVyZURldmljZSYgZGV2aWNlLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJh
aW50cykKK3sKKyAgICBpZiAoIWNhcHR1cmVyLmhhc192YWx1ZSgpKQorICAgICAgICByZXR1cm4g
Q2FwdHVyZVNvdXJjZU9yRXJyb3IgeyBXVEZNb3ZlKGNhcHR1cmVyLmVycm9yKCkpIH07CisKKyAg
ICBhdXRvIHNvdXJjZSA9IGFkb3B0UmVmKCpuZXcgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYShX
VEZNb3ZlKGNhcHR1cmVyLnZhbHVlKCkpLCBTdHJpbmcgeyBkZXZpY2UubGFiZWwoKSB9KSk7Cisg
ICAgaWYgKGNvbnN0cmFpbnRzKSB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gc291cmNlLT5hcHBs
eUNvbnN0cmFpbnRzKCpjb25zdHJhaW50cyk7CisgICAgICAgIGlmIChyZXN1bHQpCisgICAgICAg
ICAgICByZXR1cm4gV1RGTW92ZShyZXN1bHQudmFsdWUoKS5iYWRDb25zdHJhaW50KTsKKyAgICB9
CisKKyAgICByZXR1cm4gQ2FwdHVyZVNvdXJjZU9yRXJyb3IoV1RGTW92ZShzb3VyY2UpKTsKK30K
KworRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYShV
bmlxdWVSZWY8Q2FwdHVyZXI+JiYgY2FwdHVyZXIsIFN0cmluZyYmIG5hbWUpCisgICAgOiBSZWFs
dGltZU1lZGlhU291cmNlKFR5cGU6OlZpZGVvLCBXVEZNb3ZlKG5hbWUpKQorICAgICwgbV9jYXB0
dXJlcihXVEZNb3ZlKGNhcHR1cmVyKSkKKyAgICAsIG1fdGltZXIoUnVuTG9vcDo6Y3VycmVudCgp
LCB0aGlzLCAmRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6ZW1pdEZyYW1lKQoreworICAgIGlm
IChsb2dnZXJQdHIoKSkKKyAgICAgICAgbV9jYXB0dXJlci0+c2V0TG9nZ2VyKGxvZ2dlcigpLCBs
b2dJZGVudGlmaWVyKCkpOworfQorCitEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjp+RGlzcGxh
eUNhcHR1cmVTb3VyY2VDb2NvYSgpCit7Cit9CisKK2NvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VD
YXBhYmlsaXRpZXMmIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OmNhcGFiaWxpdGllcygpCit7
CisgICAgaWYgKCFtX2NhcGFiaWxpdGllcykgeworICAgICAgICBSZWFsdGltZU1lZGlhU291cmNl
Q2FwYWJpbGl0aWVzIGNhcGFiaWxpdGllcyhzZXR0aW5ncygpLnN1cHBvcnRlZENvbnN0cmFpbnRz
KCkpOworCisgICAgICAgIGF1dG8gaW50cmluc2ljU2l6ZSA9IG1fY2FwdHVyZXItPmludHJpbnNp
Y1NpemUoKTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLnNldFdpZHRoKENhcGFiaWxpdHlWYWx1ZU9y
UmFuZ2UoMSwgaW50cmluc2ljU2l6ZS53aWR0aCgpKSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5z
ZXRIZWlnaHQoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSgxLCBpbnRyaW5zaWNTaXplLmhlaWdodCgp
KSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5zZXRGcmFtZVJhdGUoQ2FwYWJpbGl0eVZhbHVlT3JS
YW5nZSguMDEsIDMwLjApKTsKKworICAgICAgICBtX2NhcGFiaWxpdGllcyA9IFdURk1vdmUoY2Fw
YWJpbGl0aWVzKTsKKyAgICB9CisgICAgcmV0dXJuIG1fY2FwYWJpbGl0aWVzLnZhbHVlKCk7Cit9
CisKK2NvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgRGlzcGxheUNhcHR1cmVTb3Vy
Y2VDb2NvYTo6c2V0dGluZ3MoKQoreworICAgIGlmICghbV9jdXJyZW50U2V0dGluZ3MpIHsKKyAg
ICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzIHNldHRpbmdzOworICAgICAgICBzZXR0
aW5ncy5zZXRGcmFtZVJhdGUoZnJhbWVSYXRlKCkpOworCisgICAgICAgIGF1dG8gc2l6ZSA9IHRo
aXMtPnNpemUoKTsKKyAgICAgICAgc2V0dGluZ3Muc2V0V2lkdGgoc2l6ZS53aWR0aCgpKTsKKyAg
ICAgICAgc2V0dGluZ3Muc2V0SGVpZ2h0KHNpemUuaGVpZ2h0KCkpOworCisgICAgICAgIHNldHRp
bmdzLnNldERpc3BsYXlTdXJmYWNlKG1fY2FwdHVyZXItPnN1cmZhY2VUeXBlKCkpOworICAgICAg
ICBzZXR0aW5ncy5zZXRMb2dpY2FsU3VyZmFjZShmYWxzZSk7CisKKyAgICAgICAgUmVhbHRpbWVN
ZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzIHN1cHBvcnRlZENvbnN0cmFpbnRzOworICAg
ICAgICBzdXBwb3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c0ZyYW1lUmF0ZSh0cnVlKTsKKyAg
ICAgICAgc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNXaWR0aCh0cnVlKTsKKyAgICAg
ICAgc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNIZWlnaHQodHJ1ZSk7CisgICAgICAg
IHN1cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzRGlzcGxheVN1cmZhY2UodHJ1ZSk7Cisg
ICAgICAgIHN1cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzTG9naWNhbFN1cmZhY2UodHJ1
ZSk7CisKKyAgICAgICAgc2V0dGluZ3Muc2V0U3VwcG9ydGVkQ29uc3RyYWludHMoc3VwcG9ydGVk
Q29uc3RyYWludHMpOworCisgICAgICAgIG1fY3VycmVudFNldHRpbmdzID0gV1RGTW92ZShzZXR0
aW5ncyk7CisgICAgfQorICAgIHJldHVybiBtX2N1cnJlbnRTZXR0aW5ncy52YWx1ZSgpOworfQor
Cit2b2lkIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OnNldHRpbmdzRGlkQ2hhbmdlKE9wdGlv
blNldDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc+IHNldHRpbmdzKQoreworICAg
IGlmIChzZXR0aW5ncy5jb250YWlucyhSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6
OkZyYW1lUmF0ZSkgJiYgbV90aW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3RpbWVyLnN0YXJ0
UmVwZWF0aW5nKDFfcyAvIGZyYW1lUmF0ZSgpKTsKKworICAgIG1fY3VycmVudFNldHRpbmdzID0g
eyB9OworfQorCit2b2lkIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OnN0YXJ0UHJvZHVjaW5n
RGF0YSgpCit7CisgICAgbV9zdGFydFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKKyAgICBt
X3RpbWVyLnN0YXJ0UmVwZWF0aW5nKDFfcyAvIGZyYW1lUmF0ZSgpKTsKKworICAgIGlmICghbV9j
YXB0dXJlci0+c3RhcnQoKSkKKyAgICAgICAgY2FwdHVyZUZhaWxlZCgpOworfQorCit2b2lkIERp
c3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OnN0b3BQcm9kdWNpbmdEYXRhKCkKK3sKKyAgICBtX3Rp
bWVyLnN0b3AoKTsKKyAgICBtX2VsYXBzZWRUaW1lICs9IE1vbm90b25pY1RpbWU6Om5vdygpIC0g
bV9zdGFydFRpbWU7CisgICAgbV9zdGFydFRpbWUgPSBNb25vdG9uaWNUaW1lOjpuYW4oKTsKKwor
ICAgIG1fY2FwdHVyZXItPnN0b3AoKTsKK30KKworU2Vjb25kcyBEaXNwbGF5Q2FwdHVyZVNvdXJj
ZUNvY29hOjplbGFwc2VkVGltZSgpCit7CisgICAgaWYgKHN0ZDo6aXNuYW4obV9zdGFydFRpbWUp
KQorICAgICAgICByZXR1cm4gbV9lbGFwc2VkVGltZTsKKworICAgIHJldHVybiBtX2VsYXBzZWRU
aW1lICsgKE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV9zdGFydFRpbWUpOworfQorCisvLyBXZSBr
ZWVwIHRoZSBhc3BlY3QgcmF0aW8gb2YgdGhlIGludHJpbnNpYyBzaXplIGZvciB0aGUgZnJhbWUg
c2l6ZSBhcyBnZXREaXNwbGF5TWVkaWEgYWxsb3dzIG1heCBjb25zdHJhaW50cyBvbmx5Lgordm9p
ZCBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjp1cGRhdGVGcmFtZVNpemUoKQoreworICAgIGF1
dG8gaW50cmluc2ljU2l6ZSA9IHRoaXMtPmludHJpbnNpY1NpemUoKTsKKworICAgIGF1dG8gZnJh
bWVTaXplID0gc2l6ZSgpOworICAgIGlmICghZnJhbWVTaXplLmhlaWdodCgpKQorICAgICAgICBm
cmFtZVNpemUuc2V0SGVpZ2h0KGludHJpbnNpY1NpemUuaGVpZ2h0KCkpOworICAgIGlmICghZnJh
bWVTaXplLndpZHRoKCkpCisgICAgICAgIGZyYW1lU2l6ZS5zZXRXaWR0aChpbnRyaW5zaWNTaXpl
LndpZHRoKCkpOworCisgICAgYXV0byBtYXhIZWlnaHQgPSBzdGQ6Om1pbihmcmFtZVNpemUuaGVp
Z2h0KCksIGludHJpbnNpY1NpemUuaGVpZ2h0KCkpOworICAgIGF1dG8gbWF4V2lkdGggPSBzdGQ6
Om1pbihmcmFtZVNpemUud2lkdGgoKSwgaW50cmluc2ljU2l6ZS53aWR0aCgpKTsKKworICAgIGF1
dG8gaGVpZ2h0Rm9yTWF4V2lkdGggPSBtYXhXaWR0aCAqIGludHJpbnNpY1NpemUuaGVpZ2h0KCkg
LyBpbnRyaW5zaWNTaXplLndpZHRoKCk7CisgICAgYXV0byB3aWR0aEZvck1heEhlaWdodCA9IG1h
eEhlaWdodCAqIGludHJpbnNpY1NpemUud2lkdGgoKSAvIGludHJpbnNpY1NpemUuaGVpZ2h0KCk7
CisKKyAgICBpZiAoaGVpZ2h0Rm9yTWF4V2lkdGggPD0gbWF4SGVpZ2h0KSB7CisgICAgICAgIHNl
dFNpemUoeyBtYXhXaWR0aCwgaGVpZ2h0Rm9yTWF4V2lkdGggfSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgaWYgKHdpZHRoRm9yTWF4SGVpZ2h0IDw9IG1heFdpZHRoKSB7CisgICAgICAg
IHNldFNpemUoeyB3aWR0aEZvck1heEhlaWdodCwgbWF4SGVpZ2h0IH0pOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIHNldFNpemUoaW50cmluc2ljU2l6ZSk7Cit9CisKK3ZvaWQgRGlzcGxh
eUNhcHR1cmVTb3VyY2VDb2NvYTo6ZW1pdEZyYW1lKCkKK3sKKyAgICBpZiAobXV0ZWQoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX2ltYWdlVHJhbnNmZXJTZXNzaW9uKQorICAgICAg
ICBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uID0gSW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y3JlYXRl
KHByZWZlcmVkUGl4ZWxCdWZmZXJGb3JtYXQoKSk7CisKKyAgICBhdXRvIHNhbXBsZVRpbWUgPSBN
ZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoKGVsYXBzZWRUaW1lKCkgKyAxMDBfbXMpLnNlY29u
ZHMoKSk7CisKKyAgICBhdXRvIGZyYW1lID0gbV9jYXB0dXJlci0+Z2VuZXJhdGVGcmFtZSgpOwor
ICAgIGF1dG8gaW1hZ2VTaXplID0gV1RGOjpzd2l0Y2hPbihmcmFtZSwKKyAgICAgICAgW10oUmV0
YWluUHRyPElPU3VyZmFjZVJlZj4gc3VyZmFjZSkgLT4gSW50U2l6ZSB7CisgICAgICAgICAgICBp
ZiAoIXN1cmZhY2UpCisgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKKworICAgICAgICAgICAg
cmV0dXJuIEludFNpemUoSU9TdXJmYWNlR2V0V2lkdGgoc3VyZmFjZS5nZXQoKSksIElPU3VyZmFj
ZUdldEhlaWdodChzdXJmYWNlLmdldCgpKSk7CisgICAgICAgIH0sCisgICAgICAgIFtdKFJlZlB0
cjxOYXRpdmVJbWFnZT4gaW1hZ2UpIC0+IEludFNpemUgeworICAgICAgICAgICAgaWYgKCFpbWFn
ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4geyB9OworCisgICAgICAgICAgICByZXR1cm4gaW1h
Z2UtPnNpemUoKTsKKyAgICAgICAgfSwKKyAgICAgICAgW10oUmV0YWluUHRyPENNU2FtcGxlQnVm
ZmVyUmVmPiBzYW1wbGUpIC0+IEludFNpemUgeworICAgICAgICAgICAgaWYgKCFzYW1wbGUpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKKworICAgICAgICAgICAgQ01Gb3JtYXREZXNjcmlw
dGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbiA9IFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRGb3JtYXRE
ZXNjcmlwdGlvbihzYW1wbGUuZ2V0KCkpOworICAgICAgICAgICAgaWYgKFBBTDo6Q01Gb3JtYXRE
ZXNjcmlwdGlvbkdldE1lZGlhVHlwZShmb3JtYXREZXNjcmlwdGlvbikgIT0ga0NNTWVkaWFUeXBl
X1ZpZGVvKQorICAgICAgICAgICAgICAgIHJldHVybiBJbnRTaXplKCk7CisKKyAgICAgICAgICAg
IHJldHVybiBJbnRTaXplKFBBTDo6Q01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uR2V0UHJlc2VudGF0
aW9uRGltZW5zaW9ucyhmb3JtYXREZXNjcmlwdGlvbiwgdHJ1ZSwgdHJ1ZSkpOworICAgICAgICB9
CisgICAgKTsKKworICAgIGlmIChpbWFnZVNpemUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAoaW50cmluc2ljU2l6ZSgpICE9IGltYWdlU2l6ZSkgeworICAgICAgICBzZXRJ
bnRyaW5zaWNTaXplKGltYWdlU2l6ZSk7CisgICAgICAgIHVwZGF0ZUZyYW1lU2l6ZSgpOworICAg
IH0KKworICAgIGF1dG8gc2FtcGxlID0gV1RGOjpzd2l0Y2hPbihmcmFtZSwKKyAgICAgICAgW3Ro
aXMsIHNhbXBsZVRpbWVdKFJldGFpblB0cjxJT1N1cmZhY2VSZWY+IHN1cmZhY2UpIC0+IFJlZlB0
cjxNZWRpYVNhbXBsZT4geworICAgICAgICAgICAgaWYgKCFzdXJmYWNlKQorICAgICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgICAgICByZXR1cm4gbV9pbWFnZVRyYW5zZmVy
U2Vzc2lvbi0+Y3JlYXRlTWVkaWFTYW1wbGUoc3VyZmFjZS5nZXQoKSwgc2FtcGxlVGltZSwgc2l6
ZSgpKTsKKyAgICAgICAgfSwKKyAgICAgICAgW3RoaXMsIHNhbXBsZVRpbWVdKFJlZlB0cjxOYXRp
dmVJbWFnZT4gaW1hZ2UpIC0+IFJlZlB0cjxNZWRpYVNhbXBsZT4geworICAgICAgICAgICAgaWYg
KCFpbWFnZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICAgICAg
cmV0dXJuIG1faW1hZ2VUcmFuc2ZlclNlc3Npb24tPmNyZWF0ZU1lZGlhU2FtcGxlKGltYWdlLT5w
bGF0Zm9ybUltYWdlKCkuZ2V0KCksIHNhbXBsZVRpbWUsIHNpemUoKSk7CisgICAgICAgIH0sCisg
ICAgICAgIFt0aGlzLCBzYW1wbGVUaW1lXShSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IHNh
bXBsZSkgLT4gUmVmUHRyPE1lZGlhU2FtcGxlPiB7CisgICAgICAgICAgICBpZiAoIXNhbXBsZSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICAgICAgcmV0dXJuIG1f
aW1hZ2VUcmFuc2ZlclNlc3Npb24tPmNyZWF0ZU1lZGlhU2FtcGxlKHNhbXBsZS5nZXQoKSwgc2Ft
cGxlVGltZSwgc2l6ZSgpKTsKKyAgICAgICAgfQorICAgICk7CisKKyAgICBpZiAoIXNhbXBsZSkg
eworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIHZpZGVvU2FtcGxlQXZhaWxhYmxlKCpzYW1wbGUuZ2V0KCkpOworfQorCit2b2lkIERp
c3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OnNldExvZ2dlcihjb25zdCBMb2dnZXImIGxvZ2dlciwg
Y29uc3Qgdm9pZCogaWRlbnRpZmllcikKK3sKKyAgICBSZWFsdGltZU1lZGlhU291cmNlOjpzZXRM
b2dnZXIobG9nZ2VyLCBpZGVudGlmaWVyKTsKKyAgICBtX2NhcHR1cmVyLT5zZXRMb2dnZXIobG9n
Z2VyLCBpZGVudGlmaWVyKTsKK30KKwordm9pZCBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpD
YXB0dXJlcjo6c2V0TG9nZ2VyKGNvbnN0IExvZ2dlciYgbmV3TG9nZ2VyLCBjb25zdCB2b2lkKiBu
ZXdMb2dJZGVudGlmaWVyKQoreworICAgIG1fbG9nZ2VyID0gJm5ld0xvZ2dlcjsKKyAgICBtX2xv
Z0lkZW50aWZpZXIgPSBuZXdMb2dJZGVudGlmaWVyOworfQorCitXVEZMb2dDaGFubmVsJiBEaXNw
bGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpDYXB0dXJlcjo6bG9nQ2hhbm5lbCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIExvZ1dlYlJUQzsKK30KKworRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Q2Fw
dHVyZXI6Ok9ic2VydmVyOjp+T2JzZXJ2ZXIoKQoreworfQorCit2b2lkIERpc3BsYXlDYXB0dXJl
U291cmNlQ29jb2E6OkNhcHR1cmVyOjpzZXRPYnNlcnZlcihPYnNlcnZlciogb2JzZXJ2ZXIpCit7
CisgICAgbV9vYnNlcnZlciA9IFdlYWtQdHIgeyBvYnNlcnZlciB9OworfQorCit2b2lkIERpc3Bs
YXlDYXB0dXJlU291cmNlQ29jb2E6OkNhcHR1cmVyOjpjYXB0dXJlcklzUnVubmluZ0NoYW5nZWQo
Ym9vbCBydW5uaW5nKQoreworICAgIGlmIChtX29ic2VydmVyKQorICAgICAgICBtX29ic2VydmVy
LT5jYXB0dXJlcklzUnVubmluZ0NoYW5nZWQocnVubmluZyk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKENP
Q09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29j
b2EvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vY29jb2EvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjFlNmE5MGE4YzA1NzQ3NGJjZTc0OTc2YmQ5ZGI3Zjg2NDM1Y2UyMWYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9EaXNwbGF5Q2Fw
dHVyZVNvdXJjZUNvY29hLmgKQEAgLTAsMCArMSwxMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oQ09DT0EpCisKKyNpbmNsdWRlICJDYXB0dXJlRGV2
aWNlLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgorI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SdW5M
b29wLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCisKK3R5cGVkZWYgc3RydWN0IENHSW1hZ2UgKkNHSW1hZ2VSZWY7Cit0eXBl
ZGVmIHN0cnVjdCBfX0NWQnVmZmVyICpDVlBpeGVsQnVmZmVyUmVmOwordHlwZWRlZiBzdHJ1Y3Qg
X19JT1N1cmZhY2UgKklPU3VyZmFjZVJlZjsKKworbmFtZXNwYWNlIFdURiB7CitjbGFzcyBNZWRp
YVRpbWU7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ2FwdHVyZURldmljZUlu
Zm87CitjbGFzcyBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOworY2xhc3MgUGl4ZWxCdWZmZXJDb25m
b3JtZXJDVjsKKworY2xhc3MgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYSBmaW5hbCA6IHB1Ymxp
YyBSZWFsdGltZU1lZGlhU291cmNlIHsKK3B1YmxpYzoKKyAgICB1c2luZyBEaXNwbGF5RnJhbWVU
eXBlID0gc3RkOjp2YXJpYW50PFJlZlB0cjxOYXRpdmVJbWFnZT4sIFJldGFpblB0cjxJT1N1cmZh
Y2VSZWY+LCBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+PjsKKworICAgIGNsYXNzIENhcHR1
cmVyIDogcHVibGljIExvZ2dlckhlbHBlciB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworICAgIHB1YmxpYzoKKworICAgICAgICBjbGFzcyBPYnNlcnZlciA6IHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxPYnNlcnZlcj4geworICAgICAgICBwdWJsaWM6CisgICAgICAgICAgICB2aXJ0
dWFsIH5PYnNlcnZlcigpOworCisgICAgICAgICAgICAvLyBDYXB0dXJlciBzdGF0ZSBjaGFuZ2Vz
LgorICAgICAgICAgICAgdmlydHVhbCB2b2lkIGNhcHR1cmVySXNSdW5uaW5nQ2hhbmdlZChib29s
KSB7IH0KKyAgICAgICAgfTsKKworICAgICAgICB2aXJ0dWFsIH5DYXB0dXJlcigpID0gZGVmYXVs
dDsKKworICAgICAgICB2aXJ0dWFsIGJvb2wgc3RhcnQoKSA9IDA7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBzdG9wKCkgPSAwOworICAgICAgICB2aXJ0dWFsIERpc3BsYXlGcmFtZVR5cGUgZ2VuZXJh
dGVGcmFtZSgpID0gMDsKKyAgICAgICAgdmlydHVhbCBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBl
IGRldmljZVR5cGUoKSBjb25zdCA9IDA7CisgICAgICAgIHZpcnR1YWwgUmVhbHRpbWVNZWRpYVNv
dXJjZVNldHRpbmdzOjpEaXNwbGF5U3VyZmFjZVR5cGUgc3VyZmFjZVR5cGUoKSBjb25zdCA9IDA7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBjb21taXRDb25maWd1cmF0aW9uKGNvbnN0IFJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5ncyYpID0gMDsKKyAgICAgICAgdmlydHVhbCBJbnRTaXplIGludHJp
bnNpY1NpemUoKSBjb25zdCA9IDA7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHNldExvZ2dlcihj
b25zdCBMb2dnZXImLCBjb25zdCB2b2lkKik7CisgICAgICAgIGNvbnN0IExvZ2dlciogbG9nZ2Vy
UHRyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dnZXIuZ2V0KCk7IH0KKyAgICAgICAgY29uc3QgTG9n
Z2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IEFTU0VSVChtX2xvZ2dlcik7IHJldHVybiAqbV9s
b2dnZXIuZ2V0KCk7IH0KKyAgICAgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQorICAgICAgICBXVEZMb2dDaGFubmVs
JiBsb2dDaGFubmVsKCkgY29uc3QgZmluYWw7CisKKyAgICAgICAgdm9pZCBzZXRPYnNlcnZlcihP
YnNlcnZlciopOworCisgICAgcHJvdGVjdGVkOgorICAgICAgICB2b2lkIGNhcHR1cmVySXNSdW5u
aW5nQ2hhbmdlZChib29sKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFdlYWtQdHI8T2JzZXJ2
ZXI+IG1fb2JzZXJ2ZXI7CisgICAgICAgIFJlZlB0cjxjb25zdCBMb2dnZXI+IG1fbG9nZ2VyOwor
ICAgICAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7CisgICAgfTsKKworICAgIHN0YXRp
YyBDYXB0dXJlU291cmNlT3JFcnJvciBjcmVhdGUoY29uc3QgQ2FwdHVyZURldmljZSYsIGNvbnN0
IE1lZGlhQ29uc3RyYWludHMqKTsKKyAgICBzdGF0aWMgQ2FwdHVyZVNvdXJjZU9yRXJyb3IgY3Jl
YXRlKEV4cGVjdGVkPFVuaXF1ZVJlZjxDYXB0dXJlcj4sIFN0cmluZz4mJiwgY29uc3QgQ2FwdHVy
ZURldmljZSYsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqKTsKKworICAgIFNlY29uZHMgZWxhcHNl
ZFRpbWUoKTsKKyAgICB2b2lkIHVwZGF0ZUZyYW1lU2l6ZSgpOworCitwcml2YXRlOgorICAgIERp
c3BsYXlDYXB0dXJlU291cmNlQ29jb2EoVW5pcXVlUmVmPENhcHR1cmVyPiYmLCBTdHJpbmcmJiBu
YW1lKTsKKyAgICB2aXJ0dWFsIH5EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hKCk7CisKKyAgICB2
b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgpIGZpbmFsOworICAgIHZvaWQgc3RvcFByb2R1Y2luZ0Rh
dGEoKSBmaW5hbDsKKyAgICB2b2lkIHNldHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNldDxSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc+KSBmaW5hbDsKKyAgICBib29sIGlzQ2FwdHVyZVNv
dXJjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICBjb25zdCBSZWFsdGltZU1l
ZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBmaW5hbDsKKyAgICBjb25zdCBS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgZmluYWw7CisgICAgQ2FwdHVy
ZURldmljZTo6RGV2aWNlVHlwZSBkZXZpY2VUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9jYXB0dXJl
ci0+ZGV2aWNlVHlwZSgpOyB9CisgICAgdm9pZCBjb21taXRDb25maWd1cmF0aW9uKCkgZmluYWwg
eyBtX2NhcHR1cmVyLT5jb21taXRDb25maWd1cmF0aW9uKHNldHRpbmdzKCkpOyB9CisKKyAgICBj
b25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiRGlzcGxheUNh
cHR1cmVTb3VyY2VDb2NvYSI7IH0KKyAgICB2b2lkIHNldExvZ2dlcihjb25zdCBMb2dnZXImLCBj
b25zdCB2b2lkKikgZmluYWw7CisKKyAgICB2b2lkIGVtaXRGcmFtZSgpOworCisgICAgVW5pcXVl
UmVmPENhcHR1cmVyPiBtX2NhcHR1cmVyOworICAgIHN0ZDo6b3B0aW9uYWw8UmVhbHRpbWVNZWRp
YVNvdXJjZUNhcGFiaWxpdGllcz4gbV9jYXBhYmlsaXRpZXM7CisgICAgc3RkOjpvcHRpb25hbDxS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M+IG1fY3VycmVudFNldHRpbmdzOworICAgIFJlYWx0
aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyBtX3N1cHBvcnRlZENvbnN0cmFpbnRz
OworCisgICAgTW9ub3RvbmljVGltZSBtX3N0YXJ0VGltZSB7IE1vbm90b25pY1RpbWU6Om5hbigp
IH07CisgICAgU2Vjb25kcyBtX2VsYXBzZWRUaW1lIHsgMF9zIH07CisKKyAgICBSdW5Mb29wOjpU
aW1lcjxEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hPiBtX3RpbWVyOworCisgICAgc3RkOjp1bmlx
dWVfcHRyPEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ+IG1faW1hZ2VUcmFuc2ZlclNlc3Npb247Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RS
RUFNKSAmJiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2lvcy9SZXBsYXlLaXRDYXB0dXJlU291cmNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjllYTUzNjkwZjAwNjI0NGZhNDBmNWUxMTUwMzI3MTU1NmY0MDFjMjAKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvUmVw
bGF5S2l0Q2FwdHVyZVNvdXJjZS5oCkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCisKKyNpbmNsdWRlICJEaXNwbGF5
Q2FwdHVyZVNvdXJjZUNvY29hLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CisKK09CSkNfQ0xBU1MgUlBTY3JlZW5SZWNvcmRlcjsKK09CSkNfQ0xBU1Mg
V2ViQ29yZVJlcGxheUtpdFNjcmVlblJlY29yZGVySGVscGVyOworCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIFJlcGxheUtpdENhcHR1cmVTb3VyY2UgZmluYWwgOiBwdWJsaWMgRGlzcGxh
eUNhcHR1cmVTb3VyY2VDb2NvYTo6Q2FwdHVyZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZXBs
YXlLaXRDYXB0dXJlU291cmNlPiB7CitwdWJsaWM6CisgICAgc3RhdGljIEV4cGVjdGVkPFVuaXF1
ZVJlZjxEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpDYXB0dXJlcj4sIFN0cmluZz4gY3JlYXRl
KGNvbnN0IFN0cmluZyYpOworCisgICAgUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZSgpOworICAgIHZp
cnR1YWwgflJlcGxheUtpdENhcHR1cmVTb3VyY2UoKTsKKworICAgIHN0YXRpYyBib29sIGlzQXZh
aWxhYmxlKCk7CisKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxDYXB0dXJlRGV2aWNlPiBzY3Jl
ZW5DYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0
aWMgdm9pZCBzY3JlZW5DYXB0dXJlRGV2aWNlcyhWZWN0b3I8Q2FwdHVyZURldmljZT4mKTsKKwor
ICAgIHZvaWQgY2FwdHVyZVN0YXRlRGlkQ2hhbmdlKCk7CisKK3ByaXZhdGU6CisKKyAgICAvLyBE
aXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpDYXB0dXJlcgorICAgIGJvb2wgc3RhcnQoKSBmaW5h
bDsKKyAgICB2b2lkIHN0b3AoKSBmaW5hbDsKKyAgICBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29h
OjpEaXNwbGF5RnJhbWVUeXBlIGdlbmVyYXRlRnJhbWUoKSBmaW5hbDsKKyAgICBDYXB0dXJlRGV2
aWNlOjpEZXZpY2VUeXBlIGRldmljZVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBDYXB0dXJl
RGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW47IH0KKyAgICBSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3M6OkRpc3BsYXlTdXJmYWNlVHlwZSBzdXJmYWNlVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RGlzcGxheVN1cmZhY2VUeXBlOjpNb25p
dG9yOyB9CisgICAgdmlydHVhbCB2b2lkIGNvbW1pdENvbmZpZ3VyYXRpb24oY29uc3QgUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzJikgeyB9CisgICAgdmlydHVhbCBJbnRTaXplIGludHJpbnNp
Y1NpemUoKSBjb25zdCB7IHJldHVybiBtX2ludHJpbnNpY1NpemU7IH0KKworICAgIC8vIExvZ2dl
ckhlbHBlcgorICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuICJSZXBsYXlLaXRDYXB0dXJlU291cmNlIjsgfQorCisgICAgdm9pZCBzY3JlZW5SZWNvcmRl
ckRpZE91dHB1dFZpZGVvU2FtcGxlKFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4mJik7Cisg
ICAgdm9pZCBzdGFydENhcHR1cmVXYXRjaGRvZ1RpbWVyKCk7CisgICAgdm9pZCB2ZXJpZnlDYXB0
dXJlSXNBY3RpdmUoKTsKKworICAgIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gbV9jdXJy
ZW50RnJhbWU7CisgICAgUmV0YWluUHRyPFJQU2NyZWVuUmVjb3JkZXI+IG1fc2NyZWVuUmVjb3Jk
ZXI7CisgICAgUmV0YWluUHRyPFdlYkNvcmVSZXBsYXlLaXRTY3JlZW5SZWNvcmRlckhlbHBlcj4g
bV9yZWNvcmRlckhlbHBlcjsKKworICAgIFRpbWVyIG1fY2FwdHVyZVdhdGNoZG9nVGltZXI7Cisg
ICAgdWludDY0X3QgbV9mcmFtZUNvdW50IHsgMCB9OworICAgIHVpbnQ2NF90IG1fbGFzdEZyYW1l
Q291bnQgeyAwIH07CisgICAgSW50U2l6ZSBtX2ludHJpbnNpY1NpemU7CisgICAgYm9vbCBtX2lz
UnVubmluZyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2ludGVycnVwdGVkIHsgZmFsc2UgfTsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJF
QU0pICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9SZXBsYXlLaXRDYXB0dXJlU291cmNl
Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmJhMmJkMzhhNjliN2JkNDZlMjdmMTRlZjhlNTE1NGE5MGIyMzYwYmUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9p
b3MvUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZS5tbQpAQCAtMCwwICsxLDI4MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJSZXBsYXlLaXRDYXB0dXJlU291cmNlLmgiCisKKyNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQorCisjaW1wb3J0ICJMb2dnaW5nLmgiCisj
aW1wb3J0ICJSZWFsdGltZVZpZGVvVXRpbGl0aWVzLmgiCisjaW1wb3J0IDx3dGYvQmxvY2tQdHIu
aD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3RmL1VVSUQuaD4K
KyNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KKworI2ltcG9y
dCA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CisjaW1wb3J0IDxwYWwvaW9zL1JlcGxheUtp
dFNvZnRMaW5rLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworQGludGVyZmFjZSBXZWJD
b3JlUmVwbGF5S2l0U2NyZWVuUmVjb3JkZXJIZWxwZXIgOiBOU09iamVjdCB7CisgICAgV2Vha1B0
cjxSZXBsYXlLaXRDYXB0dXJlU291cmNlPiBfY2FsbGJhY2s7Cit9CisKKy0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aENhbGxiYWNrOihXZWFrUHRyPFJlcGxheUtpdENhcHR1cmVTb3VyY2U+JiYpY2Fs
bGJhY2s7CistICh2b2lkKWRpc2Nvbm5lY3Q7CistICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBh
dGg6a2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5KiljaGFu
Z2UgY29udGV4dDoodm9pZCopY29udGV4dDsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdlYkNv
cmVSZXBsYXlLaXRTY3JlZW5SZWNvcmRlckhlbHBlcgorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
Q2FsbGJhY2s6KFdlYWtQdHI8UmVwbGF5S2l0Q2FwdHVyZVNvdXJjZT4mJiljYWxsYmFjaworewor
ICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4g
c2VsZjsKKworICAgIF9jYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOworICAgIFtbUEFMOjpn
ZXRSUFNjcmVlblJlY29yZGVyQ2xhc3MoKSBzaGFyZWRSZWNvcmRlcl0gYWRkT2JzZXJ2ZXI6c2Vs
ZiBmb3JLZXlQYXRoOkAicmVjb3JkaW5nIiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRp
b25OZXcgY29udGV4dDoodm9pZCAqKW5pbF07CisKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAo
dm9pZClkaXNjb25uZWN0Cit7CisgICAgX2NhbGxiYWNrID0gbnVsbHB0cjsKKyAgICBbW1BBTDo6
Z2V0UlBTY3JlZW5SZWNvcmRlckNsYXNzKCkgc2hhcmVkUmVjb3JkZXJdIHJlbW92ZU9ic2VydmVy
OnNlbGYgZm9yS2V5UGF0aDpAInJlY29yZGluZyJdOworfQorCistICh2b2lkKW9ic2VydmVWYWx1
ZUZvcktleVBhdGg6a2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTlNEaWN0aW9u
YXJ5KiljaGFuZ2UgY29udGV4dDoodm9pZCopY29udGV4dAoreworICAgIFVOVVNFRF9QQVJBTShv
YmplY3QpOworICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKKworICAgIGlmICghX2NhbGxiYWNr
KQorICAgICAgICByZXR1cm47CisKKyAgICBpZCBuZXdWYWx1ZSA9IFtjaGFuZ2UgdmFsdWVGb3JL
ZXk6TlNLZXlWYWx1ZUNoYW5nZU5ld0tleV07CisgICAgYm9vbCB3aWxsQ2hhbmdlID0gW1tjaGFu
Z2UgdmFsdWVGb3JLZXk6TlNLZXlWYWx1ZUNoYW5nZU5vdGlmaWNhdGlvbklzUHJpb3JLZXldIGJv
b2xWYWx1ZV07CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBpZiAoX2NhbGxiYWNr
LT5sb2dnZXJQdHIoKSkgeworICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBMb2dnZXI6OkxvZ1Np
dGVJZGVudGlmaWVyKCJSZXBsYXlLaXRDYXB0dXJlU291cmNlIiwgIm9ic2VydmVWYWx1ZUZvcktl
eVBhdGgiLCBfY2FsbGJhY2stPmxvZ0lkZW50aWZpZXIoKSk7CisgICAgICAgIFJldGFpblB0cjxO
U1N0cmluZz4gdmFsdWVTdHJpbmcgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRo
Rm9ybWF0OkAiJUAiLCBuZXdWYWx1ZV0pOworICAgICAgICBfY2FsbGJhY2stPmxvZ2dlcigpLmxv
Z0Fsd2F5cyhfY2FsbGJhY2stPmxvZ0NoYW5uZWwoKSwgaWRlbnRpZmllciwgd2lsbENoYW5nZSA/
ICJ3aWxsIiA6ICJkaWQiLCAiIGNoYW5nZSAnIiwgW2tleVBhdGggVVRGOFN0cmluZ10sICInIHRv
ICIsIFt2YWx1ZVN0cmluZy5nZXQoKSBVVEY4U3RyaW5nXSk7CisgICAgfQorI2VuZGlmCisKKyAg
ICBpZiAod2lsbENoYW5nZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKFtrZXlQYXRoIGlz
RXF1YWxUb1N0cmluZzpAInJlY29yZGluZyJdKQorICAgICAgICBfY2FsbGJhY2stPmNhcHR1cmVT
dGF0ZURpZENoYW5nZSgpOworfQorQGVuZAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wg
UmVwbGF5S2l0Q2FwdHVyZVNvdXJjZTo6aXNBdmFpbGFibGUoKQoreworICAgIHJldHVybiBbUEFM
OjpnZXRSUFNjcmVlblJlY29yZGVyQ2xhc3MoKSBzaGFyZWRSZWNvcmRlcl0uaXNBdmFpbGFibGU7
Cit9CisKK0V4cGVjdGVkPFVuaXF1ZVJlZjxEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpDYXB0
dXJlcj4sIFN0cmluZz4gUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZTo6Y3JlYXRlKGNvbnN0IFN0cmlu
ZyYpCit7CisgICAgaWYgKCFpc0F2YWlsYWJsZSgpKQorICAgICAgICByZXR1cm4gbWFrZVVuZXhw
ZWN0ZWQoIlNjcmVlbiBjYXB0dXJlIHVuYXZhaWxhYmxlIl9zKTsKKworICAgIHJldHVybiBVbmlx
dWVSZWY8RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Q2FwdHVyZXI+KG1ha2VVbmlxdWVSZWY8
UmVwbGF5S2l0Q2FwdHVyZVNvdXJjZT4oKSk7Cit9CisKK1JlcGxheUtpdENhcHR1cmVTb3VyY2U6
OlJlcGxheUtpdENhcHR1cmVTb3VyY2UoKQorICAgIDogbV9jYXB0dXJlV2F0Y2hkb2dUaW1lcigq
dGhpcywgJlJlcGxheUtpdENhcHR1cmVTb3VyY2U6OnZlcmlmeUNhcHR1cmVJc0FjdGl2ZSkKK3sK
K30KKworUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZTo6flJlcGxheUtpdENhcHR1cmVTb3VyY2UoKQor
eworICAgIFttX3JlY29yZGVySGVscGVyIGRpc2Nvbm5lY3RdOworICAgIHN0b3AoKTsKKyAgICBt
X2N1cnJlbnRGcmFtZSA9IG51bGxwdHI7Cit9CisKK2Jvb2wgUmVwbGF5S2l0Q2FwdHVyZVNvdXJj
ZTo6c3RhcnQoKQoreworICAgIEFTU0VSVChpc0F2YWlsYWJsZSgpKTsKKworICAgIGF1dG8gaWRl
bnRpZmllciA9IExPR0lERU5USUZJRVI7CisgICAgQUxXQVlTX0xPR19JRihsb2dnZXJQdHIoKSwg
aWRlbnRpZmllcik7CisKKyAgICBhdXRvICpzY3JlZW5SZWNvcmRlciA9IFtQQUw6OmdldFJQU2Ny
ZWVuUmVjb3JkZXJDbGFzcygpIHNoYXJlZFJlY29yZGVyXTsKKyAgICBpZiAoc2NyZWVuUmVjb3Jk
ZXIucmVjb3JkaW5nKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIEZJWE1FOiBBZGQg
c3VwcG9ydCBmb3IgY29uY3VycmVudCBhdWRpbyBjYXB0dXJlLgorICAgIFtzY3JlZW5SZWNvcmRl
ciBzZXRNaWNyb3Bob25lRW5hYmxlZDpOT107CisKKyAgICBpZiAoIW1fcmVjb3JkZXJIZWxwZXIp
CisgICAgICAgIG1fcmVjb3JkZXJIZWxwZXIgPSAoW1tXZWJDb3JlUmVwbGF5S2l0U2NyZWVuUmVj
b3JkZXJIZWxwZXIgYWxsb2NdIGluaXRXaXRoQ2FsbGJhY2s6dGhpc10pOworCisgICAgYXV0byBj
YXB0dXJlSGFuZGxlciA9IG1ha2VCbG9ja1B0cihbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsg
KnRoaXMgfSwgaWRlbnRpZmllcl0oQ01TYW1wbGVCdWZmZXJSZWYgX05vbm51bGwgc2FtcGxlQnVm
ZmVyLCBSUFNhbXBsZUJ1ZmZlclR5cGUgYnVmZmVyVHlwZSwgTlNFcnJvciAqIF9OdWxsYWJsZSBl
cnJvcikgeworCisgICAgICAgIGlmIChidWZmZXJUeXBlICE9IFJQU2FtcGxlQnVmZmVyVHlwZVZp
ZGVvKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIEVSUk9SX0xPR19JRihlcnJvciAm
JiBsb2dnZXJQdHIoKSwgaWRlbnRpZmllciwgInN0YXJ0Q2FwdHVyZVdpdGhIYW5kbGVyIGZhaWxl
ZCAiLCBbZXJyb3IgbG9jYWxpemVkRGVzY3JpcHRpb25dLlVURjhTdHJpbmcpOworCisgICAgICAg
ICsrbV9mcmFtZUNvdW50OworCisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vh
a1RoaXMsIHNhbXBsZUJ1ZmZlciA9IHJldGFpblB0cihzYW1wbGVCdWZmZXIpXSgpIG11dGFibGUg
eworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgICAgIHdlYWtUaGlzLT5zY3JlZW5SZWNvcmRlckRpZE91dHB1dFZpZGVvU2FtcGxl
KFdURk1vdmUoc2FtcGxlQnVmZmVyKSk7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgYXV0
byBjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihbdGhpcywgd2Vha1RoaXMgPSBXZWFr
UHRyIHsgKnRoaXMgfSwgaWRlbnRpZmllcl0oTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvcikgewor
ICAgICAgICAvLyBGSVhNRTogSXQgc2hvdWxkIGJlIHNhZmUgdG8gY2FsbCBgdmlkZW9TYW1wbGVB
dmFpbGFibGVgIGZyb20gYW55IHRocmVhZC4gVGVzdCB0aGlzIGFuZCBnZXQgcmlkIG9mIHRoaXMg
bWFpbiB0aHJlYWQgaG9wLgorICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMs
IHdlYWtUaGlzLCBlcnJvciA9IHJldGFpblB0cihlcnJvciksIGlkZW50aWZpZXJdKCkgbXV0YWJs
ZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICFlcnJvcikKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgICAgIEVSUk9SX0xPR19JRihsb2dnZXJQdHIoKSwgaWRlbnRp
ZmllciwgImNvbXBsZXRpb25IYW5kbGVyIGZhaWxlZCAiLCBbZXJyb3IgbG9jYWxpemVkRGVzY3Jp
cHRpb25dLlVURjhTdHJpbmcpOworICAgICAgICAgICAgd2Vha1RoaXMtPnN0b3AoKTsKKyAgICAg
ICAgfSk7CisgICAgfSk7CisKKyAgICBbc2NyZWVuUmVjb3JkZXIgc3RhcnRDYXB0dXJlV2l0aEhh
bmRsZXI6Y2FwdHVyZUhhbmRsZXIuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhh
bmRsZXIuZ2V0KCldOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgUmVwbGF5S2l0Q2Fw
dHVyZVNvdXJjZTo6c2NyZWVuUmVjb3JkZXJEaWRPdXRwdXRWaWRlb1NhbXBsZShSZXRhaW5QdHI8
Q01TYW1wbGVCdWZmZXJSZWY+JiYgc2FtcGxlQnVmZmVyKQoreworICAgIG1fY3VycmVudEZyYW1l
ID0gc2FtcGxlQnVmZmVyLmdldCgpOworICAgIG1faW50cmluc2ljU2l6ZSA9IEludFNpemUoUEFM
OjpDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25HZXRQcmVzZW50YXRpb25EaW1lbnNpb25zKFBBTDo6
Q01TYW1wbGVCdWZmZXJHZXRGb3JtYXREZXNjcmlwdGlvbihtX2N1cnJlbnRGcmFtZS5nZXQoKSks
IHRydWUsIHRydWUpKTsKK30KKwordm9pZCBSZXBsYXlLaXRDYXB0dXJlU291cmNlOjpjYXB0dXJl
U3RhdGVEaWRDaGFuZ2UoKQoreworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywg
d2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgaWRlbnRpZmllciA9IExPR0lERU5USUZJRVJd
KCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgYm9vbCBpc1JlY29yZGluZyA9ICEhW1tQQUw6OmdldFJQU2NyZWVuUmVjb3Jk
ZXJDbGFzcygpIHNoYXJlZFJlY29yZGVyXSBpc1JlY29yZGluZ107CisgICAgICAgIGlmIChtX2lz
UnVubmluZyA9PSAoaXNSZWNvcmRpbmcgJiYgIW1faW50ZXJydXB0ZWQpKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIG1faXNSdW5uaW5nID0gaXNSZWNvcmRpbmcgJiYgIW1faW50ZXJy
dXB0ZWQ7CisgICAgICAgIEFMV0FZU19MT0dfSUYobG9nZ2VyUHRyKCksIGlkZW50aWZpZXIsIG1f
aXNSdW5uaW5nKTsKKyAgICAgICAgY2FwdHVyZXJJc1J1bm5pbmdDaGFuZ2VkKG1faXNSdW5uaW5n
KTsKKyAgICB9KTsKK30KKwordm9pZCBSZXBsYXlLaXRDYXB0dXJlU291cmNlOjpzdG9wKCkKK3sK
KyAgICBhdXRvIGlkZW50aWZpZXIgPSBMT0dJREVOVElGSUVSOworICAgIEFMV0FZU19MT0dfSUYo
bG9nZ2VyUHRyKCksIGlkZW50aWZpZXIpOworICAgIG1fY2FwdHVyZVdhdGNoZG9nVGltZXIuc3Rv
cCgpOworICAgIG1faW50ZXJydXB0ZWQgPSBmYWxzZTsKKyAgICBtX2lzUnVubmluZyA9IGZhbHNl
OworCisgICAgYXV0byAqc2NyZWVuUmVjb3JkZXIgPSBbUEFMOjpnZXRSUFNjcmVlblJlY29yZGVy
Q2xhc3MoKSBzaGFyZWRSZWNvcmRlcl07CisgICAgaWYgKHNjcmVlblJlY29yZGVyLnJlY29yZGlu
ZykgeworICAgICAgICBbc2NyZWVuUmVjb3JkZXIgc3RvcENhcHR1cmVXaXRoSGFuZGxlcjpeKE5T
RXJyb3IgKiBfTnVsbGFibGUgZXJyb3IpIHsKKyAgICAgICAgICAgIEVSUk9SX0xPR19JRihlcnJv
ciAmJiBsb2dnZXJQdHIoKSwgaWRlbnRpZmllciwgInN0YXJ0Q2FwdHVyZVdpdGhIYW5kbGVyIGZh
aWxlZCAiLCBbZXJyb3IgbG9jYWxpemVkRGVzY3JpcHRpb25dLlVURjhTdHJpbmcpOworICAgICAg
ICB9XTsKKyAgICB9Cit9CisKK0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OkRpc3BsYXlGcmFt
ZVR5cGUgUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZTo6Z2VuZXJhdGVGcmFtZSgpCit7CisgICAgcmV0
dXJuIG1fY3VycmVudEZyYW1lOworfQorCit2b2lkIFJlcGxheUtpdENhcHR1cmVTb3VyY2U6OnZl
cmlmeUNhcHR1cmVJc0FjdGl2ZSgpCit7CisgICAgQVNTRVJUKG1faXNSdW5uaW5nIHx8IG1faW50
ZXJydXB0ZWQpOworICAgIGF1dG8gaWRlbnRpZmllciA9IExPR0lERU5USUZJRVI7CisgICAgaWYg
KG1fbGFzdEZyYW1lQ291bnQgIT0gbV9mcmFtZUNvdW50KSB7CisgICAgICAgIG1fbGFzdEZyYW1l
Q291bnQgPSBtX2ZyYW1lQ291bnQ7CisgICAgICAgIGlmIChtX2ludGVycnVwdGVkKSB7CisgICAg
ICAgICAgICBBTFdBWVNfTE9HX0lGKGxvZ2dlclB0cigpLCBpZGVudGlmaWVyLCAiZnJhbWUgcmVj
ZWl2ZWQgYWZ0ZXIgaW50ZXJydXB0aW9uLCB1bm11dGluZyIpOworICAgICAgICAgICAgbV9pbnRl
cnJ1cHRlZCA9IGZhbHNlOworICAgICAgICAgICAgY2FwdHVyZVN0YXRlRGlkQ2hhbmdlKCk7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFMV0FZU19MT0dfSUYobG9n
Z2VyUHRyKCksIGlkZW50aWZpZXIsICJubyBmcmFtZSByZWNlaXZlZCBpbiAiLCBzdGF0aWNfY2Fz
dDxpbnQ+KG1fY2FwdHVyZVdhdGNoZG9nVGltZXIucmVwZWF0SW50ZXJ2YWwoKS52YWx1ZSgpKSwg
IiBzZWNvbmRzLCBtdXRpbmciKTsKKyAgICBtX2ludGVycnVwdGVkID0gdHJ1ZTsKKyAgICBjYXB0
dXJlU3RhdGVEaWRDaGFuZ2UoKTsKK30KKwordm9pZCBSZXBsYXlLaXRDYXB0dXJlU291cmNlOjpz
dGFydENhcHR1cmVXYXRjaGRvZ1RpbWVyKCkKK3sKKyAgICBzdGF0aWMgY29uc3RleHByIFNlY29u
ZHMgdmVyaWZ5Q2FwdHVyZUludGVydmFsID0gMl9zOworICAgIGlmIChtX2NhcHR1cmVXYXRjaGRv
Z1RpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY2FwdHVyZVdhdGNo
ZG9nVGltZXIuc3RhcnRSZXBlYXRpbmcodmVyaWZ5Q2FwdHVyZUludGVydmFsKTsKKyAgICBtX2xh
c3RGcmFtZUNvdW50ID0gbV9mcmFtZUNvdW50OworfQorCitzdGF0aWMgU3RyaW5nIHNjcmVlbkRl
dmljZVVVSUQoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHNjcmVlbklE
ID0gY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOworICAgIHJldHVybiBzY3JlZW5JRDsKK30K
Kworc3RhdGljIENhcHR1cmVEZXZpY2UmIHNjcmVlbkRldmljZSgpCit7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPENhcHR1cmVEZXZpY2U+IGRldmljZSA9IHsgc2NyZWVuRGV2aWNlVVVJRCgp
LCBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW4sIG1ha2VTdHJpbmcoIlNjcmVlbiAx
IiksIGVtcHR5U3RyaW5nKCksIHRydWUgfTsKKyAgICByZXR1cm4gZGV2aWNlOworfQorCitzdGQ6
Om9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IFJlcGxheUtpdENhcHR1cmVTb3VyY2U6OnNjcmVlbkNh
cHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKGNvbnN0IFN0cmluZyYgZGlzcGxheUlEKQorewor
ICAgIGlmICghaXNBdmFpbGFibGUoKSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihXZWJS
VEMsICJSZXBsYXlLaXRDYXB0dXJlU291cmNlOjpzY3JlZW5DYXB0dXJlRGV2aWNlV2l0aFBlcnNp
c3RlbnRJRDogc2NyZWVuIGNhcHR1cmUgdW5hdmFpbGFibGUiKTsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAgICBpZiAoZGlzcGxheUlEICE9IHNjcmVlbkRldmljZVVV
SUQoKSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihXZWJSVEMsICJSZXBsYXlLaXRDYXB0
dXJlU291cmNlOjpzY3JlZW5DYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRDogaW52YWxpZCBk
aXNwbGF5IElEIik7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorCisgICAg
cmV0dXJuIHNjcmVlbkRldmljZSgpOworfQorCit2b2lkIFJlcGxheUtpdENhcHR1cmVTb3VyY2U6
OnNjcmVlbkNhcHR1cmVEZXZpY2VzKFZlY3RvcjxDYXB0dXJlRGV2aWNlPiYgZGlzcGxheXMpCit7
CisgICAgaWYgKGlzQXZhaWxhYmxlKCkpCisgICAgICAgIGRpc3BsYXlzLmFwcGVuZChzY3JlZW5E
ZXZpY2UoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtQ2FwdHVy
ZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dE
aXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZS5jcHAKaW5kZXggNWJlYjlmYTIxOTk1N2FmZmRiZTNi
ZWY3YjA2NzA1ZTI1YTM3ZGE4Ni4uZjNiYmI3YzU4YjNmM2ZlNTQwOGFmMGEyMTM4ZDJkMGY4MjAy
MWU1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0NHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlLmNwcApA
QCAtNzEsOSArNzEsOSBAQCB2b2lkIENHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2U6OnN0b3Ao
KQogICAgIG1faXNSdW5uaW5nID0gZmFsc2U7CiB9CiAKLURpc3BsYXlDYXB0dXJlU291cmNlTWFj
OjpEaXNwbGF5RnJhbWVUeXBlIENHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2U6OmdlbmVyYXRl
RnJhbWUoKQorRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6RGlzcGxheUZyYW1lVHlwZSBDR0Rp
c3BsYXlTdHJlYW1DYXB0dXJlU291cmNlOjpnZW5lcmF0ZUZyYW1lKCkKIHsKLSAgICByZXR1cm4g
UmV0YWluUHRyIHsgbV9jdXJyZW50RnJhbWUuaW9TdXJmYWNlKCkgfTsKKyAgICByZXR1cm4gbV9j
dXJyZW50RnJhbWU7CiB9CiAKIGJvb2wgQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6c3Rh
cnREaXNwbGF5U3RyZWFtKCkKQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIENHRGlzcGxheVN0cmVh
bUNhcHR1cmVTb3VyY2U6OmRpc3BsYXlSZWNvbmZpZ3VyYXRpb25DYWxsQmFjayhDR0RpcmVjdERp
c3BsYQogICAgICAgICByZWludGVycHJldF9jYXN0PENHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3Vy
Y2UgKj4odXNlckluZm8pLT5kaXNwbGF5V2FzUmVjb25maWd1cmVkKGRpc3BsYXksIGZsYWdzKTsK
IH0KIAotdm9pZCBDR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlOjpuZXdGcmFtZShDR0Rpc3Bs
YXlTdHJlYW1GcmFtZVN0YXR1cyBzdGF0dXMsIERpc3BsYXlTdXJmYWNlJiYgbmV3RnJhbWUpCit2
b2lkIENHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2U6Om5ld0ZyYW1lKENHRGlzcGxheVN0cmVh
bUZyYW1lU3RhdHVzIHN0YXR1cywgUmV0YWluUHRyPElPU3VyZmFjZVJlZj4mJiBuZXdGcmFtZSkK
IHsKICAgICBzd2l0Y2ggKHN0YXR1cykgewogICAgIGNhc2Uga0NHRGlzcGxheVN0cmVhbUZyYW1l
U3RhdHVzRnJhbWVDb21wbGV0ZToKQEAgLTE3MSw3ICsxNzEsNyBAQCBDR0Rpc3BsYXlTdHJlYW1G
cmFtZUF2YWlsYWJsZUhhbmRsZXIgQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6ZnJhbWVB
dmFpbGFibAogICAgICAgICBpZiAoIXJlY3RzIHx8ICFjb3VudCkKICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzLCBzdGF0dXMs
IGZyYW1lID0gRGlzcGxheVN1cmZhY2UgeyBmcmFtZVN1cmZhY2UgfV0oKSBtdXRhYmxlIHsKKyAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcywgc3RhdHVzLCBmcmFtZSA9
IHJldGFpblB0cihmcmFtZVN1cmZhY2UpXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCF3
ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB3ZWFrVGhpcy0+
bmV3RnJhbWUoc3RhdHVzLCBXVEZNb3ZlKGZyYW1lKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NHRGlzcGxheVN0
cmVhbUNhcHR1cmVTb3VyY2UuaAppbmRleCBhMTkwMzhkY2FhZDRhMWZiODMyNTc4MDY5NTZhZDA0
NTExY2YyYzY0Li41YTEzMTY2YmE0ZjNlY2FmYThiZTc1ZTQ3MzM1ODAwYjQ5ZTFlMzg3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5
U3RyZWFtQ2FwdHVyZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9DR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlLmgKQEAgLTI3LDggKzI3LDcg
QEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKE1BQykKIAotI2luY2x1
ZGUgIkRpc3BsYXlDYXB0dXJlU291cmNlTWFjLmgiCi0jaW5jbHVkZSAiSU9TdXJmYWNlLmgiCisj
aW5jbHVkZSAiRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oIgogI2luY2x1ZGUgPENvcmVHcmFw
aGljcy9DR0Rpc3BsYXlDb25maWd1cmF0aW9uLmg+CiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NH
RGlzcGxheVN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9CbG9ja1B0ci5oPgpAQCAtNDAsMTAgKzM5
LDEwIEBAIHR5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyICpDTVNhbXBsZUJ1ZmZl
clJlZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDR0Rpc3BsYXlTdHJlYW1DYXB0
dXJlU291cmNlIDogcHVibGljIERpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpDYXB0dXJlciwgcHVi
bGljIENhbk1ha2VXZWFrUHRyPENHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2U+IHsKK2NsYXNz
IENHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2UgOiBwdWJsaWMgRGlzcGxheUNhcHR1cmVTb3Vy
Y2VDb2NvYTo6Q2FwdHVyZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDR0Rpc3BsYXlTdHJlYW1D
YXB0dXJlU291cmNlPiB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgQ0dEaXNwbGF5U3RyZWFtQ2Fw
dHVyZVNvdXJjZSgpID0gZGVmYXVsdDsKLSAgICB+Q0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJj
ZSgpOworICAgIHZpcnR1YWwgfkNHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2UoKTsKIAogcHJv
dGVjdGVkOgogICAgIHVzaW5nIEZyYW1lQXZhaWxhYmxlQ2FsbGJhY2sgPSB2b2lkICheKShDR0Rp
c3BsYXlTdHJlYW1GcmFtZVN0YXR1cywgdWludDY0X3QsIElPU3VyZmFjZVJlZiwgQ0dEaXNwbGF5
U3RyZWFtVXBkYXRlUmVmKTsKQEAgLTYwLDUxICs1OSwxOSBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRl
OgogICAgIHN0YXRpYyB2b2lkIGRpc3BsYXlSZWNvbmZpZ3VyYXRpb25DYWxsQmFjayhDR0RpcmVj
dERpc3BsYXlJRCwgQ0dEaXNwbGF5Q2hhbmdlU3VtbWFyeUZsYWdzLCB2b2lkKik7CiAKLSAgICAv
LyBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6Q2FwdHVyZXIKKyAgICAvLyBEaXNwbGF5Q2FwdHVy
ZVNvdXJjZUNvY29hOjpDYXB0dXJlcgogICAgIGJvb2wgc3RhcnQoKSBmaW5hbDsKICAgICB2b2lk
IHN0b3AoKSBmaW5hbDsKLSAgICBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6RGlzcGxheUZyYW1l
VHlwZSBnZW5lcmF0ZUZyYW1lKCkgZmluYWw7CisgICAgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2Nv
YTo6RGlzcGxheUZyYW1lVHlwZSBnZW5lcmF0ZUZyYW1lKCkgZmluYWw7CiAgICAgdm9pZCBjb21t
aXRDb25maWd1cmF0aW9uKGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYpIGZpbmFs
OwogCiAgICAgdm9pZCBkaXNwbGF5V2FzUmVjb25maWd1cmVkKENHRGlyZWN0RGlzcGxheUlELCBD
R0Rpc3BsYXlDaGFuZ2VTdW1tYXJ5RmxhZ3MpOwogICAgIGJvb2wgc3RhcnREaXNwbGF5U3RyZWFt
KCk7CiAgICAgRnJhbWVBdmFpbGFibGVDYWxsYmFjayBmcmFtZUF2YWlsYWJsZUhhbmRsZXIoKTsK
IAotICAgIGNsYXNzIERpc3BsYXlTdXJmYWNlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIERpc3Bs
YXlTdXJmYWNlKCkgPSBkZWZhdWx0OwotICAgICAgICBleHBsaWNpdCBEaXNwbGF5U3VyZmFjZShJ
T1N1cmZhY2VSZWYgc3VyZmFjZSkKLSAgICAgICAgICAgIDogbV9zdXJmYWNlKHN1cmZhY2UpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX3N1cmZhY2UpCi0gICAgICAgICAgICAgICAgSU9T
dXJmYWNlSW5jcmVtZW50VXNlQ291bnQobV9zdXJmYWNlLmdldCgpKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIH5EaXNwbGF5U3VyZmFjZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX3N1
cmZhY2UpCi0gICAgICAgICAgICAgICAgSU9TdXJmYWNlRGVjcmVtZW50VXNlQ291bnQobV9zdXJm
YWNlLmdldCgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIERpc3BsYXlTdXJmYWNlJiBvcGVyYXRv
cj0oSU9TdXJmYWNlUmVmIHN1cmZhY2UpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX3N1
cmZhY2UpCi0gICAgICAgICAgICAgICAgSU9TdXJmYWNlRGVjcmVtZW50VXNlQ291bnQobV9zdXJm
YWNlLmdldCgpKTsKLSAgICAgICAgICAgIGlmIChzdXJmYWNlKQotICAgICAgICAgICAgICAgIElP
U3VyZmFjZUluY3JlbWVudFVzZUNvdW50KHN1cmZhY2UpOwotICAgICAgICAgICAgbV9zdXJmYWNl
ID0gc3VyZmFjZTsKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgfQotCi0gICAg
ICAgIElPU3VyZmFjZVJlZiBpb1N1cmZhY2UoKSBjb25zdCB7IHJldHVybiBtX3N1cmZhY2UuZ2V0
KCk7IH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIFJldGFpblB0cjxJT1N1cmZhY2VSZWY+IG1f
c3VyZmFjZTsKLSAgICB9OwotCi0gICAgdm9pZCBuZXdGcmFtZShDR0Rpc3BsYXlTdHJlYW1GcmFt
ZVN0YXR1cywgRGlzcGxheVN1cmZhY2UmJik7Ci0KLSAgICBEaXNwbGF5U3VyZmFjZSBtX2N1cnJl
bnRGcmFtZTsKKyAgICB2b2lkIG5ld0ZyYW1lKENHRGlzcGxheVN0cmVhbUZyYW1lU3RhdHVzLCBS
ZXRhaW5QdHI8SU9TdXJmYWNlUmVmPiYmKTsKKworICAgIFJldGFpblB0cjxJT1N1cmZhY2VSZWY+
IG1fY3VycmVudEZyYW1lOwogICAgIFJldGFpblB0cjxDR0Rpc3BsYXlTdHJlYW1SZWY+IG1fZGlz
cGxheVN0cmVhbTsKICAgICBPU09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiBtX2NhcHR1cmVR
dWV1ZTsKICAgICBCbG9ja1B0cjx2b2lkKENHRGlzcGxheVN0cmVhbUZyYW1lU3RhdHVzLCB1aW50
NjRfdCwgSU9TdXJmYWNlUmVmLCBDR0Rpc3BsYXlTdHJlYW1VcGRhdGVSZWYpPiBtX2ZyYW1lQXZh
aWxhYmxlSGFuZGxlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9DR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2Fw
dHVyZVNvdXJjZS5oCmluZGV4IGUxNjA0NDA3NWRiNDI5YzdjMDY1MTgzNWNhODMzZjU5YjNkYmNi
NDYuLmViMWJmNzkzZGExM2IwZjZlNWZmMGFiMTVmMjIyNjAzN2M1ODVjMGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR0Rpc3BsYXlTdHJlYW1T
Y3JlZW5DYXB0dXJlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0NHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2UuaApAQCAtNDEsNyAr
NDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENHRGlzcGxheVN0cmVhbVNjcmVl
bkNhcHR1cmVTb3VyY2UgZmluYWwgOiBwdWJsaWMgQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJj
ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIEV4cGVjdGVkPFVuaXF1ZVJlZjxEaXNwbGF5Q2FwdHVy
ZVNvdXJjZU1hYzo6Q2FwdHVyZXI+LCBTdHJpbmc+IGNyZWF0ZShjb25zdCBTdHJpbmcmKTsKKyAg
ICBzdGF0aWMgRXhwZWN0ZWQ8VW5pcXVlUmVmPERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OkNh
cHR1cmVyPiwgU3RyaW5nPiBjcmVhdGUoY29uc3QgU3RyaW5nJik7CiAKICAgICBleHBsaWNpdCBD
R0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlKHVpbnQzMl90KTsKICAgICB+Q0dEaXNw
bGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZSgpID0gZGVmYXVsdDsKQEAgLTUxLDcgKzUxLDcg
QEAgcHVibGljOgogCiBwcml2YXRlOgogCi0gICAgLy8gRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6
OkNhcHR1cmVyCisgICAgLy8gRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Q2FwdHVyZXIKICAg
ICBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIGRldmljZVR5cGUoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW47IH0KICAgICBSZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3M6OkRpc3BsYXlTdXJmYWNlVHlwZSBzdXJmYWNlVHlwZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RGlzcGxheVN1cmZh
Y2VUeXBlOjpNb25pdG9yOyB9CiAgICAgSW50U2l6ZSBpbnRyaW5zaWNTaXplKCkgY29uc3QgZmlu
YWw7CkBAIC02MywzOCArNjMsNiBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxDR0Rpc3BsYXlT
dHJlYW1SZWY+IGNyZWF0ZURpc3BsYXlTdHJlYW0oRnJhbWVBdmFpbGFibGVDYWxsYmFjaywgZGlz
cGF0Y2hfcXVldWVfdCkgZmluYWw7CiAgICAgYm9vbCBjaGVja0Rpc3BsYXlTdHJlYW0oKSBmaW5h
bDsKIAotICAgIGNsYXNzIERpc3BsYXlTdXJmYWNlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIERp
c3BsYXlTdXJmYWNlKCkgPSBkZWZhdWx0OwotICAgICAgICBleHBsaWNpdCBEaXNwbGF5U3VyZmFj
ZShJT1N1cmZhY2VSZWYgc3VyZmFjZSkKLSAgICAgICAgICAgIDogbV9zdXJmYWNlKHN1cmZhY2Up
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX3N1cmZhY2UpCi0gICAgICAgICAgICAgICAg
SU9TdXJmYWNlSW5jcmVtZW50VXNlQ291bnQobV9zdXJmYWNlLmdldCgpKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIH5EaXNwbGF5U3VyZmFjZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICht
X3N1cmZhY2UpCi0gICAgICAgICAgICAgICAgSU9TdXJmYWNlRGVjcmVtZW50VXNlQ291bnQobV9z
dXJmYWNlLmdldCgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIERpc3BsYXlTdXJmYWNlJiBvcGVy
YXRvcj0oSU9TdXJmYWNlUmVmIHN1cmZhY2UpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICht
X3N1cmZhY2UpCi0gICAgICAgICAgICAgICAgSU9TdXJmYWNlRGVjcmVtZW50VXNlQ291bnQobV9z
dXJmYWNlLmdldCgpKTsKLSAgICAgICAgICAgIGlmIChzdXJmYWNlKQotICAgICAgICAgICAgICAg
IElPU3VyZmFjZUluY3JlbWVudFVzZUNvdW50KHN1cmZhY2UpOwotICAgICAgICAgICAgbV9zdXJm
YWNlID0gc3VyZmFjZTsKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgfQotCi0g
ICAgICAgIElPU3VyZmFjZVJlZiBpb1N1cmZhY2UoKSBjb25zdCB7IHJldHVybiBtX3N1cmZhY2Uu
Z2V0KCk7IH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIFJldGFpblB0cjxJT1N1cmZhY2VSZWY+
IG1fc3VyZmFjZTsKLSAgICB9OwotCiAgICAgUmV0YWluUHRyPENHRGlzcGxheVN0cmVhbVJlZj4g
bV9kaXNwbGF5U3RyZWFtOwogCiAgICAgdWludDMyX3QgbV9kaXNwbGF5SUQgeyAwIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5
U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9DR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlLm1tCmluZGV4
IGI3Yzc0NWRkZGYxM2Q1YjdmNjM2YWU5ZWViNGI1YzgyNDg0NDBlMzYuLjliZGE3MjRkNTM2OTll
N2JlZTg0NDE3YmVhOTkxOTkwNzk1Yjk5NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNl
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR0Rpc3Bs
YXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlLm1tCkBAIC03NSw3ICs3NSw3IEBAIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPENHRGlyZWN0RGlzcGxheUlEPiB1cGRhdGVEaXNwbGF5SUQoQ0dEaXJlY3RE
aXNwbGF5SUQgZGlzcGxhCiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotRXhwZWN0ZWQ8
VW5pcXVlUmVmPERpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpDYXB0dXJlcj4sIFN0cmluZz4gQ0dE
aXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgZGV2
aWNlSUQpCitFeHBlY3RlZDxVbmlxdWVSZWY8RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Q2Fw
dHVyZXI+LCBTdHJpbmc+IENHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2U6OmNyZWF0
ZShjb25zdCBTdHJpbmcmIGRldmljZUlEKQogewogICAgIGF1dG8gZGlzcGxheUlEID0gcGFyc2VJ
bnRlZ2VyPHVpbnQzMl90PihkZXZpY2VJRCk7CiAgICAgaWYgKCFkaXNwbGF5SUQpCkBAIC04NSw3
ICs4NSw3IEBAIEV4cGVjdGVkPFVuaXF1ZVJlZjxEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6Q2Fw
dHVyZXI+LCBTdHJpbmc+IENHRGlzcGxheVN0cmVhbVNjCiAgICAgaWYgKCFhY3R1YWxEaXNwbGF5
SUQpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiSW52YWxpZCBkaXNwbGF5IElEIl9z
KTsKIAotICAgIHJldHVybiBVbmlxdWVSZWY8RGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OkNhcHR1
cmVyPihtYWtlVW5pcXVlUmVmPENHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2U+KGFj
dHVhbERpc3BsYXlJRC52YWx1ZSgpKSk7CisgICAgcmV0dXJuIFVuaXF1ZVJlZjxEaXNwbGF5Q2Fw
dHVyZVNvdXJjZUNvY29hOjpDYXB0dXJlcj4obWFrZVVuaXF1ZVJlZjxDR0Rpc3BsYXlTdHJlYW1T
Y3JlZW5DYXB0dXJlU291cmNlPihhY3R1YWxEaXNwbGF5SUQudmFsdWUoKSkpOwogfQogCiBDR0Rp
c3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlOjpDR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0
dXJlU291cmNlKHVpbnQzMl90IGRpc3BsYXlJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZU1hbmFnZXJDb2NvYS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVN
YW5hZ2VyQ29jb2EuY3BwCmluZGV4IDg4NTU0YmFiNGMyMDFiNDIzZjI1MTFjMjI1NWQyM2Q4OTQ5
YjJiZWMuLjQ0ZmM1MjU1MzE5YWVlNzNlNDJiOTIxMWNmZjFhYWNlMTg2MWJhY2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVy
ZU1hbmFnZXJDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0Rpc3BsYXlDYXB0dXJlTWFuYWdlckNvY29hLmNwcApAQCAtMzQsMTAgKzM0LDExIEBA
CiAKICNpZiBQTEFURk9STShNQUMpCiAjaW5jbHVkZSAiQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2Fw
dHVyZVNvdXJjZS5oIgotI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR0RpcmVjdERpc3BsYXkuaD4K
ICNlbmRpZgogCi0jaW5jbHVkZSAiQ29yZVZpZGVvU29mdExpbmsuaCIKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQorI2luY2x1ZGUgIlJlcGxheUtpdENhcHR1cmVTb3VyY2UuaCIKKyNlbmRpZgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTYxLDYgKzYyLDggQEAgdm9pZCBEaXNwbGF5Q2Fw
dHVyZU1hbmFnZXJDb2NvYTo6dXBkYXRlRGlzcGxheUNhcHR1cmVEZXZpY2VzKCkKIHsKICNpZiBQ
TEFURk9STShNQUMpCiAgICAgQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZTo6c2Ny
ZWVuQ2FwdHVyZURldmljZXMobV9kZXZpY2VzKTsKKyNlbHNlCisgICAgUmVwbGF5S2l0Q2FwdHVy
ZVNvdXJjZTo6c2NyZWVuQ2FwdHVyZURldmljZXMobV9kZXZpY2VzKTsKICNlbmRpZgogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxh
eUNhcHR1cmVTb3VyY2VNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlTWFjLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZTI1NjZlMTNmNzc5OGY0YmMyN2EyNTY4MDQ4OWYzMmYwNTg4OGRkYS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsMjc0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJEaXNw
bGF5Q2FwdHVyZVNvdXJjZU1hYy5oIgotCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExB
VEZPUk0oTUFDKQotCi0jaW5jbHVkZSAiQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJj
ZS5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJNZWRpYVNhbXBsZUFWRk9iakMu
aCIKLSNpbmNsdWRlICJQaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmgiCi0jaW5jbHVkZSAiUmVhbHRp
bWVNZWRpYVNvdXJjZS5oIgotI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCIK
LSNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJSZWFs
dGltZVZpZGVvVXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAiUmVtb3RlVmlkZW9TYW1wbGUuaCIKLSNp
bmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgPENvcmVNZWRpYS9DTVN5bmMuaD4KLSNpbmNsdWRl
IDxtYWNoL21hY2hfdGltZS5oPgotI2luY2x1ZGUgPHBhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1l
QVZGb3VuZGF0aW9uLmg+Ci0jaW5jbHVkZSA8cGFsL3NwaS9jZi9Db3JlQXVkaW9TUEkuaD4KLSNp
bmNsdWRlIDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgotI2luY2x1ZGUgPHBhbC9zcGkv
Y29jb2EvSU9TdXJmYWNlU1BJLmg+Ci0jaW5jbHVkZSA8c3lzL3RpbWUuaD4KLSNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotCi0jaW5j
bHVkZSAiQ29yZVZpZGVvU29mdExpbmsuaCIKLSNpbmNsdWRlIDxwYWwvY2YvQ29yZU1lZGlhU29m
dExpbmsuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1DYXB0dXJlU291cmNlT3JFcnJvciBE
aXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6Y3JlYXRlKGNvbnN0IENhcHR1cmVEZXZpY2UmIGRldmlj
ZSwgY29uc3QgTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMpCi17Ci0gICAgc3dpdGNoIChk
ZXZpY2UudHlwZSgpKSB7Ci0gICAgY2FzZSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3Jl
ZW46Ci0gICAgICAgIHJldHVybiBjcmVhdGUoQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNv
dXJjZTo6Y3JlYXRlKGRldmljZS5wZXJzaXN0ZW50SWQoKSksIGRldmljZSwgY29uc3RyYWludHMp
OwotICAgIGNhc2UgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6V2luZG93OgotICAgIGNhc2Ug
Q2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6TWljcm9waG9uZToKLSAgICBjYXNlIENhcHR1cmVE
ZXZpY2U6OkRldmljZVR5cGU6OlNwZWFrZXI6Ci0gICAgY2FzZSBDYXB0dXJlRGV2aWNlOjpEZXZp
Y2VUeXBlOjpDYW1lcmE6Ci0gICAgY2FzZSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpVbmtu
b3duOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
fQotCi0gICAgcmV0dXJuIHsgfTsKLX0KLQotQ2FwdHVyZVNvdXJjZU9yRXJyb3IgRGlzcGxheUNh
cHR1cmVTb3VyY2VNYWM6OmNyZWF0ZShFeHBlY3RlZDxVbmlxdWVSZWY8Q2FwdHVyZXI+LCBTdHJp
bmc+JiYgY2FwdHVyZXIsIGNvbnN0IENhcHR1cmVEZXZpY2UmIGRldmljZSwgY29uc3QgTWVkaWFD
b25zdHJhaW50cyogY29uc3RyYWludHMpCi17Ci0gICAgaWYgKCFjYXB0dXJlci5oYXNfdmFsdWUo
KSkKLSAgICAgICAgcmV0dXJuIENhcHR1cmVTb3VyY2VPckVycm9yIHsgV1RGTW92ZShjYXB0dXJl
ci5lcnJvcigpKSB9OwotCi0gICAgYXV0byBzb3VyY2UgPSBhZG9wdFJlZigqbmV3IERpc3BsYXlD
YXB0dXJlU291cmNlTWFjKFdURk1vdmUoY2FwdHVyZXIudmFsdWUoKSksIFN0cmluZyB7IGRldmlj
ZS5sYWJlbCgpIH0pKTsKLSAgICBpZiAoY29uc3RyYWludHMpIHsKLSAgICAgICAgYXV0byByZXN1
bHQgPSBzb3VyY2UtPmFwcGx5Q29uc3RyYWludHMoKmNvbnN0cmFpbnRzKTsKLSAgICAgICAgaWYg
KHJlc3VsdCkKLSAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdC52YWx1ZSgpLmJhZENv
bnN0cmFpbnQpOwotICAgIH0KLQotICAgIHJldHVybiBDYXB0dXJlU291cmNlT3JFcnJvcihXVEZN
b3ZlKHNvdXJjZSkpOwotfQotCi1EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6RGlzcGxheUNhcHR1
cmVTb3VyY2VNYWMoVW5pcXVlUmVmPENhcHR1cmVyPiYmIGNhcHR1cmVyLCBTdHJpbmcmJiBuYW1l
KQotICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZShUeXBlOjpWaWRlbywgV1RGTW92ZShuYW1lKSkK
LSAgICAsIG1fY2FwdHVyZXIoV1RGTW92ZShjYXB0dXJlcikpCi0gICAgLCBtX3RpbWVyKFJ1bkxv
b3A6OmN1cnJlbnQoKSwgdGhpcywgJkRpc3BsYXlDYXB0dXJlU291cmNlTWFjOjplbWl0RnJhbWUp
Ci17Ci19Ci0KLURpc3BsYXlDYXB0dXJlU291cmNlTWFjOjp+RGlzcGxheUNhcHR1cmVTb3VyY2VN
YWMoKQotewotfQotCi1jb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBEaXNw
bGF5Q2FwdHVyZVNvdXJjZU1hYzo6Y2FwYWJpbGl0aWVzKCkKLXsKLSAgICBpZiAoIW1fY2FwYWJp
bGl0aWVzKSB7Ci0gICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMgY2FwYWJp
bGl0aWVzKHNldHRpbmdzKCkuc3VwcG9ydGVkQ29uc3RyYWludHMoKSk7Ci0KLSAgICAgICAgYXV0
byBpbnRyaW5zaWNTaXplID0gbV9jYXB0dXJlci0+aW50cmluc2ljU2l6ZSgpOwotICAgICAgICBj
YXBhYmlsaXRpZXMuc2V0V2lkdGgoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSgxLCBpbnRyaW5zaWNT
aXplLndpZHRoKCkpKTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLnNldEhlaWdodChDYXBhYmlsaXR5
VmFsdWVPclJhbmdlKDEsIGludHJpbnNpY1NpemUuaGVpZ2h0KCkpKTsKLSAgICAgICAgY2FwYWJp
bGl0aWVzLnNldEZyYW1lUmF0ZShDYXBhYmlsaXR5VmFsdWVPclJhbmdlKC4wMSwgMzAuMCkpOwot
Ci0gICAgICAgIG1fY2FwYWJpbGl0aWVzID0gV1RGTW92ZShjYXBhYmlsaXRpZXMpOwotICAgIH0K
LSAgICByZXR1cm4gbV9jYXBhYmlsaXRpZXMudmFsdWUoKTsKLX0KLQotY29uc3QgUmVhbHRpbWVN
ZWRpYVNvdXJjZVNldHRpbmdzJiBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6c2V0dGluZ3MoKQot
ewotICAgIGlmICghbV9jdXJyZW50U2V0dGluZ3MpIHsKLSAgICAgICAgUmVhbHRpbWVNZWRpYVNv
dXJjZVNldHRpbmdzIHNldHRpbmdzOwotICAgICAgICBzZXR0aW5ncy5zZXRGcmFtZVJhdGUoZnJh
bWVSYXRlKCkpOwotCi0gICAgICAgIGF1dG8gc2l6ZSA9IHRoaXMtPnNpemUoKTsKLSAgICAgICAg
c2V0dGluZ3Muc2V0V2lkdGgoc2l6ZS53aWR0aCgpKTsKLSAgICAgICAgc2V0dGluZ3Muc2V0SGVp
Z2h0KHNpemUuaGVpZ2h0KCkpOwotCi0gICAgICAgIHNldHRpbmdzLnNldERpc3BsYXlTdXJmYWNl
KG1fY2FwdHVyZXItPnN1cmZhY2VUeXBlKCkpOwotICAgICAgICBzZXR0aW5ncy5zZXRMb2dpY2Fs
U3VyZmFjZShmYWxzZSk7Ci0KLSAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENv
bnN0cmFpbnRzIHN1cHBvcnRlZENvbnN0cmFpbnRzOwotICAgICAgICBzdXBwb3J0ZWRDb25zdHJh
aW50cy5zZXRTdXBwb3J0c0ZyYW1lUmF0ZSh0cnVlKTsKLSAgICAgICAgc3VwcG9ydGVkQ29uc3Ry
YWludHMuc2V0U3VwcG9ydHNXaWR0aCh0cnVlKTsKLSAgICAgICAgc3VwcG9ydGVkQ29uc3RyYWlu
dHMuc2V0U3VwcG9ydHNIZWlnaHQodHJ1ZSk7Ci0gICAgICAgIHN1cHBvcnRlZENvbnN0cmFpbnRz
LnNldFN1cHBvcnRzRGlzcGxheVN1cmZhY2UodHJ1ZSk7Ci0gICAgICAgIHN1cHBvcnRlZENvbnN0
cmFpbnRzLnNldFN1cHBvcnRzTG9naWNhbFN1cmZhY2UodHJ1ZSk7Ci0KLSAgICAgICAgc2V0dGlu
Z3Muc2V0U3VwcG9ydGVkQ29uc3RyYWludHMoc3VwcG9ydGVkQ29uc3RyYWludHMpOwotCi0gICAg
ICAgIG1fY3VycmVudFNldHRpbmdzID0gV1RGTW92ZShzZXR0aW5ncyk7Ci0gICAgfQotICAgIHJl
dHVybiBtX2N1cnJlbnRTZXR0aW5ncy52YWx1ZSgpOwotfQotCi12b2lkIERpc3BsYXlDYXB0dXJl
U291cmNlTWFjOjpzZXR0aW5nc0RpZENoYW5nZShPcHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJj
ZVNldHRpbmdzOjpGbGFnPiBzZXR0aW5ncykKLXsKLSAgICBpZiAoc2V0dGluZ3MuY29udGFpbnMo
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpGcmFtZVJhdGUpICYmIG1fdGltZXIu
aXNBY3RpdmUoKSkKLSAgICAgICAgbV90aW1lci5zdGFydFJlcGVhdGluZygxX3MgLyBmcmFtZVJh
dGUoKSk7Ci0KLSAgICBtX2N1cnJlbnRTZXR0aW5ncyA9IHsgfTsKLX0KLQotdm9pZCBEaXNwbGF5
Q2FwdHVyZVNvdXJjZU1hYzo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKLXsKLSAgICBtX3N0YXJ0VGlt
ZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwotICAgIG1fdGltZXIuc3RhcnRSZXBlYXRpbmcoMV9z
IC8gZnJhbWVSYXRlKCkpOwotCi0gICAgY29tbWl0Q29uZmlndXJhdGlvbigpOwotICAgIGlmICgh
bV9jYXB0dXJlci0+c3RhcnQoKSkKLSAgICAgICAgY2FwdHVyZUZhaWxlZCgpOwotfQotCi12b2lk
IERpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpzdG9wUHJvZHVjaW5nRGF0YSgpCi17Ci0gICAgbV90
aW1lci5zdG9wKCk7Ci0gICAgbV9lbGFwc2VkVGltZSArPSBNb25vdG9uaWNUaW1lOjpub3coKSAt
IG1fc3RhcnRUaW1lOwotICAgIG1fc3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6bmFuKCk7Ci0K
LSAgICBtX2NhcHR1cmVyLT5zdG9wKCk7Ci19Ci0KLVNlY29uZHMgRGlzcGxheUNhcHR1cmVTb3Vy
Y2VNYWM6OmVsYXBzZWRUaW1lKCkKLXsKLSAgICBpZiAoc3RkOjppc25hbihtX3N0YXJ0VGltZSkp
Ci0gICAgICAgIHJldHVybiBtX2VsYXBzZWRUaW1lOwotCi0gICAgcmV0dXJuIG1fZWxhcHNlZFRp
bWUgKyAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX3N0YXJ0VGltZSk7Ci19Ci0KLS8vIFdlIGtl
ZXAgdGhlIGFzcGVjdCByYXRpbyBvZiB0aGUgaW50cmluc2ljIHNpemUgZm9yIHRoZSBmcmFtZSBz
aXplIGFzIGdldERpc3BsYXlNZWRpYSBhbGxvd3MgbWF4IGNvbnN0cmFpbnRzIG9ubHkuCi12b2lk
IERpc3BsYXlDYXB0dXJlU291cmNlTWFjOjp1cGRhdGVGcmFtZVNpemUoKQotewotICAgIGF1dG8g
aW50cmluc2ljU2l6ZSA9IHRoaXMtPmludHJpbnNpY1NpemUoKTsKLQotICAgIGF1dG8gZnJhbWVT
aXplID0gc2l6ZSgpOwotICAgIGlmICghZnJhbWVTaXplLmhlaWdodCgpKQotICAgICAgICBmcmFt
ZVNpemUuc2V0SGVpZ2h0KGludHJpbnNpY1NpemUuaGVpZ2h0KCkpOwotICAgIGlmICghZnJhbWVT
aXplLndpZHRoKCkpCi0gICAgICAgIGZyYW1lU2l6ZS5zZXRXaWR0aChpbnRyaW5zaWNTaXplLndp
ZHRoKCkpOwotCi0gICAgYXV0byBtYXhIZWlnaHQgPSBzdGQ6Om1pbihmcmFtZVNpemUuaGVpZ2h0
KCksIGludHJpbnNpY1NpemUuaGVpZ2h0KCkpOwotICAgIGF1dG8gbWF4V2lkdGggPSBzdGQ6Om1p
bihmcmFtZVNpemUud2lkdGgoKSwgaW50cmluc2ljU2l6ZS53aWR0aCgpKTsKLQotICAgIGF1dG8g
aGVpZ2h0Rm9yTWF4V2lkdGggPSBtYXhXaWR0aCAqIGludHJpbnNpY1NpemUuaGVpZ2h0KCkgLyBp
bnRyaW5zaWNTaXplLndpZHRoKCk7Ci0gICAgYXV0byB3aWR0aEZvck1heEhlaWdodCA9IG1heEhl
aWdodCAqIGludHJpbnNpY1NpemUud2lkdGgoKSAvIGludHJpbnNpY1NpemUuaGVpZ2h0KCk7Ci0K
LSAgICBpZiAoaGVpZ2h0Rm9yTWF4V2lkdGggPD0gbWF4SGVpZ2h0KSB7Ci0gICAgICAgIHNldFNp
emUoeyBtYXhXaWR0aCwgaGVpZ2h0Rm9yTWF4V2lkdGggfSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgaWYgKHdpZHRoRm9yTWF4SGVpZ2h0IDw9IG1heFdpZHRoKSB7Ci0gICAgICAgIHNl
dFNpemUoeyB3aWR0aEZvck1heEhlaWdodCwgbWF4SGVpZ2h0IH0pOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIHNldFNpemUoaW50cmluc2ljU2l6ZSk7Ci19Ci0KLXZvaWQgRGlzcGxheUNh
cHR1cmVTb3VyY2VNYWM6OmVtaXRGcmFtZSgpCi17Ci0gICAgaWYgKG11dGVkKCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGlmICghbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbikKLSAgICAgICAgbV9p
bWFnZVRyYW5zZmVyU2Vzc2lvbiA9IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNyZWF0ZShwcmVm
ZXJlZFBpeGVsQnVmZmVyRm9ybWF0KCkpOwotCi0gICAgYXV0byBzYW1wbGVUaW1lID0gTWVkaWFU
aW1lOjpjcmVhdGVXaXRoRG91YmxlKChlbGFwc2VkVGltZSgpICsgMTAwX21zKS5zZWNvbmRzKCkp
OwotCi0gICAgYXV0byBmcmFtZSA9IG1fY2FwdHVyZXItPmdlbmVyYXRlRnJhbWUoKTsKLSAgICBh
dXRvIGltYWdlU2l6ZSA9IFdURjo6c3dpdGNoT24oZnJhbWUsCi0gICAgICAgIFtdKFJldGFpblB0
cjxJT1N1cmZhY2VSZWY+IHN1cmZhY2UpIC0+IEludFNpemUgewotICAgICAgICAgICAgaWYgKCFz
dXJmYWNlKQotICAgICAgICAgICAgICAgIHJldHVybiB7IH07Ci0KLSAgICAgICAgICAgIHJldHVy
biBJbnRTaXplKElPU3VyZmFjZUdldFdpZHRoKHN1cmZhY2UuZ2V0KCkpLCBJT1N1cmZhY2VHZXRI
ZWlnaHQoc3VyZmFjZS5nZXQoKSkpOwotICAgICAgICB9LAotICAgICAgICBbXShSZWZQdHI8TmF0
aXZlSW1hZ2U+IGltYWdlKSAtPiBJbnRTaXplIHsKLSAgICAgICAgICAgIGlmICghaW1hZ2UpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgICAgICAgICAgcmV0dXJuIGltYWdlLT5z
aXplKCk7Ci0gICAgICAgIH0KLSAgICApOwotCi0gICAgaWYgKGltYWdlU2l6ZS5pc0VtcHR5KCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChpbnRyaW5zaWNTaXplKCkgIT0gaW1hZ2VTaXpl
KSB7Ci0gICAgICAgIHNldEludHJpbnNpY1NpemUoaW1hZ2VTaXplKTsKLSAgICAgICAgdXBkYXRl
RnJhbWVTaXplKCk7Ci0gICAgfQotCi0gICAgYXV0byBzYW1wbGUgPSBXVEY6OnN3aXRjaE9uKGZy
YW1lLAotICAgICAgICBbdGhpcywgc2FtcGxlVGltZV0oUmV0YWluUHRyPElPU3VyZmFjZVJlZj4g
c3VyZmFjZSkgLT4gUmVmUHRyPE1lZGlhU2FtcGxlPiB7Ci0gICAgICAgICAgICBpZiAoIXN1cmZh
Y2UpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAgICAgICAgIHJldHVy
biBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5jcmVhdGVNZWRpYVNhbXBsZShzdXJmYWNlLmdldCgp
LCBzYW1wbGVUaW1lLCBzaXplKCkpOwotICAgICAgICB9LAotICAgICAgICBbdGhpcywgc2FtcGxl
VGltZV0oUmVmUHRyPE5hdGl2ZUltYWdlPiBpbWFnZSkgLT4gUmVmUHRyPE1lZGlhU2FtcGxlPiB7
Ci0gICAgICAgICAgICBpZiAoIWltYWdlKQotICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwotCi0gICAgICAgICAgICByZXR1cm4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3JlYXRlTWVk
aWFTYW1wbGUoaW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgc2FtcGxlVGltZSwgc2l6ZSgp
KTsKLSAgICAgICAgfQotICAgICk7Ci0KLSAgICBpZiAoIXNhbXBsZSkgewotICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHZpZGVvU2Ft
cGxlQXZhaWxhYmxlKCpzYW1wbGUuZ2V0KCkpOwotfQotCi12b2lkIERpc3BsYXlDYXB0dXJlU291
cmNlTWFjOjpDYXB0dXJlcjo6c2V0TG9nZ2VyKGNvbnN0IExvZ2dlciYgbmV3TG9nZ2VyLCBjb25z
dCB2b2lkKiBuZXdMb2dJZGVudGlmaWVyKQotewotICAgIG1fbG9nZ2VyID0gJm5ld0xvZ2dlcjsK
LSAgICBtX2xvZ0lkZW50aWZpZXIgPSBuZXdMb2dJZGVudGlmaWVyOwotfQotCi1XVEZMb2dDaGFu
bmVsJiBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6Q2FwdHVyZXI6OmxvZ0NoYW5uZWwoKSBjb25z
dAotewotICAgIHJldHVybiBMb2dXZWJSVEM7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKE1BQykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2Fw
dHVyZVNvdXJjZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0Rpc3BsYXlDYXB0dXJlU291cmNlTWFjLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGY5M2U3ODM4YjljNDc3MzkyZmI3MzhhMTRiOGQ1MTRhNzg2ZWExMGMuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlTWFjLmgKKysrIC9kZXYvbnVsbApA
QCAtMSwxMTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQ
TEFURk9STShNQUMpCi0KLSNpbmNsdWRlICJDYXB0dXJlRGV2aWNlLmgiCi0jaW5jbHVkZSAiSW1h
Z2VUcmFuc2ZlclNlc3Npb25WVC5oIgotI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIK
LSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNp
bmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLSNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotdHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZSAqQ0dJ
bWFnZVJlZjsKLXR5cGVkZWYgc3RydWN0IF9fQ1ZCdWZmZXIgKkNWUGl4ZWxCdWZmZXJSZWY7Ci10
eXBlZGVmIHN0cnVjdCBfX0lPU3VyZmFjZSAqSU9TdXJmYWNlUmVmOwotCi1uYW1lc3BhY2UgV1RG
IHsKLWNsYXNzIE1lZGlhVGltZTsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBD
YXB0dXJlRGV2aWNlSW5mbzsKLWNsYXNzIEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ7Ci1jbGFzcyBQ
aXhlbEJ1ZmZlckNvbmZvcm1lckNWOwotCi1jbGFzcyBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYyBm
aW5hbCA6IHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlIHsKLXB1YmxpYzoKLSAgICB1c2luZyBE
aXNwbGF5RnJhbWVUeXBlID0gc3RkOjp2YXJpYW50PFJlZlB0cjxOYXRpdmVJbWFnZT4sIFJldGFp
blB0cjxJT1N1cmZhY2VSZWY+PjsKLQotICAgIGNsYXNzIENhcHR1cmVyIDogcHVibGljIExvZ2dl
ckhlbHBlciB7Ci0gICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIHB1YmxpYzoK
LSAgICAgICAgdmlydHVhbCB+Q2FwdHVyZXIoKSA9IGRlZmF1bHQ7Ci0KLSAgICAgICAgdmlydHVh
bCBib29sIHN0YXJ0KCkgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpID0gMDsKLSAg
ICAgICAgdmlydHVhbCBEaXNwbGF5RnJhbWVUeXBlIGdlbmVyYXRlRnJhbWUoKSA9IDA7Ci0gICAg
ICAgIHZpcnR1YWwgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSBkZXZpY2VUeXBlKCkgY29uc3Qg
PSAwOwotICAgICAgICB2aXJ0dWFsIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RGlzcGxh
eVN1cmZhY2VUeXBlIHN1cmZhY2VUeXBlKCkgY29uc3QgPSAwOwotICAgICAgICB2aXJ0dWFsIHZv
aWQgY29tbWl0Q29uZmlndXJhdGlvbihjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3Mm
KSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgSW50U2l6ZSBpbnRyaW5zaWNTaXplKCkgY29uc3QgPSAw
OwotCi0gICAgICAgIHZpcnR1YWwgdm9pZCBzZXRMb2dnZXIoY29uc3QgTG9nZ2VyJiwgY29uc3Qg
dm9pZCopOwotICAgICAgICBjb25zdCBMb2dnZXIqIGxvZ2dlclB0cigpIGNvbnN0IHsgcmV0dXJu
IG1fbG9nZ2VyLmdldCgpOyB9Ci0gICAgICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3Qg
ZmluYWwgeyBBU1NFUlQobV9sb2dnZXIpOyByZXR1cm4gKm1fbG9nZ2VyLmdldCgpOyB9Ci0gICAg
ICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xv
Z0lkZW50aWZpZXI7IH0KLSAgICAgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0
IGZpbmFsOwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgUmVmUHRyPGNvbnN0IExvZ2dlcj4gbV9s
b2dnZXI7Ci0gICAgICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllcjsKLSAgICB9OwotCi0g
ICAgc3RhdGljIENhcHR1cmVTb3VyY2VPckVycm9yIGNyZWF0ZShjb25zdCBDYXB0dXJlRGV2aWNl
JiwgY29uc3QgTWVkaWFDb25zdHJhaW50cyopOwotICAgIHN0YXRpYyBDYXB0dXJlU291cmNlT3JF
cnJvciBjcmVhdGUoRXhwZWN0ZWQ8VW5pcXVlUmVmPENhcHR1cmVyPiwgU3RyaW5nPiYmLCBjb25z
dCBDYXB0dXJlRGV2aWNlJiwgY29uc3QgTWVkaWFDb25zdHJhaW50cyopOwotCi0gICAgU2Vjb25k
cyBlbGFwc2VkVGltZSgpOwotICAgIHZvaWQgdXBkYXRlRnJhbWVTaXplKCk7Ci0KLXByaXZhdGU6
Ci0gICAgRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMoVW5pcXVlUmVmPENhcHR1cmVyPiYmLCBTdHJp
bmcmJiBuYW1lKTsKLSAgICB+RGlzcGxheUNhcHR1cmVTb3VyY2VNYWMoKTsKLQotICAgIHZvaWQg
c3RhcnRQcm9kdWNpbmdEYXRhKCkgZmluYWw7Ci0gICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgp
IGZpbmFsOwotICAgIHZvaWQgc2V0dGluZ3NEaWRDaGFuZ2UoT3B0aW9uU2V0PFJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5nczo6RmxhZz4pIGZpbmFsOwotICAgIGJvb2wgaXNDYXB0dXJlU291cmNl
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFT
b3VyY2VDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcygpIGZpbmFsOwotICAgIGNvbnN0IFJlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MoKSBmaW5hbDsKLSAgICBDYXB0dXJlRGV2
aWNlOjpEZXZpY2VUeXBlIGRldmljZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2NhcHR1cmVyLT5k
ZXZpY2VUeXBlKCk7IH0KLSAgICB2b2lkIGNvbW1pdENvbmZpZ3VyYXRpb24oKSBmaW5hbCB7IG1f
Y2FwdHVyZXItPmNvbW1pdENvbmZpZ3VyYXRpb24oc2V0dGluZ3MoKSk7IH0KLQotICAgIGNvbnN0
IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJEaXNwbGF5Q2FwdHVy
ZVNvdXJjZU1hYyI7IH0KLQotICAgIHZvaWQgZW1pdEZyYW1lKCk7Ci0KLSAgICBVbmlxdWVSZWY8
Q2FwdHVyZXI+IG1fY2FwdHVyZXI7Ci0gICAgc3RkOjpvcHRpb25hbDxSZWFsdGltZU1lZGlhU291
cmNlQ2FwYWJpbGl0aWVzPiBtX2NhcGFiaWxpdGllczsKLSAgICBzdGQ6Om9wdGlvbmFsPFJlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5ncz4gbV9jdXJyZW50U2V0dGluZ3M7Ci0gICAgUmVhbHRpbWVN
ZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzIG1fc3VwcG9ydGVkQ29uc3RyYWludHM7Ci0K
LSAgICBNb25vdG9uaWNUaW1lIG1fc3RhcnRUaW1lIHsgTW9ub3RvbmljVGltZTo6bmFuKCkgfTsK
LSAgICBTZWNvbmRzIG1fZWxhcHNlZFRpbWUgeyAwX3MgfTsKLQotICAgIFJ1bkxvb3A6OlRpbWVy
PERpc3BsYXlDYXB0dXJlU291cmNlTWFjPiBtX3RpbWVyOwotCi0gICAgc3RkOjp1bmlxdWVfcHRy
PEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ+IG1faW1hZ2VUcmFuc2ZlclNlc3Npb247Ci19OwotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAm
JiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1h
Yy5jcHAKaW5kZXggY2U0OTA5MTAzZTZjY2M4Y2EyNDRhZTdiZjU4OWM5NTMyNTQxOWE5OS4uYTQx
OGE2MDUwMmI3Y2ZhN2YzNzM0OWYxMTE5YzdhMWUyNjQ1YjFhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9S
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1
ZGUgIkFWVmlkZW9DYXB0dXJlU291cmNlLmgiCiAjaW5jbHVkZSAiQ29yZUF1ZGlvQ2FwdHVyZVNv
dXJjZS5oIgogI2luY2x1ZGUgIkRpc3BsYXlDYXB0dXJlTWFuYWdlckNvY29hLmgiCi0jaW5jbHVk
ZSAiRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMuaCIKKyNpbmNsdWRlICJEaXNwbGF5Q2FwdHVyZVNv
dXJjZUNvY29hLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFt
UHJpdmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC01OSwxNSArNTksNyBA
QCBjbGFzcyBEaXNwbGF5Q2FwdHVyZVNvdXJjZUZhY3RvcnlNYWMgZmluYWwgOiBwdWJsaWMgRGlz
cGxheUNhcHR1cmVGYWN0b3J5IHsKIHB1YmxpYzoKICAgICBDYXB0dXJlU291cmNlT3JFcnJvciBj
cmVhdGVEaXNwbGF5Q2FwdHVyZVNvdXJjZShjb25zdCBDYXB0dXJlRGV2aWNlJiBkZXZpY2UsIGNv
bnN0IE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzKSBmaW5hbAogICAgIHsKLSNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQotICAgICAgICBVTlVTRURfUEFSQU0oZGV2aWNlKTsKLSAgICAgICAg
VU5VU0VEX1BBUkFNKGNvbnN0cmFpbnRzKTsKLSNlbmRpZgotI2lmIFBMQVRGT1JNKE1BQykKLSAg
ICAgICAgcmV0dXJuIERpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpjcmVhdGUoZGV2aWNlLCBjb25z
dHJhaW50cyk7Ci0jZWxzZQotICAgICAgICByZXR1cm4geyB9OwotI2VuZGlmCisgICAgICAgIHJl
dHVybiBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpjcmVhdGUoZGV2aWNlLCBjb25zdHJhaW50
cyk7CiAgICAgfQogcHJpdmF0ZToKICAgICBDYXB0dXJlRGV2aWNlTWFuYWdlciYgZGlzcGxheUNh
cHR1cmVEZXZpY2VNYW5hZ2VyKCkgeyByZXR1cm4gRGlzcGxheUNhcHR1cmVNYW5hZ2VyQ29jb2E6
OnNpbmdsZXRvbigpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCmluZGV4IDMxZDkyMTQ4
ODBkZjM0Mjg5ZmZhOWU2YWI2Y2RhZjFjMzAwYTFkZjQuLjE2Njg0YTEzZDQ2ZGVkYTdhMjMxOWI4
ZTUzYzhhMDExM2IwOGE1MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCkBAIC00Myw3
ICs0Myw3IEBACiAKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlICJDb3JlQXVkaW9DYXB0
dXJlU291cmNlLmgiCi0jaW5jbHVkZSAiRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMuaCIKKyNpbmNs
dWRlICJEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmgiCiAjaW5jbHVkZSAiTW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2VNYWMuaCIKICNlbmRpZgogCkBAIC0xMTUsMTQgKzExNSwxNCBAQCBwcml2YXRl
OgogfTsKIAogI2lmIFBMQVRGT1JNKE1BQykKLWNsYXNzIE1vY2tEaXNwbGF5Q2FwdHVyZXIgZmlu
YWwgOiBwdWJsaWMgRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OkNhcHR1cmVyIHsKK2NsYXNzIE1v
Y2tEaXNwbGF5Q2FwdHVyZXIgZmluYWwgOiBwdWJsaWMgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2Nv
YTo6Q2FwdHVyZXIgewogcHVibGljOgogICAgIGV4cGxpY2l0IE1vY2tEaXNwbGF5Q2FwdHVyZXIo
Y29uc3QgQ2FwdHVyZURldmljZSYpOwogCiBwcml2YXRlOgogICAgIGJvb2wgc3RhcnQoKSBmaW5h
bDsKICAgICB2b2lkIHN0b3AoKSBmaW5hbCAgeyBtX3NvdXJjZS0+c3RvcCgpOyB9Ci0gICAgRGlz
cGxheUNhcHR1cmVTb3VyY2VNYWM6OkRpc3BsYXlGcmFtZVR5cGUgZ2VuZXJhdGVGcmFtZSgpIGZp
bmFsOworICAgIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OkRpc3BsYXlGcmFtZVR5cGUgZ2Vu
ZXJhdGVGcmFtZSgpIGZpbmFsOwogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RGlz
cGxheVN1cmZhY2VUeXBlIHN1cmZhY2VUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzOjpEaXNwbGF5U3VyZmFjZVR5cGU6Ok1vbml0b3I7IH0KICAg
ICB2b2lkIGNvbW1pdENvbmZpZ3VyYXRpb24oY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzJikgZmluYWw7CiAgICAgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSBkZXZpY2VUeXBlKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuOyB9
CkBAIC0xNTIsNyArMTUyLDcgQEAgdm9pZCBNb2NrRGlzcGxheUNhcHR1cmVyOjpjb21taXRDb25m
aWd1cmF0aW9uKGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYKICAgICBtX3NldHRp
bmdzID0gc2V0dGluZ3M7CiB9CiAKLURpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpEaXNwbGF5RnJh
bWVUeXBlIE1vY2tEaXNwbGF5Q2FwdHVyZXI6OmdlbmVyYXRlRnJhbWUoKQorRGlzcGxheUNhcHR1
cmVTb3VyY2VDb2NvYTo6RGlzcGxheUZyYW1lVHlwZSBNb2NrRGlzcGxheUNhcHR1cmVyOjpnZW5l
cmF0ZUZyYW1lKCkKIHsKICAgICBpZiAoYXV0byogaW1hZ2VCdWZmZXIgPSBtX3NvdXJjZS0+aW1h
Z2VCdWZmZXIoKSkKICAgICAgICAgcmV0dXJuIGltYWdlQnVmZmVyLT5jb3B5TmF0aXZlSW1hZ2Uo
KTsKQEAgLTE4Niw3ICsxODYsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgQ2FwdHVyZURldmlj
ZTo6RGV2aWNlVHlwZTo6U2NyZWVuOgogICAgICAgICBjYXNlIENhcHR1cmVEZXZpY2U6OkRldmlj
ZVR5cGU6OldpbmRvdzoKICNpZiBQTEFURk9STShNQUMpCi0gICAgICAgICAgICByZXR1cm4gRGlz
cGxheUNhcHR1cmVTb3VyY2VNYWM6OmNyZWF0ZShVbmlxdWVSZWY8RGlzcGxheUNhcHR1cmVTb3Vy
Y2VNYWM6OkNhcHR1cmVyPihtYWtlVW5pcXVlUmVmPE1vY2tEaXNwbGF5Q2FwdHVyZXI+KGRldmlj
ZSkpLCBkZXZpY2UsIGNvbnN0cmFpbnRzKTsKKyAgICAgICAgICAgIHJldHVybiBEaXNwbGF5Q2Fw
dHVyZVNvdXJjZUNvY29hOjpjcmVhdGUoVW5pcXVlUmVmPERpc3BsYXlDYXB0dXJlU291cmNlQ29j
b2E6OkNhcHR1cmVyPihtYWtlVW5pcXVlUmVmPE1vY2tEaXNwbGF5Q2FwdHVyZXI+KGRldmljZSkp
LCBkZXZpY2UsIGNvbnN0cmFpbnRzKTsKICNlbGlmIFVTRShHU1RSRUFNRVIpCiAgICAgICAgICAg
ICByZXR1cm4gTW9ja0Rpc3BsYXlDYXB0dXJlU291cmNlR1N0cmVhbWVyOjpjcmVhdGUoZGV2aWNl
LCBjb25zdHJhaW50cyk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLm1tCmluZGV4IDFkNzZhODgwNmQw
MTk5YmU4MTE3ZTU4Nzk3MjA5NGYzMTg1ZDJhZGUuLjBiYzE3ZmZmZmE3YTQ4ZWM3YWJhNDkwY2Yz
YWYyM2IyYjVmNmI4ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW0KQEAgLTE0MSw2ICsxNDEsOCBAQCBz
dGF0aWMgTlNTdHJpbmcgKmFsZXJ0TWVzc2FnZVRleHQoTWVkaWFQZXJtaXNzaW9uUmVhc29uIHJl
YXNvbiwgY29uc3QgV2ViQ29yZTo6UwogICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6V0VCX1VJX05TU1RSSU5HKEAiQWxsb3cg4oCcJUDigJ0gdG8gdXNlIHlvdXIgY2Ft
ZXJhIGFuZCBtaWNyb3Bob25lPyIsIEAiTWVzc2FnZSBmb3IgdXNlciBtZWRpYSBwcm9tcHQiKSwg
dmlzaWJsZU9yaWdpbl07CiAgICAgY2FzZSBNZWRpYVBlcm1pc3Npb25SZWFzb246Ok1pY3JvcGhv
bmU6CiAgICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpXRUJfVUlfTlNT
VFJJTkcoQCJBbGxvdyDigJwlQOKAnSB0byB1c2UgeW91ciBtaWNyb3Bob25lPyIsIEAiTWVzc2Fn
ZSBmb3IgdXNlciBtaWNyb3Bob25lIGFjY2VzcyBwcm9tcHQiKSwgdmlzaWJsZU9yaWdpbl07Cisg
ICAgY2FzZSBNZWRpYVBlcm1pc3Npb25SZWFzb246OlNjcmVlbkNhcHR1cmU6CisgICAgICAgIHJl
dHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpXRUJfVUlfTlNTVFJJTkcoQCJBbGxvdyDi
gJwlQOKAnSB0byBvYnNlcnZlIHlvdXIgc2NyZWVuPyIsIEAiTWVzc2FnZSBmb3Igc2NyZWVuIHNo
YXJpbmcgcHJvbXB0IiksIHZpc2libGVPcmlnaW5dOwogICAgIGNhc2UgTWVkaWFQZXJtaXNzaW9u
UmVhc29uOjpEZXZpY2VPcmllbnRhdGlvbjoKICAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OldFQl9VSV9OU1NUUklORyhAIuKAnCVA4oCdIFdvdWxkIExpa2UgdG8gQWNj
ZXNzIE1vdGlvbiBhbmQgT3JpZW50YXRpb24iLCBAIk1lc3NhZ2UgZm9yIHJlcXVlc3RpbmcgYWNj
ZXNzIHRvIHRoZSBkZXZpY2UgbW90aW9uIGFuZCBvcmllbnRhdGlvbiIpLCB2aXNpYmxlT3JpZ2lu
XTsKICAgICBjYXNlIE1lZGlhUGVybWlzc2lvblJlYXNvbjo6R2VvbG9jYXRpb246CkBAIC0xNTcs
NiArMTU5LDggQEAgc3RhdGljIE5TU3RyaW5nICphbGxvd0J1dHRvblRleHQoTWVkaWFQZXJtaXNz
aW9uUmVhc29uIHJlYXNvbikKICAgICBjYXNlIE1lZGlhUGVybWlzc2lvblJlYXNvbjo6Q2FtZXJh
QW5kTWljcm9waG9uZToKICAgICBjYXNlIE1lZGlhUGVybWlzc2lvblJlYXNvbjo6TWljcm9waG9u
ZToKICAgICAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkdfS0VZKEAiQWxsb3ciLCAiQWxsb3cgKHVz
ZXJtZWRpYSkiLCBAIkFsbG93IGJ1dHRvbiB0aXRsZSBpbiB1c2VyIG1lZGlhIHByb21wdCIpOwor
ICAgIGNhc2UgTWVkaWFQZXJtaXNzaW9uUmVhc29uOjpTY3JlZW5DYXB0dXJlOgorICAgICAgICBy
ZXR1cm4gV0VCX1VJX1NUUklOR19LRVkoQCJBbGxvdyIsICJBbGxvdyAoc2NyZWVuc2hhcmluZyki
LCBAIkFsbG93IGJ1dHRvbiB0aXRsZSBpbiBzY3JlZW4gc2hhcmluZyBwcm9tcHQiKTsKICAgICBj
YXNlIE1lZGlhUGVybWlzc2lvblJlYXNvbjo6RGV2aWNlT3JpZW50YXRpb246CiAgICAgICAgIHJl
dHVybiBXRUJfVUlfU1RSSU5HX0tFWShAIkFsbG93IiwgIkFsbG93IChkZXZpY2UgbW90aW9uIGFu
ZCBvcmllbnRhdGlvbiBhY2Nlc3MpIiwgQCJCdXR0b24gdGl0bGUgaW4gRGV2aWNlIE9yaWVudGF0
aW9uIFBlcm1pc3Npb24gQVBJIHByb21wdCIpOwogICAgIGNhc2UgTWVkaWFQZXJtaXNzaW9uUmVh
c29uOjpHZW9sb2NhdGlvbjoKQEAgLTE3Myw2ICsxNzcsOCBAQCBzdGF0aWMgTlNTdHJpbmcgKmRv
Tm90QWxsb3dCdXR0b25UZXh0KE1lZGlhUGVybWlzc2lvblJlYXNvbiByZWFzb24pCiAgICAgY2Fz
ZSBNZWRpYVBlcm1pc3Npb25SZWFzb246OkNhbWVyYUFuZE1pY3JvcGhvbmU6CiAgICAgY2FzZSBN
ZWRpYVBlcm1pc3Npb25SZWFzb246Ok1pY3JvcGhvbmU6CiAgICAgICAgIHJldHVybiBXRUJfVUlf
U1RSSU5HX0tFWShAIkRvbuKAmXQgQWxsb3ciLCAiRG9u4oCZdCBBbGxvdyAodXNlcm1lZGlhKSIs
IEAiRGlzYWxsb3cgYnV0dG9uIHRpdGxlIGluIHVzZXIgbWVkaWEgcHJvbXB0Iik7CisgICAgY2Fz
ZSBNZWRpYVBlcm1pc3Npb25SZWFzb246OlNjcmVlbkNhcHR1cmU6CisgICAgICAgIHJldHVybiBX
RUJfVUlfU1RSSU5HX0tFWShAIkRvbuKAmXQgQWxsb3ciLCAiRG9u4oCZdCBBbGxvdyAoc2NyZWVu
c2hhcmluZykiLCBAIkRpc2FsbG93IGJ1dHRvbiB0aXRsZSBpbiBzY3JlZW4gc2hhcmluZyBwcm9t
cHQiKTsKICAgICBjYXNlIE1lZGlhUGVybWlzc2lvblJlYXNvbjo6RGV2aWNlT3JpZW50YXRpb246
CiAgICAgICAgIHJldHVybiBXRUJfVUlfU1RSSU5HX0tFWShAIkNhbmNlbCIsICJDYW5jZWwgKGRl
dmljZSBtb3Rpb24gYW5kIG9yaWVudGF0aW9uIGFjY2VzcykiLCBAIkJ1dHRvbiB0aXRsZSBpbiBE
ZXZpY2UgT3JpZW50YXRpb24gUGVybWlzc2lvbiBBUEkgcHJvbXB0Iik7CiAgICAgY2FzZSBNZWRp
YVBlcm1pc3Npb25SZWFzb246Okdlb2xvY2F0aW9uOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1VJRGVsZWdhdGUubW0KaW5kZXggZDc4ZjRjYzBkNTY1NTk0YzBlODgxYTQ1OGJmZDIz
ODI3NTEyMjQ1YS4uOWFmNGE3YTk0ZmE5NzMyMDRjMTVkNTYwZGJmNmI3ZDM0MjQyOGEzOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCkBAIC0xMTE3LDYg
KzExMTcsMTEgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3gKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAorICAgIGlmIChyZXF1ZXN0LnJlcXVpcmVzRGlzcGxheUNhcHR1cmUoKSAmJiByZXF1ZXN0
LmNhblByb21wdEZvckdldERpc3BsYXlNZWRpYSgpKSB7CisgICAgICAgIHJlcXVlc3QucHJvbXB0
Rm9yR2V0RGlzcGxheU1lZGlhKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICAvLyBG
SVhNRTogUHJvdmlkZSBhIHNwZWNpZmljIGRlbGVnYXRlIGZvciBkaXNwbGF5IGNhcHR1cmUuCiAg
ICAgaWYgKCFyZXF1ZXN0LnJlcXVpcmVzRGlzcGxheUNhcHR1cmUoKSAmJiByZXNwb25kc1RvUmVx
dWVzdE1lZGlhQ2FwdHVyZVBlcm1pc3Npb24pIHsKICAgICAgICAgYXV0byBjaGVja2VyID0gQ29t
cGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLCBAc2VsZWN0b3Iod2Vi
VmlldzpyZXF1ZXN0TWVkaWFDYXB0dXJlUGVybWlzc2lvbkZvck9yaWdpbjppbml0aWF0ZWRCeUZy
YW1lOnR5cGU6ZGVjaXNpb25IYW5kbGVyOikpOwpAQCAtMTEyNyw3ICsxMTMyLDcgQEAgdm9pZCBV
SURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3QoV2ViUGFnZVByb3gKIAogICAgICAgICAgICAgc3dpdGNoIChkZWNpc2lvbikgewogICAg
ICAgICAgICAgY2FzZSBXS1Blcm1pc3Npb25EZWNpc2lvblByb21wdDoKLSAgICAgICAgICAgICAg
ICBwcm90ZWN0ZWRSZXF1ZXN0LT5wcm9tcHQoKTsKKyAgICAgICAgICAgICAgICBwcm90ZWN0ZWRS
ZXF1ZXN0LT5wcm9tcHRGb3JHZXRVc2VyTWVkaWEoKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgV0tQZXJtaXNzaW9uRGVjaXNpb25HcmFudDogewogICAgICAgICAg
ICAgICAgIGNvbnN0IFN0cmluZyYgdmlkZW9EZXZpY2VVSUQgPSBwcm90ZWN0ZWRSZXF1ZXN0LT5y
ZXF1aXJlc1ZpZGVvQ2FwdHVyZSgpID8gcHJvdGVjdGVkUmVxdWVzdC0+dmlkZW9EZXZpY2VVSURz
KCkuZmlyc3QoKSA6IFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9N
ZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaAppbmRleCA0MWVhNDFkZmQ0NzQ2YWZjYjdmYjMyNzQ1
ZDgzZmQ3ZWY4NDJlYzAzLi4xNzVjMjVjMDQ0OTMyZmE1YjZhYTY1NzEyOTkzMzlhMTJhMTYxMTll
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRpYVBlcm1pc3Npb25VdGls
aXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRpYVBlcm1pc3Npb25VdGls
aXRpZXMuaApAQCAtNTQsNyArNTQsOCBAQCBlbnVtIGNsYXNzIE1lZGlhUGVybWlzc2lvblJlYXNv
biB7CiAgICAgTWljcm9waG9uZSwKICAgICBEZXZpY2VPcmllbnRhdGlvbiwKICAgICBHZW9sb2Nh
dGlvbiwKLSAgICBTcGVlY2hSZWNvZ25pdGlvbgorICAgIFNwZWVjaFJlY29nbml0aW9uLAorICAg
IFNjcmVlbkNhcHR1cmUKIH07CiAKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94
eS5jcHAKaW5kZXggMmNmY2FlNzQ4NWQ1OWZkMWNhZTkzNGFlNDU4NjA3ZWQwN2Y3MzQ4My4uMTQ3
NjFlNGRlYjEzMzRlMjA4Y2Y3ZWUzNjY4MDg3Mzk2YTJlOWIyZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94
eS5jcHAKQEAgLTE0MCwxNyArMTQwLDI5IEBAIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0
cmluZyhVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFBY2NlCiAgICAg
cmV0dXJuIHZhbHVlc1tzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUpXTsKIH0K
IAotdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5Ojpwcm9tcHQoKQordm9pZCBV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5Ojpwcm9tcHRGb3JHZXREaXNwbGF5TWVkaWEo
KQogewogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKENPQ09BKQotICAgIEFT
U0VSVChtX21hbmFnZXIpOwotICAgIGlmICghbV9tYW5hZ2VyKSB7CisgICAgQVNTRVJUKG1fbWFu
YWdlciAmJiBjYW5Qcm9tcHRGb3JHZXREaXNwbGF5TWVkaWEoKSk7CisgICAgaWYgKCFtX21hbmFn
ZXIgfHwgIWNhblByb21wdEZvckdldERpc3BsYXlNZWRpYSgpKSB7CiAgICAgICAgIGRlbnkoVXNl
ck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uOjpQZXJtaXNzaW9uRGVuaWVkKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGlmIChyZXF1aXJlc0Rpc3BsYXlDYXB0dXJlKCkpIHsKLSAgICAg
ICAgLy8gRklYTUU6IEltcGxlbWVudCBnZXREaXNwbGF5TWVkaWEgcHJvbXB0LCBmb3Igbm93IGRl
bnkuCisgICAgYWxlcnRGb3JQZXJtaXNzaW9uKG1fbWFuYWdlci0+cGFnZSgpLCBNZWRpYVBlcm1p
c3Npb25SZWFzb246OlNjcmVlbkNhcHR1cmUsIHRvcExldmVsRG9jdW1lbnRTZWN1cml0eU9yaWdp
bigpLmRhdGEoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XShib29sIGdy
YW50ZWQpIHsKKyAgICAgICAgaWYgKCFncmFudGVkKQorICAgICAgICAgICAgZGVueShVc2VyTWVk
aWFBY2Nlc3NEZW5pYWxSZWFzb246OlBlcm1pc3Npb25EZW5pZWQpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBhbGxvdygpOworICAgIH0pOworI2VuZGlmCit9CisKK3ZvaWQgVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RQcm94eTo6cHJvbXB0Rm9yR2V0VXNlck1lZGlhKCkKK3sKKyNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShDT0NPQSkKKyAgICBBU1NFUlQobV9tYW5h
Z2VyKTsKKyAgICBpZiAoIW1fbWFuYWdlcikgewogICAgICAgICBkZW55KFVzZXJNZWRpYUFjY2Vz
c0RlbmlhbFJlYXNvbjo6UGVybWlzc2lvbkRlbmllZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC0xNTgsMTUgKzE3MCw0MCBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJv
eHk6OnByb21wdCgpCiAgICAgTWVkaWFQZXJtaXNzaW9uUmVhc29uIHJlYXNvbiA9IE1lZGlhUGVy
bWlzc2lvblJlYXNvbjo6Q2FtZXJhOwogICAgIGlmIChyZXF1aXJlc0F1ZGlvQ2FwdHVyZSgpKQog
ICAgICAgICByZWFzb24gPSByZXF1aXJlc1ZpZGVvQ2FwdHVyZSgpID8gTWVkaWFQZXJtaXNzaW9u
UmVhc29uOjpDYW1lcmFBbmRNaWNyb3Bob25lIDogTWVkaWFQZXJtaXNzaW9uUmVhc29uOjpNaWNy
b3Bob25lOworCiAgICAgYWxlcnRGb3JQZXJtaXNzaW9uKG1fbWFuYWdlci0+cGFnZSgpLCByZWFz
b24sIHRvcExldmVsRG9jdW1lbnRTZWN1cml0eU9yaWdpbigpLmRhdGEoKSwgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XShib29sIGdyYW50ZWQpIHsKICAgICAgICAgaWYgKCFn
cmFudGVkKQogICAgICAgICAgICAgZGVueShVc2VyTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb246OlBl
cm1pc3Npb25EZW5pZWQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBhbGxvdygpOwogICAg
IH0pOworI2VuZGlmCit9CisKK3ZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6
ZG9EZWZhdWx0QWN0aW9uKCkKK3sKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9S
TShDT0NPQSkKKyAgICBpZiAocmVxdWlyZXNEaXNwbGF5Q2FwdHVyZSgpKSB7CisgICAgICAgIGlm
ICghY2FuUHJvbXB0Rm9yR2V0RGlzcGxheU1lZGlhKCkpIHsKKyAgICAgICAgICAgIGRlbnkoVXNl
ck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uOjpQZXJtaXNzaW9uRGVuaWVkKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHByb21wdEZvckdldERpc3BsYXlNZWRpYSgp
OworICAgIH0gZWxzZQorICAgICAgICBwcm9tcHRGb3JHZXRVc2VyTWVkaWEoKTsKICNlbHNlCiAg
ICAgZGVueSgpOwogI2VuZGlmCiB9CiAKK2Jvb2wgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQ
cm94eTo6Y2FuUHJvbXB0Rm9yR2V0RGlzcGxheU1lZGlhKCkKK3sKKyNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIHJldHVybiB0cnVlOworI2Vsc2UK
KyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFByb3h5LmgKaW5kZXggMjRjZWUzOGY5YmMxZDhhMmE2YWU3NGQyNGFhYzQ2ZmNiODFm
NWMxZS4uZGY0MTJhYjY1ZWMzN2RkNDczMGVhZmM3Y2I0ZTNkNTUxNjM0OWRiMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0UHJveHkuaApAQCAtNDUsOCArNDUsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBhbGxvdyhj
b25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlVUlELCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlVUlE
KTsKICAgICB2b2lkIGFsbG93KCk7Ci0gICAgdm9pZCBwcm9tcHQoKTsKLSAgICB2b2lkIGRvRGVm
YXVsdEFjdGlvbigpIHsgcHJvbXB0KCk7IH0KKyAgICB2b2lkIHByb21wdEZvckdldFVzZXJNZWRp
YSgpOworICAgIHZvaWQgcHJvbXB0Rm9yR2V0RGlzcGxheU1lZGlhKCk7CisgICAgYm9vbCBjYW5Q
cm9tcHRGb3JHZXREaXNwbGF5TWVkaWEoKTsKKyAgICB2b2lkIGRvRGVmYXVsdEFjdGlvbigpOwog
ICAgIGVudW0gY2xhc3MgVXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uIHsgTm9Db25zdHJhaW50
cywgVXNlck1lZGlhRGlzYWJsZWQsIE5vQ2FwdHVyZURldmljZXMsIEludmFsaWRDb25zdHJhaW50
LCBIYXJkd2FyZUVycm9yLCBQZXJtaXNzaW9uRGVuaWVkLCBPdGhlckZhaWx1cmUgfTsKICAgICB2
b2lkIGRlbnkoVXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uID0gVXNlck1lZGlhQWNjZXNzRGVu
aWFsUmVhc29uOjpVc2VyTWVkaWFEaXNhYmxlZCk7CiAK
</data>
<flag name="commit-queue"
          id="465298"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441146</attachid>
            <date>2021-10-13 15:21:59 -0700</date>
            <delta_ts>2021-10-14 17:34:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231455-20211013152158.patch</filename>
            <type>text/plain</type>
            <size>103211</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2M2MWNjNWYyZjlmMWJl
MDFlMWQxYWQyNjAxNjA4MTVlMTAwMGZjOS4uNmFkMGNjOWQ5NWQyZmZiNjQ3YTc1NDg2NDBhZWVl
OTQ2NmQwZjg4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAyMS0xMC0xMyAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBTdXBw
b3J0IGdldERpc3BsYXlNZWRpYQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMxNDU1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NDA0NDQ5NT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIEltcGxlbWVudCBz
Y3JlZW4gY2FwdHVyZSBmb3IgaU9TIHVzaW5nIFJlcGxheUtpdC4gUmVwbGF5S2l0IG9ubHkgY2Fw
dHVyZXMgd2hlbiB0aGUgCisgICAgICAgIGhvc3QgYXBwbGljYXRpb24gaXMgaW4gdGhlIGZvcmVn
cm91bmQsIHNvIHRoZSBNZWRpYVN0cmVhbSB0cmFjayBpcyBtdXRlZCB3aGVuIHRoZQorICAgICAg
ICBhcHAgaXMgYmFja2dyb3VuZGVkLgorCisgICAgICAgIGdldERpc3BsYXlNZWRpYSBhdmFpbGFi
aWxpdHkgdG8gSmF2YVNjcmlwdCBpcyBjb250cm9sbGVkIGJ5IHRoZSBgU2NyZWVuQ2FwdHVyZUVu
YWJsZWRgCisgICAgICAgIHNldHRpbmcsIHdoaWNoIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQgb24g
aU9TLgorCisgICAgICAgIEkgaGF2ZW4ndCBmaWd1cmVkIG91dCBob3cgdG8gdGVzdCB0aGlzIGF1
dG9tYXRpY2FsbHkgeWV0IGJlY2F1c2UgUmVwbGF5S2l0IGFsd2F5cworICAgICAgICBzaG93cyBp
dHMgb3duIG1vZGFsIHVzZXIgcHJvbXB0IGJlZm9yZSBpdCBhbGxvd3MgY2FwdHVyZSB0byBiZWdp
bi4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6IEFkZCBSZXBsYXlLaXRDYXB0dXJlU291
cmNlLm1tLiBSZW5hbWUgRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMuY3BwCisgICAgICAgIHRvIERp
c3BsYXlDYXB0dXJlU291cmNlQ29jb2EuY3BwLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgbmV3IGZpbGVzLgorCisgICAgICAgICogZW4ubHByb2ov
TG9jYWxpemFibGUuc3RyaW5nczogQWRkIGxvY2FsaXphYmxlIHN0cmluZ3MgZm9yIGdldERpc3Bs
YXlNZWRpYSBwcm9tcHQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRy
YW5zZmVyU2Vzc2lvblZULmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VU
cmFuc2ZlclNlc3Npb25WVC5tbToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlVHJhbnNmZXJTZXNz
aW9uVlQ6OmNvbnZlcnRDTVNhbXBsZUJ1ZmZlcik6IEFkZCBhbiBvcHRpb25hbCBNZWRpYVRpbWUg
cGFyYW1ldGVyLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y3Jl
YXRlTWVkaWFTYW1wbGUpOiBBZGQgYSBNZWRpYVRpbWUgcGFyYW1ldGVyLgorCisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL1JlcGxheUtpdENhcHR1cmVTb3VyY2UuaDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL1JlcGxheUtpdENhcHR1cmVTb3Vy
Y2UubW06IEFkZGVkLgorICAgICAgICAoLVtXZWJDb3JlUmVwbGF5S2l0U2NyZWVuUmVjb3JkZXJI
ZWxwZXIgaW5pdFdpdGhDYWxsYmFjazpdKToKKyAgICAgICAgKC1bV2ViQ29yZVJlcGxheUtpdFNj
cmVlblJlY29yZGVySGVscGVyIGRpc2Nvbm5lY3RdKToKKyAgICAgICAgKC1bV2ViQ29yZVJlcGxh
eUtpdFNjcmVlblJlY29yZGVySGVscGVyIG9ic2VydmVWYWx1ZUZvcktleVBhdGg6b2ZPYmplY3Q6
Y2hhbmdlOmNvbnRleHQ6XSk6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYXlLaXRDYXB0dXJlU291
cmNlOjppc0F2YWlsYWJsZSk6IENoZWNrIFJlcGxheUtpdCBhdmFpbGFiaWxpdHkuCisgICAgICAg
IChXZWJDb3JlOjpSZXBsYXlLaXRDYXB0dXJlU291cmNlOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVwbGF5S2l0Q2FwdHVyZVNvdXJjZTo6UmVwbGF5S2l0Q2FwdHVyZVNvdXJjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXBsYXlLaXRDYXB0dXJlU291cmNlOjp+UmVwbGF5S2l0Q2FwdHVy
ZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYXlLaXRDYXB0dXJlU291cmNlOjpzdGFy
dCk6IFN0YXJ0IHNjcmVlbiBjYXB0dXJlIG9ubHkuCisgICAgICAgIChXZWJDb3JlOjpSZXBsYXlL
aXRDYXB0dXJlU291cmNlOjpzY3JlZW5SZWNvcmRlckRpZE91dHB1dFZpZGVvU2FtcGxlKTogUmV0
YWluIHRoZQorICAgICAgICB0aGUgbmV3IGZyYW1lLCBzZXQgaW50cmluc2ljIHNpemUgdG8gdGhl
IGltYWdlIHNpemUuCisgICAgICAgIChXZWJDb3JlOjpSZXBsYXlLaXRDYXB0dXJlU291cmNlOjpj
YXB0dXJlU3RhdGVEaWRDaGFuZ2UpOiBVcGRhdGUgb2JzZXJ2ZXIgaWYgaW50ZXJydXB0aW9uCisg
ICAgICAgIHN0YXRlIG9yIHJlY29yZGVyIHN0YXRlIGNoYW5nZXMgc28gaXQgY2FuIHVwZGF0ZSB0
aGUgdHJhY2sncyAnbXV0ZWQnIHN0YXRlLgorICAgICAgICAoV2ViQ29yZTo6UmVwbGF5S2l0Q2Fw
dHVyZVNvdXJjZTo6c3RvcCk6IFN0b3AgY2FwdHVyZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlcGxh
eUtpdENhcHR1cmVTb3VyY2U6OmdlbmVyYXRlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVw
bGF5S2l0Q2FwdHVyZVNvdXJjZTo6dmVyaWZ5Q2FwdHVyZUlzQWN0aXZlKTogUmVwbGF5S2l0IGRv
ZXNuJ3Qgbm90aWZ5IAorICAgICAgICB3aGVuIGNhcHR1cmUgaXMgcGF1c2VkLCBzbyB3YXRjaCBm
b3IgY2hhbmdlcyBieSBtb25pdG9yaW5nIHRoZSBmcmFtZSBjb3VudC4KKyAgICAgICAgKFdlYkNv
cmU6OlJlcGxheUtpdENhcHR1cmVTb3VyY2U6OnN0YXJ0Q2FwdHVyZVdhdGNoZG9nVGltZXIpOiBT
dGFydCB0aGUgdGltZXIgdGhhdAorICAgICAgICB3aWxsIG1vbml0b3IgZm9yIGNhcHR1cmUgcGF1
c2luZy9yZXN1bWluZy4KKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlbkRldmljZVVVSUQpOgorICAg
ICAgICAoV2ViQ29yZTo6c2NyZWVuRGV2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxheUtp
dENhcHR1cmVTb3VyY2U6OnNjcmVlbkNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlcGxheUtpdENhcHR1cmVTb3VyY2U6OnNjcmVlbkNhcHR1cmVEZXZp
Y2VzKToKKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR0Rpc3BsYXlTdHJl
YW1DYXB0dXJlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNHRGlzcGxheVN0cmVhbUNh
cHR1cmVTb3VyY2U6OmdlbmVyYXRlRnJhbWUpOiBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYyB3YXMK
KyAgICAgICAgcmVuYW1lZCBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLgorICAgICAgICAoV2Vi
Q29yZTo6Q0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6bmV3RnJhbWUpOiBUYWtlIGEgUmV0
YWluUHRyPElPU3VyZmFjZVJlZj4KKyAgICAgICAgaW5zdGVhZCBvZiBhIERpc3BsYXlTdXJmYWNl
LgorICAgICAgICAoV2ViQ29yZTo6Q0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6ZnJhbWVB
dmFpbGFibGVIYW5kbGVyKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0NHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNH
RGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2U6OkRpc3BsYXlTdXJmYWNlOjpEaXNwbGF5U3VyZmFj
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291
cmNlOjpEaXNwbGF5U3VyZmFjZTo6fkRpc3BsYXlTdXJmYWNlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkNHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2U6OkRpc3BsYXlTdXJmYWNlOjpv
cGVyYXRvcj0pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q0dEaXNwbGF5U3RyZWFtQ2Fw
dHVyZVNvdXJjZTo6RGlzcGxheVN1cmZhY2U6OmlvU3VyZmFjZSBjb25zdCk6IERlbGV0ZWQuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtU2NyZWVu
Q2FwdHVyZVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR0Rp
c3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q0dE
aXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZTo6Y3JlYXRlKTogRGlzcGxheUNhcHR1cmVT
b3VyY2VNYWMgd2FzCisgICAgICAgIHJlbmFtZWQgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS4K
KworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZU1hbmFn
ZXJDb2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Q2FwdHVyZU1hbmFnZXJDb2Nv
YTo6dXBkYXRlRGlzcGxheUNhcHR1cmVEZXZpY2VzKTogVXNlIAorICAgICAgICBSZXBsYXlLaXRD
YXB0dXJlU291cmNlIG9uIGlPUy4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5jcHAu
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6RGlzcGxheUNhcHR1
cmVTb3VyY2VDb2NvYSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Q2FwdHVyZVNvdXJjZUNv
Y29hOjp+RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpjYXBhYmlsaXRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6c2V0dGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6c2V0dGluZ3NEaWRDaGFuZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6c3RhcnRQcm9kdWNpbmdEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OnN0b3BQcm9kdWNp
bmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OmVs
YXBzZWRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6
OnVwZGF0ZUZyYW1lU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Q2FwdHVyZVNvdXJj
ZUNvY29hOjplbWl0RnJhbWUpOiBTdXBwb3J0IGNhcHR1cmVyIHJldHVybmluZyBhIENNU2FtcGxl
QnVmZmVyLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6c2V0
TG9nZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OkNh
cHR1cmVyOjpzZXRMb2dnZXIpOiBTZXQgdGhlIGNhcHR1cmVyJ3MgbG9nZ2VyLgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Q2FwdHVyZXI6OmxvZ0NoYW5uZWwg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Q2Fw
dHVyZXI6Ok9ic2VydmVyOjp+T2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUNh
cHR1cmVTb3VyY2VDb2NvYTo6Q2FwdHVyZXI6OnNldE9ic2VydmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OkNhcHR1cmVyOjpjYXB0dXJlcklzUnVubmlu
Z0NoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2Fw
dHVyZVNvdXJjZUNvY29hLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMuaC4KKworICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlDYXB0dXJlU291cmNlRmFjdG9yeU1hYzo6Y3JlYXRl
RGlzcGxheUNhcHR1cmVTb3VyY2UpOiBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYworICAgICAgICBy
ZW5hbWVkIHRvIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tEaXNwbGF5Q2FwdHVyZXI6OmdlbmVyYXRlRnJhbWUpOiBEaXR0by4KKwogMjAyMS0x
MC0xMyAgR2FicmllbCBOYXZhIE1hcmlubyAgPGduYXZhbWFyaW5vQGFwcGxlLmNvbT4KIAogICAg
ICAgICBTa2lwIGZhbGxiYWNrRm9udHNGb3JSdW5XaXRoSXRlcmF0b3IgZm9yIGVtcHR5IHJ1bnMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvQ2hhbmdlTG9nCmluZGV4IDVlOTEwMmZhY2EyMjYwY2MxOTg5YzdhYjMyNDM5NmRiMTAx
ZmM2YWYuLjBkODYzMTJhNjFjOGFjM2JiMDQxYjg2MjJmOWZmMTczOTk4ZmY3YzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFM
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTEwLTEzICBFcmljIENhcmxzb24gIDxl
cmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFN1cHBvcnQgZ2V0RGlzcGxh
eU1lZGlhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzE0NTUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg0MDQ0NDk1PgorCisgICAgICAgIFJldmll
d2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgKiBQQUwueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBwYWwvaW9zL1JlcGxheUtpdFNvZnRMaW5rLmg6IEFkZGVkLgor
ICAgICAgICAqIHBhbC9pb3MvUmVwbGF5S2l0U29mdExpbmsubW06IEFkZGVkLgorCiAyMDIxLTEw
LTEzICBBZGl0eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFj
T1NdIEFkZCBzdXBwb3J0IGZvciBhY2NlbnQtY29sb3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZTBlYzliNGM3MzU3
NWE1OTJmMDEzNjYzZWQzOWVjOWVjYjZhYzFmYy4uODhjZjkxMzE5NGQzYzMyODhkNTg3NjZmYWY0
MWVjOTg4MDZjMDk2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAyMS0xMC0xMyAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBTdXBw
b3J0IGdldERpc3BsYXlNZWRpYQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMxNDU1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NDA0NDQ5NT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbToKKyAgICAgICAgKFdlYktpdDo6YWxl
cnRNZXNzYWdlVGV4dCk6IEFkZCB0ZXh0IGZvciBkZWZhdWx0IHNjcmVlbiBjYXB0dXJlIHByb21w
dC4KKyAgICAgICAgKFdlYktpdDo6YWxsb3dCdXR0b25UZXh0KTogRGl0dG8uCisgICAgICAgIChX
ZWJLaXQ6OmRvTm90QWxsb3dCdXR0b25UZXh0KTogRGl0dG8uCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlD
bGllbnQ6OmRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KTogQ2FsbAor
ICAgICAgICBkZWZhdWx0IGdldERpc3BsYXlNZWRpYSBwcm9tcHQgaWYgdGhlIGRlbGVnYXRlIGRv
ZXNuJ3QgaW1wbGVtZW50IHRoZSBwcml2YXRlCisgICAgICAgIHByb21wdCBzZWxlY3Rvci4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OnByb21wdEZvckdldERp
c3BsYXlNZWRpYSk6IE5ldyBkZWZhdWx0CisgICAgICAgIGdldERpc3BsYXlNZWRpYSBwcm9tcHQu
CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OnByb21w
dEZvckdldFVzZXJNZWRpYSk6IAorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFByb3h5Ojpkb0RlZmF1bHRBY3Rpb24pOiBDYWxsIHByb21wdEZvckdldERpc3BsYXlN
ZWRpYQorICAgICAgICBvciBwcm9tcHRGb3JHZXRVc2VyTWVkaWEgYWNjb3JkaW5nIHRvIHRoZSBy
ZXF1ZXN0IHR5cGUuCisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
UHJveHk6OmNhblByb21wdEZvckdldERpc3BsYXlNZWRpYSk6CisgICAgICAgIChXZWJLaXQ6OlVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OnByb21wdCk6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuaDoKKyAgICAgICAg
KFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6ZG9EZWZhdWx0QWN0aW9u
KTogRGVsZXRlZC4KKwogMjAyMS0xMC0xMyAgUGVyIEFybmUgIDxwdm9sbGFuQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXN0cmljdCAiZGFyd2luLW5vdGlmaWNhdGlvbi1wb3N0IiB0byBhIG1pbmlt
YWwgc2V0IGluIHRoZSBXUCBzYW5kYm94CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
UEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggM2U5MDUzZTRjOGMyNzIwZTY3ZWMyNzczYTVh
MzIwNTlmZTAyNzA2Ni4uYTU1MWM2NzAzMzQ3MTc1NGRhZmJhOTU0ZmUwOTcwOTkxNDUyZjJlMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMjEsNiArMjEsOCBAQAogLyogRW5kIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0aW9uICov
CiAKIC8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCisJCTA3MUMwMDM3MjcwN0VERjAw
MEQwMjdDNyAvKiBSZXBsYXlLaXRTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MUMwMDM1MjcwN0VERjAwMEQwMjdDNyAvKiBSZXBsYXlL
aXRTb2Z0TGluay5tbSAqLzsgfTsKKwkJMDcxQzAwMzgyNzA3RURGMDAwRDAyN0M3IC8qIFJlcGxh
eUtpdFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwNzFDMDAzNjI3MDdFREYwMDBEMDI3QzcgLyogUmVwbGF5S2l0U29mdExpbmsuaCAqLzsg
fTsKIAkJMDc2MTFEQjYyNDNGQTVCRjAwRDgwNzA0IC8qIFVzYWdlVHJhY2tpbmdTb2Z0TGluay5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2MTFEQjQy
NDNGQTVCRTAwRDgwNzA0IC8qIFVzYWdlVHJhY2tpbmdTb2Z0TGluay5oICovOyB9OwogCQkwNzYx
MURCNzI0M0ZBNUJGMDBEODA3MDQgLyogVXNhZ2VUcmFja2luZ1NvZnRMaW5rLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2MTFEQjUyNDNGQTVCRjAw
RDgwNzA0IC8qIFVzYWdlVHJhY2tpbmdTb2Z0TGluay5tbSAqLzsgfTsKIAkJMDc3RTg3QjEyMjZB
NDYwMjAwQTJBRkYwIC8qIEFWRm91bmRhdGlvblNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc3RTg3QUYyMjZBNDYwMjAwQTJBRkYwIC8q
IEFWRm91bmRhdGlvblNvZnRMaW5rLm1tICovOyB9OwpAQCAtMjM1LDYgKzIzNyw4IEBACiAvKiBF
bmQgUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRmlsZVJl
ZmVyZW5jZSBzZWN0aW9uICovCisJCTA3MUMwMDM1MjcwN0VERjAwMEQwMjdDNyAvKiBSZXBsYXlL
aXRTb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJl
cGxheUtpdFNvZnRMaW5rLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzFDMDAz
NjI3MDdFREYwMDBEMDI3QzcgLyogUmVwbGF5S2l0U29mdExpbmsuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVwbGF5S2l0U29mdExpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDc2MTFEQjQyNDNGQTVCRTAwRDgwNzA0IC8qIFVzYWdlVHJhY2tpbmdTb2Z0
TGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2FnZVRyYWNraW5nU29m
dExpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2MTFEQjUyNDNGQTVCRjAw
RDgwNzA0IC8qIFVzYWdlVHJhY2tpbmdTb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFVzYWdlVHJhY2tpbmdTb2Z0TGluay5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMDc3RTg3QUYyMjZBNDYwMjAwQTJBRkYwIC8qIEFWRm91bmRhdGlv
blNvZnRMaW5rLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQVZG
b3VuZGF0aW9uU29mdExpbmsubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NzEs
NiArNzc1LDggQEAKIAkJCQk1QzdDNzg3MjIzQUMzRTc3MDA2NUY0N0UgLyogTWFuYWdlZENvbmZp
Z3VyYXRpb25Tb2Z0TGluay5tbSAqLywKIAkJCQk0NDUwRkM5RTIxRjVGNjAyMDA0REZBNTYgLyog
UXVpY2tMb29rU29mdExpbmsuaCAqLywKIAkJCQk0NDUwRkM5RDIxRjVGNjAyMDA0REZBNTYgLyog
UXVpY2tMb29rU29mdExpbmsubW0gKi8sCisJCQkJMDcxQzAwMzYyNzA3RURGMDAwRDAyN0M3IC8q
IFJlcGxheUtpdFNvZnRMaW5rLmggKi8sCisJCQkJMDcxQzAwMzUyNzA3RURGMDAwRDAyN0M3IC8q
IFJlcGxheUtpdFNvZnRMaW5rLm1tICovLAogCQkJCTA3OUQxRDk1MjY5NTBERDcwMDg4MzU3NyAv
KiBTeXN0ZW1TdGF0dXNTb2Z0TGluay5oICovLAogCQkJCTA3OUQxRDk2MjY5NTBERDcwMDg4MzU3
NyAvKiBTeXN0ZW1TdGF0dXNTb2Z0TGluay5tbSAqLywKIAkJCQkyRTEzNDJDQTIxNUFBMTBBMDA3
MTk5RDIgLyogVUlLaXRTb2Z0TGluay5oICovLApAQCAtOTkyLDYgKzk5OCw3IEBACiAJCQkJNDQ1
MEZDQTAyMUY1RjYwMjAwNERGQTU2IC8qIFF1aWNrTG9va1NvZnRMaW5rLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwQzVBRjkyMDFGNDNBNEM3MDAyRUFDMDIgLyogUXVpY2tMb29rU1BJLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGNEM4NUE0RjI2NTg1NTFBMDA1Qjg5Q0MgLyogUXVpY2tMb29rVUlTb2Z0
TGluay5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDcxQzAwMzgyNzA3RURGMDAwRDAyN0M3IC8qIFJl
cGxheUtpdFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDk3NEVBMzI2NUVFQTIyMDBC
NDlCOEMgLyogUmV2ZWFsU29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ0Mjk1NkNEMjE4
QTcyREYwMDgwREI1NCAvKiBSZXZlYWxTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MEFCOEYx
MjBBRTJFOEQwMEI4QkU4NyAvKiBTZWNLZXlQcm94eVNQSS5oIGluIEhlYWRlcnMgKi8sCkBAIC0x
MTM2LDYgKzExNDMsNyBAQAogCQkJCUExMTc1QjRGMUY2QjMzNzMwMEM0QjlGMCAvKiBQb3B1cE1l
bnUubW0gaW4gU291cmNlcyAqLywKIAkJCQk0NDUwRkM5RjIxRjVGNjAyMDA0REZBNTYgLyogUXVp
Y2tMb29rU29mdExpbmsubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNEM4NUE0RTI2NTg1NTFBMDA1
Qjg5Q0MgLyogUXVpY2tMb29rVUlTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAorCQkJCTA3MUMw
MDM3MjcwN0VERjAwMEQwMjdDNyAvKiBSZXBsYXlLaXRTb2Z0TGluay5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUY0OTc0RUE0MjY1RUVBMjIwMEI0OUI4QyAvKiBSZXZlYWxTb2Z0TGluay5tbSBpbiBT
b3VyY2VzICovLAogCQkJCUEzQzY2Q0RDMUY0NjJENkEwMDlFNkVFOSAvKiBTZXNzaW9uSUQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTNBQjZFNTIxRjNEMURDNTAwOUMxNEIxIC8qIFNsZWVwRGlz
YWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2lvcy9SZXBsYXlLaXRTb2Z0TGluay5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9pb3Mv
UmVwbGF5S2l0U29mdExpbmsuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZjI3MDY3MjY4NzhkYTFiZGVmYjA1YWJk
NDQ4OWU2MjgzNGE0ZGRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9pb3MvUmVwbGF5S2l0U29mdExpbmsuaApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisg
KiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgUExBVEZPUk0oSU9TKQorCisjaW1wb3J0IDxSZXBsYXlLaXQv
UmVwbGF5S2l0Lmg+CisjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKworU09GVF9MSU5LX0ZS
QU1FV09SS19GT1JfSEVBREVSKFBBTCwgUmVwbGF5S2l0KQorCitTT0ZUX0xJTktfQ0xBU1NfRk9S
X0hFQURFUihQQUwsIFJQU2NyZWVuUmVjb3JkZXIpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9pb3MvUmVwbGF5S2l0U29mdExpbmsubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL2lvcy9SZXBsYXlLaXRTb2Z0TGluay5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOGUwZDY2
NjRkYjI4MzI2MTJiMTgxMDBiYmEwZTQ3ZTcxY2Q1YzU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9pb3MvUmVwbGF5S2l0U29mdExpbmsubW0KQEAgLTAsMCArMSwz
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2lmIFBMQVRGT1JNKElP
UykKKworI2ltcG9ydCA8UmVwbGF5S2l0L1JlcGxheUtpdC5oPgorI2ltcG9ydCA8d3RmL1NvZnRM
aW5raW5nLmg+CisKK1NPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJDRShQQUwsIFJlcGxheUtp
dCkKKworU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBSZXBsYXlL
aXQsIFJQU2NyZWVuUmVjb3JkZXIsIFBBTF9FWFBPUlQpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXND
b2NvYS50eHQKaW5kZXggYTRjMGE3NjI3YzM3ODFkZmNkMDQ5MDZmYzUyMzMwOWM5MDczMGMyYy4u
YWU5M2NjNmFlZDEzYzRkZDJiNDFhMmQxYTJjNzE4MzI3N2U3MzE1NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
Q29jb2EudHh0CkBAIC01MjIsOSArNTIyLDExIEBAIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29j
b2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9j
b2NvYS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLmNwcAogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vY29jb2EvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQu
Y3BwCiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlclVuaXQuY3BwCitwbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9EaXNwbGF5Q2FwdHVyZVNv
dXJjZUNvY29hLmNwcAogcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2Fw
dHVyZURldmljZS5tbQogcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2Fw
dHVyZURldmljZU1hbmFnZXIubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3Mv
Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZUlPUy5tbQorcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL1Jl
cGxheUtpdENhcHR1cmVTb3VyY2UubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJDb2NvYS5jcHAKIHBsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
QVZWaWRlb0NhcHR1cmVTb3VyY2UubW0KQEAgLTUzNSw3ICs1MzcsNiBAQCBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZS5jcHAKIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKIHBsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcAogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0Rpc3BsYXlDYXB0dXJlTWFuYWdlckNvY29hLmNwcAotcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlTWFjLmNwcAogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL01lZGlhU3RyZWFtVHJhY2tBdWRpb1NvdXJjZVByb3ZpZGVyQ29jb2EuY3BwCiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvTW9ja0F1ZGlvU2hhcmVkVW5pdC5tbQogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzUxOTc0YTJiN2Zm
Mzc2ZTA1ZmMxMTNiZTdkMzY3MTdlN2M5MWE3NS4uZDU3NGI3YTZhMDRiMDc4OWUzZmFjMjJhNDM3
MWE1MTRlNzQyZWQ4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtOTgsNiArOTgsOCBAQAogCQkwNzBFODFEMTFCRjI3NjU2MDAx
RkRBNDggLyogVmlkZW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwRTgxRDAxQkYyNzY1NjAwMUZEQTQ4IC8q
IFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uaCAqLzsgfTsKIAkJMDcwRjU0OTgxN0YxMkY2
QjAwMTY5RTA0IC8qIE1lZGlhU3RyZWFtQ29uc3RyYWludHNWYWxpZGF0aW9uQ2xpZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzBGNTQ5NzE3RjEy
RjZCMDAxNjlFMDQgLyogTWVkaWFTdHJlYW1Db25zdHJhaW50c1ZhbGlkYXRpb25DbGllbnQuaCAq
LzsgfTsKIAkJMDcxQTlFQzMxNjhGQkM1NTAwMjYyOUY5IC8qIFRleHRUcmFja0N1ZUdlbmVyaWMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MUE5RUMx
MTY4RkI1NkMwMDI2MjlGOSAvKiBUZXh0VHJhY2tDdWVHZW5lcmljLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMDcxQzAwMzQyNzA3RDk1NTAwRDAy
N0M3IC8qIFJlcGxheUtpdENhcHR1cmVTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MUMwMDMzMjcwN0Q5NDQwMEQwMjdDNyAvKiBSZXBsYXlL
aXRDYXB0dXJlU291cmNlLmggKi87IH07CisJCTA3MUMwMDRCMjcwQjg2NDkwMEQwMjdDNyAvKiBS
ZXBsYXlLaXRDYXB0dXJlU291cmNlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDcxQzAwMzIyNzA3RDk0MzAwRDAyN0M3IC8qIFJlcGxheUtpdENhcHR1
cmVTb3VyY2UubW0gKi87IH07CiAJCTA3MUU0OTcwMUFENUFCNUUwMDhBNTBCNCAvKiBNZWRpYVBs
YXliYWNrVGFyZ2V0Q29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3MUU0OTZGMUFENUFCNUUwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29jb2EuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwNzI1RUZBOTIzOUFENzkzMDBBNTM4QTkgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzlGNUU0QjBGM0JFQkVB
MDA1RTA3ODIgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDcyNzdFNEQxN0QwMThDQzAwMTU1MzREIC8qIEpT
TWVkaWFTdHJlYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA3Mjc3RTQxMTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtLmggKi87IH07CkBA
IC0yMDcsNiArMjA5LDcgQEAKIAkJMDdCNzExNkQxRDg5OUU2MzAwOUYwRkZCIC8qIENhcHR1cmVE
ZXZpY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3
QjcxMTZBMUQ4OTlFNjMwMDlGMEZGQiAvKiBDYXB0dXJlRGV2aWNlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDdCNzExNkYxRDg5OUU2MzAwOUYw
RkZCIC8qIENhcHR1cmVEZXZpY2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwN0I3MTE2QzFEODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVyZURl
dmljZU1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwN0I5M0ZGQzIzQjk0RUM3MDAzNkY4RUEgLyogTUlNRVR5cGVDYWNoZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdCOTNGRjkyM0I5MkFB
QTAwMzZGOEVBIC8qIE1JTUVUeXBlQ2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkwN0JCMUU3MDI3MTc2Q0Q5MDAxREYyODkgLyogRGlzcGxh
eUNhcHR1cmVTb3VyY2VDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDdCQjFFNkYyNzE3NkNDQTAwMURGMjg5IC8qIERpc3BsYXlDYXB0dXJlU291
cmNlQ29jb2EuaCAqLzsgfTsKIAkJMDdDMDQ2QzQxRTQyNTA4QjAwNzIwMUU3IC8qIENBQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDczQjg3NTgxRTQwRENGRDAwNzFDMEVDIC8qIENBQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTA3QzA0NkNCMUU0MjY0MTMwMDcyMDFFNyAvKiBBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzNCODc1NjFFNDBE
Q0U1MDA3MUMwRUMgLyogQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3QzE0ODJFMjYxMkEyMUYwMDc3NTgy
OCAvKiBNZWRpYVNlc3Npb25Db29yZGluYXRvclN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzdCQTU4ODI2MTI2RDY2MDA3MkYxOUYgLyogTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC01ODUyLDYgKzU4NTUsOCBAQAogCQkwNzE3NzY1RjI2QzMw
M0I3MDBBNjMyOTkgLyogQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IENHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2UubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MUE5RUMwMTY4RkI1NkMwMDI2MjlGOSAv
KiBUZXh0VHJhY2tDdWVHZW5lcmljLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFRleHRUcmFja0N1ZUdlbmVyaWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwNzFBOUVDMTE2OEZCNTZDMDAyNjI5RjkgLyogVGV4dFRyYWNrQ3VlR2VuZXJpYy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0VHJhY2tDdWVHZW5lcmljLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MUMwMDMyMjcwN0Q5NDMwMEQwMjdDNyAvKiBS
ZXBsYXlLaXRDYXB0dXJlU291cmNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVwbGF5S2l0
Q2FwdHVyZVNvdXJjZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcxQzAwMzMy
NzA3RDk0NDAwRDAyN0M3IC8qIFJlcGxheUtpdENhcHR1cmVTb3VyY2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwNzFFNDk2RDFBRDVBQTBEMDA4QTUwQjQgLyogTWVkaWFQbGF5YmFja1RhcmdldENvY29hLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVkaWFQbGF5YmFja1Rh
cmdldENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzFFNDk2RjFBRDVB
QjVFMDA4QTUwQjQgLyogTWVkaWFQbGF5YmFja1RhcmdldENvY29hLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwNzIyMUI0QzE3Q0VDMzI3MDA4NDhFNTEgLyogTWVkaWFTdHJl
YW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFTdHJlYW0u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjA0MCwxMCArNjA0NSw4IEBACiAJ
CTA3OUY1RTRCMEYzQkVCRUEwMDVFMDc4MiAvKiBNZWRpYVBsYXllclByaXZhdGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5ZXJQcml2YXRlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QTZEMUU5MTQ5MTEzNzcwMDA1MUQwQyAvKiBNZWRpYUZy
YWdtZW50VVJJUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IE1lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwN0E2RDFFQTE0OTExMzc3MDAwNTFEMEMgLyogTWVkaWFGcmFnbWVudFVSSVBhcnNlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYUZyYWdtZW50VVJJUGFyc2VyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3QTZEODQ3MUZFQjcwMEIwMDY0NDFERSAv
KiBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTA3QTZEODQ4MUZFQjcwMEIwMDY0NDFERSAvKiBEaXNwbGF5Q2FwdHVyZU1h
bmFnZXJDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNw
bGF5Q2FwdHVyZU1hbmFnZXJDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTA3QTZEODQ5MUZFQjcwMEMwMDY0NDFERSAvKiBEaXNwbGF5Q2FwdHVyZU1hbmFnZXJDb2NvYS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5Q2FwdHVyZU1hbmFnZXJD
b2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwN0E2RDg0QTFGRUI3MDBEMDA2
NDQxREUgLyogRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDdBQTZCNjkxNjZEMDE5NTAwRDQ1NjcxIC8qIEluYmFuZFRleHRUcmFja1By
aXZhdGVBVkZPYmpDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkZPYmpDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3
QUE2QjZBMTY2RDAxOTUwMEQ0NTY3MSAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEluYmFuZFRleHRUcmFj
a1ByaXZhdGVBVkZPYmpDLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0FCOTk2
NTE4REEzQzAxMDAxODc3MUUgLyogUlRDQ29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSVENDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC02MDYzLDYgKzYwNjYsOCBAQAogCQkwN0I3MTE2QzFEODk5RTYzMDA5RjBGRkIg
LyogQ2FwdHVyZURldmljZU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ2FwdHVyZURldmljZU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MDdCOTNGRjkyM0I5MkFBQTAwMzZGOEVBIC8qIE1JTUVUeXBlQ2FjaGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTUlNRVR5cGVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0I5M0ZG
QjIzQjkyQUFCMDAzNkY4RUEgLyogTUlNRVR5cGVDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBNSU1FVHlwZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdCQjFF
NkUyNzE3NkNDQTAwMURGMjg5IC8qIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTA3QkIxRTZGMjcxNzZDQ0EwMDFERjI4OSAvKiBEaXNwbGF5Q2Fw
dHVyZVNvdXJjZUNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlDYXB0dXJlU291cmNlQ29j
b2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdDMTQ4MjkyNjEyOTU1QzAwNzc1
ODI4IC8qIEpTTWVkaWFTZXNzaW9uUmVhZHlTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01lZGlh
U2Vzc2lvblJlYWR5U3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdDMTQ4
MkIyNjEyOTU1RDAwNzc1ODI4IC8qIEpTTWVkaWFTZXNzaW9uUmVhZHlTdGF0ZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU01lZGlhU2Vzc2lvblJlYWR5U3RhdGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwN0MxNDgyQzI2MTI5NTVFMDA3NzU4MjggLyogSlNNZWRpYVNlc3Np
b25Db29yZGluYXRvclN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3JTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzc5
MSw4ICsxNzc5Niw2IEBACiAJCQkJM0YzQkI1ODMxRTcwOUVFNDAwQzcwMUYyIC8qIENvcmVBdWRp
b0NhcHR1cmVTb3VyY2UuaCAqLywKIAkJCQkwN0E2RDg0ODFGRUI3MDBCMDA2NDQxREUgLyogRGlz
cGxheUNhcHR1cmVNYW5hZ2VyQ29jb2EuY3BwICovLAogCQkJCTA3QTZEODQ5MUZFQjcwMEMwMDY0
NDFERSAvKiBEaXNwbGF5Q2FwdHVyZU1hbmFnZXJDb2NvYS5oICovLAotCQkJCTA3QTZEODQ3MUZF
QjcwMEIwMDY0NDFERSAvKiBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5jcHAgKi8sCi0JCQkJMDdB
NkQ4NEExRkVCNzAwRDAwNjQ0MURFIC8qIERpc3BsYXlDYXB0dXJlU291cmNlTWFjLmggKi8sCiAJ
CQkJNDE3NEU5MjAyNTM1RENERDAwRkU0MjAyIC8qIE1lZGlhU3RyZWFtVHJhY2tBdWRpb1NvdXJj
ZVByb3ZpZGVyQ29jb2EuY3BwICovLAogCQkJCTQxNzRFOTFFMjUzNURDRDYwMEZFNDIwMiAvKiBN
ZWRpYVN0cmVhbVRyYWNrQXVkaW9Tb3VyY2VQcm92aWRlckNvY29hLmggKi8sCiAJCQkJMDc0NEVD
RUIxRTBDNEFFNTAwMEQwOTQ0IC8qIE1vY2tBdWRpb1NoYXJlZFVuaXQuaCAqLywKQEAgLTIwMTA4
LDYgKzIwMTExLDggQEAKIAkJCQk0MUMzQjg5RjI2NDlCMUI3MDA0RUQ0REUgLyogQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQuaCAqLywKIAkJCQk0MUMzQjhBMDI2NDlC
MUI3MDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmNwcCAqLywK
IAkJCQk0MUMzQjg5QjI2NDlCMUI2MDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJVbml0LmggKi8sCisJCQkJMDdCQjFFNkUyNzE3NkNDQTAwMURGMjg5IC8qIERpc3BsYXlD
YXB0dXJlU291cmNlQ29jb2EuY3BwICovLAorCQkJCTA3QkIxRTZGMjcxNzZDQ0EwMDFERjI4OSAv
KiBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNvY29h
OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI4ODAyLDYgKzI4ODA3LDggQEAKIAkJ
CQlDREM2NzUyMDFFQUVBOUI3MDA3MjdDODQgLyogQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNl
TWFuYWdlci5tbSAqLywKIAkJCQkwN0FGRjQyMDFFRkIxNDQ3MDBCNTQ1QjMgLyogQ29yZUF1ZGlv
Q2FwdHVyZVNvdXJjZUlPUy5oICovLAogCQkJCTA3QUZGNDIxMUVGQjE0NDcwMEI1NDVCMyAvKiBD
b3JlQXVkaW9DYXB0dXJlU291cmNlSU9TLm1tICovLAorCQkJCTA3MUMwMDMzMjcwN0Q5NDQwMEQw
MjdDNyAvKiBSZXBsYXlLaXRDYXB0dXJlU291cmNlLmggKi8sCisJCQkJMDcxQzAwMzIyNzA3RDk0
MzAwRDAyN0M3IC8qIFJlcGxheUtpdENhcHR1cmVTb3VyY2UubW0gKi8sCiAJCQkpOwogCQkJcGF0
aCA9IGlvczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zMjQ1Niw2ICszMjQ2Myw3
IEBACiAJCQkJODM1RDU0QzUxRjRERTUzODAwRTYwNjcxIC8qIERpcmVjdG9yeUZpbGVMaXN0Q3Jl
YXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQ3QTA5RDEyMEE5M0E5NzAwMjQwRkFFIC8qIERp
c2FibGVkQWRhcHRhdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdFREFBRkM5MTlBMkNDREMw
MDM0REZEMSAvKiBEaXNrQ2FjaGVNb25pdG9yQ29jb2EuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3
QkIxRTcwMjcxNzZDRDkwMDFERjI4OSAvKiBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkU1RkJEMzFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCTU1QUQwOTQwMjQwODk2NDAwMERFNEQyRiAvKiBEaXNwbGF5
TGlzdERyYXdpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1NUFEMDkzRTI0MDg5NjM1
MDBERTREMkYgLyogRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0z
NTA4OCw2ICszNTA5Niw3IEBACiAJCQkJQTg5Q0NDNTMwRjQ0RTk4MTAwQjVEQTEwIC8qIFJlcGxh
Y2VOb2RlV2l0aFNwYW5Db21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREY1MTJDRTFEODcz
RTQ3MDAxRDY3ODAgLyogUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5MzMwOUUwQTA5OUU2NDkyMDA1NkU1ODEgLyogUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3MUMwMDM0MjcwN0Q5NTUwMEQwMjdDNyAvKiBSZXBs
YXlLaXRDYXB0dXJlU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkRENkUxRjI2RTdEQkU3
MDA4QzFGNEMgLyogUmVwb3J0aW5nRW5kcG9pbnRzQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQ5OThBRUM2MTNGOUQwRUEwMDkwQjFBQSAvKiBSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFj
ay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNERDAxMjUxRjEyRDAwM0VGMjY5IC8qIFJlc2V0
SW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTM2ODEwLDYgKzM2ODE5LDcgQEAKIAkJCQlD
REEyOUEzMDFDQkY3NEQ0MDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlDREEyOUExNjFDQkRBNTZDMDA5MDFDQ0YgLyogUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5MjQyNDkyMTI3
QjkzRTAwNjM0RkNGIC8qIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLm1tIGluIFNv
dXJjZXMgKi8sCisJCQkJMDcxQzAwNEIyNzBCODY0OTAwRDAyN0M3IC8qIFJlcGxheUtpdENhcHR1
cmVTb3VyY2UubW0gaW4gU291cmNlcyAqLywKIAkJCQk1QzJCMUFFQzIyMzk3RUJDMDBCOTFDRjcg
LyogUmVzb3VyY2VSZXNwb25zZUNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1MTE1NkUx
MkIxNzQ5QzAwQzk2NzU0IC8qIFNjcm9sbEFuaW1hdG9yTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEZFRTM3MTEyNkYxOTUyOTAwMUI1MTg0IC8qIFNjcm9sbGJhcnNDb250cm9sbGVyTWFjLm1t
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lbi5scHJvai9Mb2Nh
bGl6YWJsZS5zdHJpbmdzIGIvU291cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUuc3Ry
aW5ncwppbmRleCBlMTI5Y2NhOTgzYjllZmQ0ZjgzZTc0YjIyYjRiZjM2NzQ5OGExNWQzLi5hMDU5
ZDdiYjJlMGJhZjNiMjAwZjk0ZmY3MTIzMDI5YzgwOWRiNjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKQEAgLTE2Myw2ICsxNjMsOSBAQAogLyogQWxs
b3cgYnV0dG9uIHRpdGxlIGluIHVzZXIgbWVkaWEgcHJvbXB0ICovCiAiQWxsb3cgKHVzZXJtZWRp
YSkiID0gIkFsbG93IjsKIAorLyogQWxsb3cgYnV0dG9uIHRpdGxlIGluIHNjcmVlbiBzaGFyaW5n
IHByb21wdCAqLworIkFsbG93IChzY3JlZW5zaGFyaW5nKSIgPSAiQWxsb3ciOworCiAvKiBNZXNz
YWdlIGZvciByZXF1ZXN0aW5nIGNyb3NzLXNpdGUgY29va2llIGFuZCB3ZWJzaXRlIGRhdGEgYWNj
ZXNzLiAqLwogIkFsbG93IOKAnCVA4oCdIGFuZCDigJwlQOKAnSB0byB1c2UgY29va2llcyBhbmQg
d2Vic2l0ZSBkYXRhIHdoaWxlIGJyb3dzaW5nIOKAnCVA4oCdPyIgPSAiQWxsb3cg4oCcJUDigJ0g
YW5kIOKAnCVA4oCdIHRvIHVzZSBjb29raWVzIGFuZCB3ZWJzaXRlIGRhdGEgd2hpbGUgYnJvd3Np
bmcg4oCcJUDigJ0/IjsKIApAQCAtMTg0LDYgKzE4Nyw5IEBACiAvKiBNZXNzYWdlIGZvciB1c2Vy
IG1pY3JvcGhvbmUgYWNjZXNzIHByb21wdCAqLwogIkFsbG93IOKAnCVA4oCdIHRvIHVzZSB5b3Vy
IG1pY3JvcGhvbmU/IiA9ICJBbGxvdyDigJwlQOKAnSB0byB1c2UgeW91ciBtaWNyb3Bob25lPyI7
CiAKKy8qIE1lc3NhZ2UgZm9yIHNjcmVlbiBzaGFyaW5nIHByb21wdC4gKi8KKyJBbGxvdyDigJwl
QOKAnSB0byBvYnNlcnZlIHlvdXIgc2NyZWVuPyIgPSAiQWxsb3cg4oCcJUDigJ0gdG8gb2JzZXJ2
ZSB5b3VyIHNjcmVlbj8iOworCiAvKiBXS0Vycm9yVW5rbm93biBkZXNjcmlwdGlvbiAqLwogIkFu
IHVua25vd24gZXJyb3Igb2NjdXJyZWQiID0gIkFuIHVua25vd24gZXJyb3Igb2NjdXJyZWQiOwog
CkBAIC0zOTEsNiArMzk3LDkgQEAKIC8qIERpc2FsbG93IGJ1dHRvbiB0aXRsZSBpbiB1c2VyIG1l
ZGlhIHByb21wdCAqLwogIkRvbuKAmXQgQWxsb3cgKHVzZXJtZWRpYSkiID0gIkRvbuKAmXQgQWxs
b3ciOwogCisvKiBEaXNhbGxvdyBidXR0b24gdGl0bGUgaW4gc2NyZWVuIHNoYXJpbmcgcHJvbXB0
ICovCisiRG9u4oCZdCBBbGxvdyAoc2NyZWVuc2hhcmluZykiID0gIkRvbuKAmXQgQWxsb3ciOwor
CiAvKiBEb3dubG9hZCBBdWRpbyBUbyBEaXNrIGNvbnRleHQgbWVudSBpdGVtICovCiAiRG93bmxv
YWQgQXVkaW8iID0gIkRvd25sb2FkIEF1ZGlvIjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oCmlu
ZGV4IDRmMjI5ZGU2YWZmOWRmMWExZDQyZDc2MGUyNzA5OTA1Yzg4N2Y0MGQuLmVjOTViZmI4MzRh
ZjNjY2UyMjc0YjVkZTVkZTc2YmYzMzMyMzZhY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULmgK
QEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBjb252
ZXJ0TWVkaWFTYW1wbGUoTWVkaWFTYW1wbGUmLCBjb25zdCBJbnRTaXplJik7CiAgICAgUmVmUHRy
PE1lZGlhU2FtcGxlPiBjcmVhdGVNZWRpYVNhbXBsZShDR0ltYWdlUmVmLCBjb25zdCBNZWRpYVRp
bWUmLCBjb25zdCBJbnRTaXplJiwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gPSBNZWRpYVNh
bXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSwgYm9vbCBtaXJyb3JlZCA9IGZhbHNlKTsKLSAgICBS
ZWZQdHI8TWVkaWFTYW1wbGU+IGNyZWF0ZU1lZGlhU2FtcGxlKENNU2FtcGxlQnVmZmVyUmVmLCBj
b25zdCBJbnRTaXplJiwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gPSBNZWRpYVNhbXBsZTo6
VmlkZW9Sb3RhdGlvbjo6Tm9uZSwgYm9vbCBtaXJyb3JlZCA9IGZhbHNlKTsKKyAgICBSZWZQdHI8
TWVkaWFTYW1wbGU+IGNyZWF0ZU1lZGlhU2FtcGxlKENNU2FtcGxlQnVmZmVyUmVmLCBjb25zdCBN
ZWRpYVRpbWUmLCBjb25zdCBJbnRTaXplJiwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gPSBN
ZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSwgYm9vbCBtaXJyb3JlZCA9IGZhbHNlKTsK
IAogI2lmICFQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8
TWVkaWFTYW1wbGU+IGNyZWF0ZU1lZGlhU2FtcGxlKElPU3VyZmFjZVJlZiwgY29uc3QgTWVkaWFU
aW1lJiwgY29uc3QgSW50U2l6ZSYsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uID0gTWVkaWFT
YW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUsIGJvb2wgbWlycm9yZWQgPSBmYWxzZSk7CkBAIC02
Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBj
cmVhdGVDTVNhbXBsZUJ1ZmZlcihJT1N1cmZhY2VSZWYsIGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0
IEludFNpemUmKTsKICNlbmRpZgogCi0gICAgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBj
b252ZXJ0Q01TYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYsIGNvbnN0IEludFNpemUmKTsK
KyAgICBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IGNvbnZlcnRDTVNhbXBsZUJ1ZmZlcihD
TVNhbXBsZUJ1ZmZlclJlZiwgY29uc3QgSW50U2l6ZSYsIGNvbnN0IE1lZGlhVGltZSogPSBudWxs
cHRyKTsKICAgICBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IGNyZWF0ZUNNU2FtcGxlQnVm
ZmVyKENWUGl4ZWxCdWZmZXJSZWYsIGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IEludFNpemUmKTsK
ICAgICBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IGNyZWF0ZUNNU2FtcGxlQnVmZmVyKENH
SW1hZ2VSZWYsIGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IEludFNpemUmKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Np
b25WVC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNm
ZXJTZXNzaW9uVlQubW0KaW5kZXggZDU3M2I3Zjk1YWFjYThjMjQxZTVhNTFiOTQwYmIzMDdhMTI3
ZjhlZC4uYWJiOTkyMzkzZTU3NTNiMzY5ZTdjNTU0NDZhMTFiZDA3MzdhZDk0YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Np
b25WVC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRy
YW5zZmVyU2Vzc2lvblZULm1tCkBAIC0xMDgsNyArMTA4LDcgQEAgUmV0YWluUHRyPENWUGl4ZWxC
dWZmZXJSZWY+IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNvbnZlcnRQaXhlbEJ1ZmZlcihDVlBp
eGVsQnUKICAgICByZXR1cm4gb3V0cHV0QnVmZmVyOwogfQogCi1SZXRhaW5QdHI8Q01TYW1wbGVC
dWZmZXJSZWY+IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNvbnZlcnRDTVNhbXBsZUJ1ZmZlcihD
TVNhbXBsZUJ1ZmZlclJlZiBzb3VyY2VCdWZmZXIsIGNvbnN0IEludFNpemUmIHNpemUpCitSZXRh
aW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNvbnZlcnRD
TVNhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZiBzb3VyY2VCdWZmZXIsIGNvbnN0IEludFNp
emUmIHNpemUsIGNvbnN0IE1lZGlhVGltZSogc2FtcGxlVGltZSkKIHsKICAgICBpZiAoIXNvdXJj
ZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNDEsNiArMTQxLDE0IEBAIFJl
dGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gSW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y29udmVy
dENNU2FtcGxlQnVmZmVyKENNU2FtCiAgICAgICAgICAgICBSRUxFQVNFX0xPRyhNZWRpYSwgIklt
YWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNvbnZlcnRDTVNhbXBsZUJ1ZmZlcjogQ01TYW1wbGVCdWZm
ZXJHZXRTYW1wbGVUaW1pbmdJbmZvQXJyYXkgZmFpbGVkIHdpdGggZXJyb3IgY29kZTogJWQiLCBz
dGF0aWNfY2FzdDxpbnQ+KHN0YXR1cykpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgICAgIH0KKworICAgICAgICBpZiAoc2FtcGxlVGltZSkgeworICAgICAgICAgICAgYXV0byBj
bVRpbWUgPSBQQUw6OnRvQ01UaW1lKCpzYW1wbGVUaW1lKTsKKyAgICAgICAgICAgIGZvciAoYXV0
byYgdGltaW5nIDogdGltaW5nSW5mb0FycmF5KSB7CisgICAgICAgICAgICAgICAgdGltaW5nLnBy
ZXNlbnRhdGlvblRpbWVTdGFtcCA9IGNtVGltZTsKKyAgICAgICAgICAgICAgICB0aW1pbmcuZGVj
b2RlVGltZVN0YW1wID0gY21UaW1lOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAg
IHRpbWVpbmdJbmZvUHRyID0gdGltaW5nSW5mb0FycmF5LmRhdGEoKTsKICAgICB9CiAKQEAgLTI4
Nyw5ICsyOTUsOSBAQCBSZWZQdHI8TWVkaWFTYW1wbGU+IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6
OmNyZWF0ZU1lZGlhU2FtcGxlKENHSW1hZ2VSZWYgaW1hZ2UsCiAgICAgcmV0dXJuIE1lZGlhU2Ft
cGxlQVZGT2JqQzo6Y3JlYXRlKHNhbXBsZUJ1ZmZlci5nZXQoKSwgcm90YXRpb24sIG1pcnJvcmVk
KTsKIH0KIAotUmVmUHRyPE1lZGlhU2FtcGxlPiBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpjcmVh
dGVNZWRpYVNhbXBsZShDTVNhbXBsZUJ1ZmZlclJlZiBidWZmZXIsIGNvbnN0IEludFNpemUmIHNp
emUsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uLCBib29sIG1pcnJvcmVkKQor
UmVmUHRyPE1lZGlhU2FtcGxlPiBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpjcmVhdGVNZWRpYVNh
bXBsZShDTVNhbXBsZUJ1ZmZlclJlZiBidWZmZXIsIGNvbnN0IE1lZGlhVGltZSYgc2FtcGxlVGlt
ZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRp
b24sIGJvb2wgbWlycm9yZWQpCiB7Ci0gICAgYXV0byBzYW1wbGVCdWZmZXIgPSBjb252ZXJ0Q01T
YW1wbGVCdWZmZXIoYnVmZmVyLCBzaXplKTsKKyAgICBhdXRvIHNhbXBsZUJ1ZmZlciA9IGNvbnZl
cnRDTVNhbXBsZUJ1ZmZlcihidWZmZXIsIHNpemUsICZzYW1wbGVUaW1lKTsKICAgICBpZiAoIXNh
bXBsZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0Rpc3BsYXlDYXB0dXJlU291cmNl
Q29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvRGlz
cGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzdmMTMxZjQyN2RkYmMwNDEx
ZDI2Mjk1OGQ3OTFkMmJiOWI5M2QyOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuY3Bw
CkBAIC0wLDAgKzEsMzE5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGlzcGxheUNhcHR1
cmVTb3VyY2VDb2NvYS5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0o
Q09DT0EpCisKKyNpbmNsdWRlICJDR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlLmgi
CisjaW5jbHVkZSAiSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oIgorI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKKyNpbmNsdWRlICJNZWRpYVNhbXBsZUFWRk9iakMuaCIKKyNpbmNsdWRlICJQaXhlbEJ1ZmZl
ckNvbmZvcm1lckNWLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgorI2luY2x1
ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCIKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJSZWFsdGltZVZpZGVvVXRpbGl0aWVzLmgiCisj
aW5jbHVkZSAiUmVtb3RlVmlkZW9TYW1wbGUuaCIKKyNpbmNsdWRlICJSZXBsYXlLaXRDYXB0dXJl
U291cmNlLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDxDb3JlTWVkaWEvQ01TeW5j
Lmg+CisjaW5jbHVkZSA8SU9TdXJmYWNlL0lPU3VyZmFjZVJlZi5oPgorI2luY2x1ZGUgPG1hY2gv
bWFjaF90aW1lLmg+CisjaW5jbHVkZSA8cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5k
YXRpb24uaD4KKyNpbmNsdWRlIDxwYWwvc3BpL2NmL0NvcmVBdWRpb1NQSS5oPgorI2luY2x1ZGUg
PHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CisjaW5jbHVkZSA8cGFsL3NwaS9jb2NvYS9J
T1N1cmZhY2VTUEkuaD4KKyNpbmNsdWRlIDxzeXMvdGltZS5oPgorI2luY2x1ZGUgPHd0Zi9NYWlu
VGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKKyNpbmNsdWRlICJD
b3JlVmlkZW9Tb2Z0TGluay5oIgorI2luY2x1ZGUgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NhcHR1cmVTb3VyY2VPckVycm9yIERpc3BsYXlD
YXB0dXJlU291cmNlQ29jb2E6OmNyZWF0ZShjb25zdCBDYXB0dXJlRGV2aWNlJiBkZXZpY2UsIGNv
bnN0IE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzKQoreworICAgIHN3aXRjaCAoZGV2aWNl
LnR5cGUoKSkgeworICAgIGNhc2UgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuOgor
I2lmIFBMQVRGT1JNKElPUykKKyAgICAgICAgcmV0dXJuIGNyZWF0ZShSZXBsYXlLaXRDYXB0dXJl
U291cmNlOjpjcmVhdGUoZGV2aWNlLnBlcnNpc3RlbnRJZCgpKSwgZGV2aWNlLCBjb25zdHJhaW50
cyk7CisjZWxzZQorICAgICAgICByZXR1cm4gY3JlYXRlKENHRGlzcGxheVN0cmVhbVNjcmVlbkNh
cHR1cmVTb3VyY2U6OmNyZWF0ZShkZXZpY2UucGVyc2lzdGVudElkKCkpLCBkZXZpY2UsIGNvbnN0
cmFpbnRzKTsKKyNlbmRpZgorICAgIGNhc2UgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6V2lu
ZG93OgorICAgIGNhc2UgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6TWljcm9waG9uZToKKyAg
ICBjYXNlIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNwZWFrZXI6CisgICAgY2FzZSBDYXB0
dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpDYW1lcmE6CisgICAgY2FzZSBDYXB0dXJlRGV2aWNlOjpE
ZXZpY2VUeXBlOjpVbmtub3duOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIHsgfTsKK30KKworQ2FwdHVyZVNvdXJjZU9y
RXJyb3IgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Y3JlYXRlKEV4cGVjdGVkPFVuaXF1ZVJl
ZjxDYXB0dXJlcj4sIFN0cmluZz4mJiBjYXB0dXJlciwgY29uc3QgQ2FwdHVyZURldmljZSYgZGV2
aWNlLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cykKK3sKKyAgICBpZiAoIWNh
cHR1cmVyLmhhc192YWx1ZSgpKQorICAgICAgICByZXR1cm4gQ2FwdHVyZVNvdXJjZU9yRXJyb3Ig
eyBXVEZNb3ZlKGNhcHR1cmVyLmVycm9yKCkpIH07CisKKyAgICBhdXRvIHNvdXJjZSA9IGFkb3B0
UmVmKCpuZXcgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYShXVEZNb3ZlKGNhcHR1cmVyLnZhbHVl
KCkpLCBTdHJpbmcgeyBkZXZpY2UubGFiZWwoKSB9KSk7CisgICAgaWYgKGNvbnN0cmFpbnRzKSB7
CisgICAgICAgIGF1dG8gcmVzdWx0ID0gc291cmNlLT5hcHBseUNvbnN0cmFpbnRzKCpjb25zdHJh
aW50cyk7CisgICAgICAgIGlmIChyZXN1bHQpCisgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShy
ZXN1bHQudmFsdWUoKS5iYWRDb25zdHJhaW50KTsKKyAgICB9CisKKyAgICByZXR1cm4gQ2FwdHVy
ZVNvdXJjZU9yRXJyb3IoV1RGTW92ZShzb3VyY2UpKTsKK30KKworRGlzcGxheUNhcHR1cmVTb3Vy
Y2VDb2NvYTo6RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYShVbmlxdWVSZWY8Q2FwdHVyZXI+JiYg
Y2FwdHVyZXIsIFN0cmluZyYmIG5hbWUpCisgICAgOiBSZWFsdGltZU1lZGlhU291cmNlKFR5cGU6
OlZpZGVvLCBXVEZNb3ZlKG5hbWUpKQorICAgICwgbV9jYXB0dXJlcihXVEZNb3ZlKGNhcHR1cmVy
KSkKKyAgICAsIG1fdGltZXIoUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmRGlzcGxheUNhcHR1
cmVTb3VyY2VDb2NvYTo6ZW1pdEZyYW1lKQoreworICAgIGlmIChsb2dnZXJQdHIoKSkKKyAgICAg
ICAgbV9jYXB0dXJlci0+c2V0TG9nZ2VyKGxvZ2dlcigpLCBsb2dJZGVudGlmaWVyKCkpOworfQor
CitEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjp+RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYSgp
Cit7Cit9CisKK2NvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIERpc3BsYXlD
YXB0dXJlU291cmNlQ29jb2E6OmNhcGFiaWxpdGllcygpCit7CisgICAgaWYgKCFtX2NhcGFiaWxp
dGllcykgeworICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzIGNhcGFiaWxp
dGllcyhzZXR0aW5ncygpLnN1cHBvcnRlZENvbnN0cmFpbnRzKCkpOworCisgICAgICAgIGF1dG8g
aW50cmluc2ljU2l6ZSA9IG1fY2FwdHVyZXItPmludHJpbnNpY1NpemUoKTsKKyAgICAgICAgY2Fw
YWJpbGl0aWVzLnNldFdpZHRoKENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UoMSwgaW50cmluc2ljU2l6
ZS53aWR0aCgpKSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5zZXRIZWlnaHQoQ2FwYWJpbGl0eVZh
bHVlT3JSYW5nZSgxLCBpbnRyaW5zaWNTaXplLmhlaWdodCgpKSk7CisgICAgICAgIGNhcGFiaWxp
dGllcy5zZXRGcmFtZVJhdGUoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSguMDEsIDMwLjApKTsKKwor
ICAgICAgICBtX2NhcGFiaWxpdGllcyA9IFdURk1vdmUoY2FwYWJpbGl0aWVzKTsKKyAgICB9Cisg
ICAgcmV0dXJuIG1fY2FwYWJpbGl0aWVzLnZhbHVlKCk7Cit9CisKK2NvbnN0IFJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5ncyYgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6c2V0dGluZ3MoKQor
eworICAgIGlmICghbV9jdXJyZW50U2V0dGluZ3MpIHsKKyAgICAgICAgUmVhbHRpbWVNZWRpYVNv
dXJjZVNldHRpbmdzIHNldHRpbmdzOworICAgICAgICBzZXR0aW5ncy5zZXRGcmFtZVJhdGUoZnJh
bWVSYXRlKCkpOworCisgICAgICAgIGF1dG8gc2l6ZSA9IHRoaXMtPnNpemUoKTsKKyAgICAgICAg
c2V0dGluZ3Muc2V0V2lkdGgoc2l6ZS53aWR0aCgpKTsKKyAgICAgICAgc2V0dGluZ3Muc2V0SGVp
Z2h0KHNpemUuaGVpZ2h0KCkpOworCisgICAgICAgIHNldHRpbmdzLnNldERpc3BsYXlTdXJmYWNl
KG1fY2FwdHVyZXItPnN1cmZhY2VUeXBlKCkpOworICAgICAgICBzZXR0aW5ncy5zZXRMb2dpY2Fs
U3VyZmFjZShmYWxzZSk7CisKKyAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENv
bnN0cmFpbnRzIHN1cHBvcnRlZENvbnN0cmFpbnRzOworICAgICAgICBzdXBwb3J0ZWRDb25zdHJh
aW50cy5zZXRTdXBwb3J0c0ZyYW1lUmF0ZSh0cnVlKTsKKyAgICAgICAgc3VwcG9ydGVkQ29uc3Ry
YWludHMuc2V0U3VwcG9ydHNXaWR0aCh0cnVlKTsKKyAgICAgICAgc3VwcG9ydGVkQ29uc3RyYWlu
dHMuc2V0U3VwcG9ydHNIZWlnaHQodHJ1ZSk7CisgICAgICAgIHN1cHBvcnRlZENvbnN0cmFpbnRz
LnNldFN1cHBvcnRzRGlzcGxheVN1cmZhY2UodHJ1ZSk7CisgICAgICAgIHN1cHBvcnRlZENvbnN0
cmFpbnRzLnNldFN1cHBvcnRzTG9naWNhbFN1cmZhY2UodHJ1ZSk7CisKKyAgICAgICAgc2V0dGlu
Z3Muc2V0U3VwcG9ydGVkQ29uc3RyYWludHMoc3VwcG9ydGVkQ29uc3RyYWludHMpOworCisgICAg
ICAgIG1fY3VycmVudFNldHRpbmdzID0gV1RGTW92ZShzZXR0aW5ncyk7CisgICAgfQorICAgIHJl
dHVybiBtX2N1cnJlbnRTZXR0aW5ncy52YWx1ZSgpOworfQorCit2b2lkIERpc3BsYXlDYXB0dXJl
U291cmNlQ29jb2E6OnNldHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNldDxSZWFsdGltZU1lZGlhU291
cmNlU2V0dGluZ3M6OkZsYWc+IHNldHRpbmdzKQoreworICAgIGlmIChzZXR0aW5ncy5jb250YWlu
cyhSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OkZyYW1lUmF0ZSkgJiYgbV90aW1l
ci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3RpbWVyLnN0YXJ0UmVwZWF0aW5nKDFfcyAvIGZyYW1l
UmF0ZSgpKTsKKworICAgIG1fY3VycmVudFNldHRpbmdzID0geyB9OworfQorCit2b2lkIERpc3Bs
YXlDYXB0dXJlU291cmNlQ29jb2E6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCit7CisgICAgbV9zdGFy
dFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKKyAgICBtX3RpbWVyLnN0YXJ0UmVwZWF0aW5n
KDFfcyAvIGZyYW1lUmF0ZSgpKTsKKworICAgIGlmICghbV9jYXB0dXJlci0+c3RhcnQoKSkKKyAg
ICAgICAgY2FwdHVyZUZhaWxlZCgpOworfQorCit2b2lkIERpc3BsYXlDYXB0dXJlU291cmNlQ29j
b2E6OnN0b3BQcm9kdWNpbmdEYXRhKCkKK3sKKyAgICBtX3RpbWVyLnN0b3AoKTsKKyAgICBtX2Vs
YXBzZWRUaW1lICs9IE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV9zdGFydFRpbWU7CisgICAgbV9z
dGFydFRpbWUgPSBNb25vdG9uaWNUaW1lOjpuYW4oKTsKKworICAgIG1fY2FwdHVyZXItPnN0b3Ao
KTsKK30KKworU2Vjb25kcyBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjplbGFwc2VkVGltZSgp
Cit7CisgICAgaWYgKHN0ZDo6aXNuYW4obV9zdGFydFRpbWUpKQorICAgICAgICByZXR1cm4gbV9l
bGFwc2VkVGltZTsKKworICAgIHJldHVybiBtX2VsYXBzZWRUaW1lICsgKE1vbm90b25pY1RpbWU6
Om5vdygpIC0gbV9zdGFydFRpbWUpOworfQorCisvLyBXZSBrZWVwIHRoZSBhc3BlY3QgcmF0aW8g
b2YgdGhlIGludHJpbnNpYyBzaXplIGZvciB0aGUgZnJhbWUgc2l6ZSBhcyBnZXREaXNwbGF5TWVk
aWEgYWxsb3dzIG1heCBjb25zdHJhaW50cyBvbmx5Lgordm9pZCBEaXNwbGF5Q2FwdHVyZVNvdXJj
ZUNvY29hOjp1cGRhdGVGcmFtZVNpemUoKQoreworICAgIGF1dG8gaW50cmluc2ljU2l6ZSA9IHRo
aXMtPmludHJpbnNpY1NpemUoKTsKKworICAgIGF1dG8gZnJhbWVTaXplID0gc2l6ZSgpOworICAg
IGlmICghZnJhbWVTaXplLmhlaWdodCgpKQorICAgICAgICBmcmFtZVNpemUuc2V0SGVpZ2h0KGlu
dHJpbnNpY1NpemUuaGVpZ2h0KCkpOworICAgIGlmICghZnJhbWVTaXplLndpZHRoKCkpCisgICAg
ICAgIGZyYW1lU2l6ZS5zZXRXaWR0aChpbnRyaW5zaWNTaXplLndpZHRoKCkpOworCisgICAgYXV0
byBtYXhIZWlnaHQgPSBzdGQ6Om1pbihmcmFtZVNpemUuaGVpZ2h0KCksIGludHJpbnNpY1NpemUu
aGVpZ2h0KCkpOworICAgIGF1dG8gbWF4V2lkdGggPSBzdGQ6Om1pbihmcmFtZVNpemUud2lkdGgo
KSwgaW50cmluc2ljU2l6ZS53aWR0aCgpKTsKKworICAgIGF1dG8gaGVpZ2h0Rm9yTWF4V2lkdGgg
PSBtYXhXaWR0aCAqIGludHJpbnNpY1NpemUuaGVpZ2h0KCkgLyBpbnRyaW5zaWNTaXplLndpZHRo
KCk7CisgICAgYXV0byB3aWR0aEZvck1heEhlaWdodCA9IG1heEhlaWdodCAqIGludHJpbnNpY1Np
emUud2lkdGgoKSAvIGludHJpbnNpY1NpemUuaGVpZ2h0KCk7CisKKyAgICBpZiAoaGVpZ2h0Rm9y
TWF4V2lkdGggPD0gbWF4SGVpZ2h0KSB7CisgICAgICAgIHNldFNpemUoeyBtYXhXaWR0aCwgaGVp
Z2h0Rm9yTWF4V2lkdGggfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKHdpZHRo
Rm9yTWF4SGVpZ2h0IDw9IG1heFdpZHRoKSB7CisgICAgICAgIHNldFNpemUoeyB3aWR0aEZvck1h
eEhlaWdodCwgbWF4SGVpZ2h0IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHNldFNp
emUoaW50cmluc2ljU2l6ZSk7Cit9CisKK3ZvaWQgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6
ZW1pdEZyYW1lKCkKK3sKKyAgICBpZiAobXV0ZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
aWYgKCFtX2ltYWdlVHJhbnNmZXJTZXNzaW9uKQorICAgICAgICBtX2ltYWdlVHJhbnNmZXJTZXNz
aW9uID0gSW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y3JlYXRlKHByZWZlcmVkUGl4ZWxCdWZmZXJG
b3JtYXQoKSk7CisKKyAgICBhdXRvIHNhbXBsZVRpbWUgPSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhE
b3VibGUoKGVsYXBzZWRUaW1lKCkgKyAxMDBfbXMpLnNlY29uZHMoKSk7CisKKyAgICBhdXRvIGZy
YW1lID0gbV9jYXB0dXJlci0+Z2VuZXJhdGVGcmFtZSgpOworICAgIGF1dG8gaW1hZ2VTaXplID0g
V1RGOjpzd2l0Y2hPbihmcmFtZSwKKyAgICAgICAgW10oUmV0YWluUHRyPElPU3VyZmFjZVJlZj4g
c3VyZmFjZSkgLT4gSW50U2l6ZSB7CisgICAgICAgICAgICBpZiAoIXN1cmZhY2UpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHsgfTsKKworICAgICAgICAgICAgcmV0dXJuIEludFNpemUoSU9TdXJm
YWNlR2V0V2lkdGgoc3VyZmFjZS5nZXQoKSksIElPU3VyZmFjZUdldEhlaWdodChzdXJmYWNlLmdl
dCgpKSk7CisgICAgICAgIH0sCisgICAgICAgIFtdKFJlZlB0cjxOYXRpdmVJbWFnZT4gaW1hZ2Up
IC0+IEludFNpemUgeworICAgICAgICAgICAgaWYgKCFpbWFnZSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4geyB9OworCisgICAgICAgICAgICByZXR1cm4gaW1hZ2UtPnNpemUoKTsKKyAgICAgICAg
fSwKKyAgICAgICAgW10oUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBzYW1wbGUpIC0+IElu
dFNpemUgeworICAgICAgICAgICAgaWYgKCFzYW1wbGUpCisgICAgICAgICAgICAgICAgcmV0dXJu
IHsgfTsKKworICAgICAgICAgICAgQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlw
dGlvbiA9IFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRGb3JtYXREZXNjcmlwdGlvbihzYW1wbGUuZ2V0
KCkpOworICAgICAgICAgICAgaWYgKFBBTDo6Q01Gb3JtYXREZXNjcmlwdGlvbkdldE1lZGlhVHlw
ZShmb3JtYXREZXNjcmlwdGlvbikgIT0ga0NNTWVkaWFUeXBlX1ZpZGVvKQorICAgICAgICAgICAg
ICAgIHJldHVybiBJbnRTaXplKCk7CisKKyAgICAgICAgICAgIHJldHVybiBJbnRTaXplKFBBTDo6
Q01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uR2V0UHJlc2VudGF0aW9uRGltZW5zaW9ucyhmb3JtYXRE
ZXNjcmlwdGlvbiwgdHJ1ZSwgdHJ1ZSkpOworICAgICAgICB9CisgICAgKTsKKworICAgIGlmIChp
bWFnZVNpemUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoaW50cmluc2lj
U2l6ZSgpICE9IGltYWdlU2l6ZSkgeworICAgICAgICBzZXRJbnRyaW5zaWNTaXplKGltYWdlU2l6
ZSk7CisgICAgICAgIHVwZGF0ZUZyYW1lU2l6ZSgpOworICAgIH0KKworICAgIGF1dG8gc2FtcGxl
ID0gV1RGOjpzd2l0Y2hPbihmcmFtZSwKKyAgICAgICAgW3RoaXMsIHNhbXBsZVRpbWVdKFJldGFp
blB0cjxJT1N1cmZhY2VSZWY+IHN1cmZhY2UpIC0+IFJlZlB0cjxNZWRpYVNhbXBsZT4geworICAg
ICAgICAgICAgaWYgKCFzdXJmYWNlKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgICAgICAgICByZXR1cm4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3JlYXRlTWVkaWFT
YW1wbGUoc3VyZmFjZS5nZXQoKSwgc2FtcGxlVGltZSwgc2l6ZSgpKTsKKyAgICAgICAgfSwKKyAg
ICAgICAgW3RoaXMsIHNhbXBsZVRpbWVdKFJlZlB0cjxOYXRpdmVJbWFnZT4gaW1hZ2UpIC0+IFJl
ZlB0cjxNZWRpYVNhbXBsZT4geworICAgICAgICAgICAgaWYgKCFpbWFnZSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICAgICAgcmV0dXJuIG1faW1hZ2VUcmFuc2Zl
clNlc3Npb24tPmNyZWF0ZU1lZGlhU2FtcGxlKGltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCks
IHNhbXBsZVRpbWUsIHNpemUoKSk7CisgICAgICAgIH0sCisgICAgICAgIFt0aGlzLCBzYW1wbGVU
aW1lXShSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IHNhbXBsZSkgLT4gUmVmUHRyPE1lZGlh
U2FtcGxlPiB7CisgICAgICAgICAgICBpZiAoIXNhbXBsZSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgICAgICAgICAgcmV0dXJuIG1faW1hZ2VUcmFuc2ZlclNlc3Npb24t
PmNyZWF0ZU1lZGlhU2FtcGxlKHNhbXBsZS5nZXQoKSwgc2FtcGxlVGltZSwgc2l6ZSgpKTsKKyAg
ICAgICAgfQorICAgICk7CisKKyAgICBpZiAoIXNhbXBsZSkgeworICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHZpZGVvU2FtcGxlQXZh
aWxhYmxlKCpzYW1wbGUuZ2V0KCkpOworfQorCit2b2lkIERpc3BsYXlDYXB0dXJlU291cmNlQ29j
b2E6OnNldExvZ2dlcihjb25zdCBMb2dnZXImIGxvZ2dlciwgY29uc3Qgdm9pZCogaWRlbnRpZmll
cikKK3sKKyAgICBSZWFsdGltZU1lZGlhU291cmNlOjpzZXRMb2dnZXIobG9nZ2VyLCBpZGVudGlm
aWVyKTsKKyAgICBtX2NhcHR1cmVyLT5zZXRMb2dnZXIobG9nZ2VyLCBpZGVudGlmaWVyKTsKK30K
Kwordm9pZCBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpDYXB0dXJlcjo6c2V0TG9nZ2VyKGNv
bnN0IExvZ2dlciYgbmV3TG9nZ2VyLCBjb25zdCB2b2lkKiBuZXdMb2dJZGVudGlmaWVyKQorewor
ICAgIG1fbG9nZ2VyID0gJm5ld0xvZ2dlcjsKKyAgICBtX2xvZ0lkZW50aWZpZXIgPSBuZXdMb2dJ
ZGVudGlmaWVyOworfQorCitXVEZMb2dDaGFubmVsJiBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29h
OjpDYXB0dXJlcjo6bG9nQ2hhbm5lbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIExvZ1dlYlJUQzsK
K30KKworRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Q2FwdHVyZXI6Ok9ic2VydmVyOjp+T2Jz
ZXJ2ZXIoKQoreworfQorCit2b2lkIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OkNhcHR1cmVy
OjpzZXRPYnNlcnZlcihPYnNlcnZlciogb2JzZXJ2ZXIpCit7CisgICAgbV9vYnNlcnZlciA9IFdl
YWtQdHIgeyBvYnNlcnZlciB9OworfQorCit2b2lkIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6
OkNhcHR1cmVyOjpjYXB0dXJlcklzUnVubmluZ0NoYW5nZWQoYm9vbCBydW5uaW5nKQoreworICAg
IGlmIChtX29ic2VydmVyKQorICAgICAgICBtX29ic2VydmVyLT5jYXB0dXJlcklzUnVubmluZ0No
YW5nZWQocnVubmluZyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvRGlzcGxheUNhcHR1cmVTb3Vy
Y2VDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvRGlz
cGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFlNmE5MGE4YzA1NzQ3NGJjZTc0
OTc2YmQ5ZGI3Zjg2NDM1Y2UyMWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmgKQEAg
LTAsMCArMSwxMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExB
VEZPUk0oQ09DT0EpCisKKyNpbmNsdWRlICJDYXB0dXJlRGV2aWNlLmgiCisjaW5jbHVkZSAiUmVh
bHRpbWVNZWRpYVNvdXJjZS5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3Rm
L1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCisKK3R5cGVk
ZWYgc3RydWN0IENHSW1hZ2UgKkNHSW1hZ2VSZWY7Cit0eXBlZGVmIHN0cnVjdCBfX0NWQnVmZmVy
ICpDVlBpeGVsQnVmZmVyUmVmOwordHlwZWRlZiBzdHJ1Y3QgX19JT1N1cmZhY2UgKklPU3VyZmFj
ZVJlZjsKKworbmFtZXNwYWNlIFdURiB7CitjbGFzcyBNZWRpYVRpbWU7Cit9CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgQ2FwdHVyZURldmljZUluZm87CitjbGFzcyBJbWFnZVRyYW5z
ZmVyU2Vzc2lvblZUOworY2xhc3MgUGl4ZWxCdWZmZXJDb25mb3JtZXJDVjsKKworY2xhc3MgRGlz
cGxheUNhcHR1cmVTb3VyY2VDb2NvYSBmaW5hbCA6IHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNl
IHsKK3B1YmxpYzoKKyAgICB1c2luZyBEaXNwbGF5RnJhbWVUeXBlID0gc3RkOjp2YXJpYW50PFJl
ZlB0cjxOYXRpdmVJbWFnZT4sIFJldGFpblB0cjxJT1N1cmZhY2VSZWY+LCBSZXRhaW5QdHI8Q01T
YW1wbGVCdWZmZXJSZWY+PjsKKworICAgIGNsYXNzIENhcHR1cmVyIDogcHVibGljIExvZ2dlckhl
bHBlciB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIHB1YmxpYzoKKwor
ICAgICAgICBjbGFzcyBPYnNlcnZlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxPYnNlcnZlcj4g
eworICAgICAgICBwdWJsaWM6CisgICAgICAgICAgICB2aXJ0dWFsIH5PYnNlcnZlcigpOworCisg
ICAgICAgICAgICAvLyBDYXB0dXJlciBzdGF0ZSBjaGFuZ2VzLgorICAgICAgICAgICAgdmlydHVh
bCB2b2lkIGNhcHR1cmVySXNSdW5uaW5nQ2hhbmdlZChib29sKSB7IH0KKyAgICAgICAgfTsKKwor
ICAgICAgICB2aXJ0dWFsIH5DYXB0dXJlcigpID0gZGVmYXVsdDsKKworICAgICAgICB2aXJ0dWFs
IGJvb2wgc3RhcnQoKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgPSAwOworICAg
ICAgICB2aXJ0dWFsIERpc3BsYXlGcmFtZVR5cGUgZ2VuZXJhdGVGcmFtZSgpID0gMDsKKyAgICAg
ICAgdmlydHVhbCBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIGRldmljZVR5cGUoKSBjb25zdCA9
IDA7CisgICAgICAgIHZpcnR1YWwgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpEaXNwbGF5
U3VyZmFjZVR5cGUgc3VyZmFjZVR5cGUoKSBjb25zdCA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBjb21taXRDb25maWd1cmF0aW9uKGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYp
ID0gMDsKKyAgICAgICAgdmlydHVhbCBJbnRTaXplIGludHJpbnNpY1NpemUoKSBjb25zdCA9IDA7
CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHNldExvZ2dlcihjb25zdCBMb2dnZXImLCBjb25zdCB2
b2lkKik7CisgICAgICAgIGNvbnN0IExvZ2dlciogbG9nZ2VyUHRyKCkgY29uc3QgeyByZXR1cm4g
bV9sb2dnZXIuZ2V0KCk7IH0KKyAgICAgICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBm
aW5hbCB7IEFTU0VSVChtX2xvZ2dlcik7IHJldHVybiAqbV9sb2dnZXIuZ2V0KCk7IH0KKyAgICAg
ICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9n
SWRlbnRpZmllcjsgfQorICAgICAgICBXVEZMb2dDaGFubmVsJiBsb2dDaGFubmVsKCkgY29uc3Qg
ZmluYWw7CisKKyAgICAgICAgdm9pZCBzZXRPYnNlcnZlcihPYnNlcnZlciopOworCisgICAgcHJv
dGVjdGVkOgorICAgICAgICB2b2lkIGNhcHR1cmVySXNSdW5uaW5nQ2hhbmdlZChib29sKTsKKwor
ICAgIHByaXZhdGU6CisgICAgICAgIFdlYWtQdHI8T2JzZXJ2ZXI+IG1fb2JzZXJ2ZXI7CisgICAg
ICAgIFJlZlB0cjxjb25zdCBMb2dnZXI+IG1fbG9nZ2VyOworICAgICAgICBjb25zdCB2b2lkKiBt
X2xvZ0lkZW50aWZpZXI7CisgICAgfTsKKworICAgIHN0YXRpYyBDYXB0dXJlU291cmNlT3JFcnJv
ciBjcmVhdGUoY29uc3QgQ2FwdHVyZURldmljZSYsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqKTsK
KyAgICBzdGF0aWMgQ2FwdHVyZVNvdXJjZU9yRXJyb3IgY3JlYXRlKEV4cGVjdGVkPFVuaXF1ZVJl
ZjxDYXB0dXJlcj4sIFN0cmluZz4mJiwgY29uc3QgQ2FwdHVyZURldmljZSYsIGNvbnN0IE1lZGlh
Q29uc3RyYWludHMqKTsKKworICAgIFNlY29uZHMgZWxhcHNlZFRpbWUoKTsKKyAgICB2b2lkIHVw
ZGF0ZUZyYW1lU2l6ZSgpOworCitwcml2YXRlOgorICAgIERpc3BsYXlDYXB0dXJlU291cmNlQ29j
b2EoVW5pcXVlUmVmPENhcHR1cmVyPiYmLCBTdHJpbmcmJiBuYW1lKTsKKyAgICB2aXJ0dWFsIH5E
aXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hKCk7CisKKyAgICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0
YSgpIGZpbmFsOworICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKKyAgICB2b2lk
IHNldHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNldDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6
OkZsYWc+KSBmaW5hbDsKKyAgICBib29sIGlzQ2FwdHVyZVNvdXJjZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIHRydWU7IH0KKyAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVz
JiBjYXBhYmlsaXRpZXMoKSBmaW5hbDsKKyAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3MmIHNldHRpbmdzKCkgZmluYWw7CisgICAgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSBk
ZXZpY2VUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9jYXB0dXJlci0+ZGV2aWNlVHlwZSgpOyB9Cisg
ICAgdm9pZCBjb21taXRDb25maWd1cmF0aW9uKCkgZmluYWwgeyBtX2NhcHR1cmVyLT5jb21taXRD
b25maWd1cmF0aW9uKHNldHRpbmdzKCkpOyB9CisKKyAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05h
bWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYSI7IH0K
KyAgICB2b2lkIHNldExvZ2dlcihjb25zdCBMb2dnZXImLCBjb25zdCB2b2lkKikgZmluYWw7CisK
KyAgICB2b2lkIGVtaXRGcmFtZSgpOworCisgICAgVW5pcXVlUmVmPENhcHR1cmVyPiBtX2NhcHR1
cmVyOworICAgIHN0ZDo6b3B0aW9uYWw8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4g
bV9jYXBhYmlsaXRpZXM7CisgICAgc3RkOjpvcHRpb25hbDxSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3M+IG1fY3VycmVudFNldHRpbmdzOworICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0
ZWRDb25zdHJhaW50cyBtX3N1cHBvcnRlZENvbnN0cmFpbnRzOworCisgICAgTW9ub3RvbmljVGlt
ZSBtX3N0YXJ0VGltZSB7IE1vbm90b25pY1RpbWU6Om5hbigpIH07CisgICAgU2Vjb25kcyBtX2Vs
YXBzZWRUaW1lIHsgMF9zIH07CisKKyAgICBSdW5Mb29wOjpUaW1lcjxEaXNwbGF5Q2FwdHVyZVNv
dXJjZUNvY29hPiBtX3RpbWVyOworCisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlVHJhbnNmZXJT
ZXNzaW9uVlQ+IG1faW1hZ2VUcmFuc2ZlclNlc3Npb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShDT0NP
QSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9S
ZXBsYXlLaXRDYXB0dXJlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9pb3MvUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdlZWU2NjNkNzdl
ZGExZTFiZjc0MGFmZmYyODJmZWI5ZTY2ZTAxMDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZS5o
CkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRG
T1JNKElPUykKKworI2luY2x1ZGUgIkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuaCIKKyNpbmNs
dWRlICJUaW1lci5oIgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFTUyBS
UFNjcmVlblJlY29yZGVyOworT0JKQ19DTEFTUyBXZWJDb3JlUmVwbGF5S2l0U2NyZWVuUmVjb3Jk
ZXJIZWxwZXI7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVwbGF5S2l0Q2FwdHVy
ZVNvdXJjZSBmaW5hbCA6IHB1YmxpYyBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpDYXB0dXJl
ciwgcHVibGljIENhbk1ha2VXZWFrUHRyPFJlcGxheUtpdENhcHR1cmVTb3VyY2U+IHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgRXhwZWN0ZWQ8VW5pcXVlUmVmPERpc3BsYXlDYXB0dXJlU291cmNlQ29j
b2E6OkNhcHR1cmVyPiwgU3RyaW5nPiBjcmVhdGUoY29uc3QgU3RyaW5nJik7CisKKyAgICBSZXBs
YXlLaXRDYXB0dXJlU291cmNlKCk7CisgICAgdmlydHVhbCB+UmVwbGF5S2l0Q2FwdHVyZVNvdXJj
ZSgpOworCisgICAgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKTsKKworICAgIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IHNjcmVlbkNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVu
dElEKGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyB2b2lkIHNjcmVlbkNhcHR1cmVEZXZpY2Vz
KFZlY3RvcjxDYXB0dXJlRGV2aWNlPiYpOworCisgICAgdm9pZCBjYXB0dXJlU3RhdGVEaWRDaGFu
Z2UoKTsKKworcHJpdmF0ZToKKworICAgIC8vIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OkNh
cHR1cmVyCisgICAgYm9vbCBzdGFydCgpIGZpbmFsOworICAgIHZvaWQgc3RvcCgpIGZpbmFsOwor
ICAgIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OkRpc3BsYXlGcmFtZVR5cGUgZ2VuZXJhdGVG
cmFtZSgpIGZpbmFsOworICAgIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgZGV2aWNlVHlwZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNjcmVlbjsg
fQorICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RGlzcGxheVN1cmZhY2VUeXBlIHN1
cmZhY2VUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzOjpEaXNwbGF5U3VyZmFjZVR5cGU6Ok1vbml0b3I7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY29t
bWl0Q29uZmlndXJhdGlvbihjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmKSB7IH0K
KyAgICB2aXJ0dWFsIEludFNpemUgaW50cmluc2ljU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW50
cmluc2ljU2l6ZTsgfQorCisgICAgLy8gTG9nZ2VySGVscGVyCisgICAgY29uc3QgY2hhciogbG9n
Q2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlJlcGxheUtpdENhcHR1cmVTb3VyY2Ui
OyB9CisKKyAgICB2b2lkIHNjcmVlblJlY29yZGVyRGlkT3V0cHV0VmlkZW9TYW1wbGUoUmV0YWlu
UHRyPENNU2FtcGxlQnVmZmVyUmVmPiYmKTsKKyAgICB2b2lkIHN0YXJ0Q2FwdHVyZVdhdGNoZG9n
VGltZXIoKTsKKyAgICB2b2lkIHZlcmlmeUNhcHR1cmVJc0FjdGl2ZSgpOworCisgICAgUmV0YWlu
UHRyPENNU2FtcGxlQnVmZmVyUmVmPiBtX2N1cnJlbnRGcmFtZTsKKyAgICBSZXRhaW5QdHI8UlBT
Y3JlZW5SZWNvcmRlcj4gbV9zY3JlZW5SZWNvcmRlcjsKKyAgICBSZXRhaW5QdHI8V2ViQ29yZVJl
cGxheUtpdFNjcmVlblJlY29yZGVySGVscGVyPiBtX3JlY29yZGVySGVscGVyOworCisgICAgVGlt
ZXIgbV9jYXB0dXJlV2F0Y2hkb2dUaW1lcjsKKyAgICB1aW50NjRfdCBtX2ZyYW1lQ291bnQgeyAw
IH07CisgICAgdWludDY0X3QgbV9sYXN0RnJhbWVDb3VudCB7IDAgfTsKKyAgICBJbnRTaXplIG1f
aW50cmluc2ljU2l6ZTsKKyAgICBib29sIG1faXNSdW5uaW5nIHsgZmFsc2UgfTsKKyAgICBib29s
IG1faW50ZXJydXB0ZWQgeyBmYWxzZSB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oSU9TKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL1JlcGxheUtpdENh
cHR1cmVTb3VyY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3Mv
UmVwbGF5S2l0Q2FwdHVyZVNvdXJjZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NWY2MzViZjJjZjhlYTRjMWZi
ZWZlMWY4MmE5MzhiYjVlYzgzMjYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL1JlcGxheUtpdENhcHR1cmVTb3VyY2UubW0KQEAgLTAs
MCArMSwyODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZS5o
IgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oSU9TKQorCisjaW1wb3J0
ICJMb2dnaW5nLmgiCisjaW1wb3J0ICJSZWFsdGltZVZpZGVvVXRpbGl0aWVzLmgiCisjaW1wb3J0
IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9y
dCA8d3RmL1VVSUQuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNp
b24uaD4KKworI2ltcG9ydCA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CisjaW1wb3J0IDxw
YWwvaW9zL1JlcGxheUtpdFNvZnRMaW5rLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
QGludGVyZmFjZSBXZWJDb3JlUmVwbGF5S2l0U2NyZWVuUmVjb3JkZXJIZWxwZXIgOiBOU09iamVj
dCB7CisgICAgV2Vha1B0cjxSZXBsYXlLaXRDYXB0dXJlU291cmNlPiBfY2FsbGJhY2s7Cit9CisK
Ky0gKGluc3RhbmNldHlwZSlpbml0V2l0aENhbGxiYWNrOihXZWFrUHRyPFJlcGxheUtpdENhcHR1
cmVTb3VyY2U+JiYpY2FsbGJhY2s7CistICh2b2lkKWRpc2Nvbm5lY3Q7CistICh2b2lkKW9ic2Vy
dmVWYWx1ZUZvcktleVBhdGg6a2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTlNE
aWN0aW9uYXJ5KiljaGFuZ2UgY29udGV4dDoodm9pZCopY29udGV4dDsKK0BlbmQKKworQGltcGxl
bWVudGF0aW9uIFdlYkNvcmVSZXBsYXlLaXRTY3JlZW5SZWNvcmRlckhlbHBlcgorLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoQ2FsbGJhY2s6KFdlYWtQdHI8UmVwbGF5S2l0Q2FwdHVyZVNvdXJjZT4m
JiljYWxsYmFjaworeworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQor
ICAgICAgICByZXR1cm4gc2VsZjsKKworICAgIF9jYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
OworICAgIFtbUEFMOjpnZXRSUFNjcmVlblJlY29yZGVyQ2xhc3MoKSBzaGFyZWRSZWNvcmRlcl0g
YWRkT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOkAicmVjb3JkaW5nIiBvcHRpb25zOk5TS2V5VmFs
dWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDoodm9pZCAqKW5pbF07CisKKyAgICByZXR1cm4g
c2VsZjsKK30KKworLSAodm9pZClkaXNjb25uZWN0Cit7CisgICAgX2NhbGxiYWNrID0gbnVsbHB0
cjsKKyAgICBbW1BBTDo6Z2V0UlBTY3JlZW5SZWNvcmRlckNsYXNzKCkgc2hhcmVkUmVjb3JkZXJd
IHJlbW92ZU9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAInJlY29yZGluZyJdOworfQorCistICh2
b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6a2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNo
YW5nZTooTlNEaWN0aW9uYXJ5KiljaGFuZ2UgY29udGV4dDoodm9pZCopY29udGV4dAoreworICAg
IFVOVVNFRF9QQVJBTShvYmplY3QpOworICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKKworICAg
IGlmICghX2NhbGxiYWNrKQorICAgICAgICByZXR1cm47CisKKyAgICBpZCBuZXdWYWx1ZSA9IFtj
aGFuZ2UgdmFsdWVGb3JLZXk6TlNLZXlWYWx1ZUNoYW5nZU5ld0tleV07CisgICAgYm9vbCB3aWxs
Q2hhbmdlID0gW1tjaGFuZ2UgdmFsdWVGb3JLZXk6TlNLZXlWYWx1ZUNoYW5nZU5vdGlmaWNhdGlv
bklzUHJpb3JLZXldIGJvb2xWYWx1ZV07CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAg
ICBpZiAoX2NhbGxiYWNrLT5sb2dnZXJQdHIoKSkgeworICAgICAgICBhdXRvIGlkZW50aWZpZXIg
PSBMb2dnZXI6OkxvZ1NpdGVJZGVudGlmaWVyKCJSZXBsYXlLaXRDYXB0dXJlU291cmNlIiwgIm9i
c2VydmVWYWx1ZUZvcktleVBhdGgiLCBfY2FsbGJhY2stPmxvZ0lkZW50aWZpZXIoKSk7CisgICAg
ICAgIFJldGFpblB0cjxOU1N0cmluZz4gdmFsdWVTdHJpbmcgPSBhZG9wdE5TKFtbTlNTdHJpbmcg
YWxsb2NdIGluaXRXaXRoRm9ybWF0OkAiJUAiLCBuZXdWYWx1ZV0pOworICAgICAgICBfY2FsbGJh
Y2stPmxvZ2dlcigpLmxvZ0Fsd2F5cyhfY2FsbGJhY2stPmxvZ0NoYW5uZWwoKSwgaWRlbnRpZmll
ciwgd2lsbENoYW5nZSA/ICJ3aWxsIiA6ICJkaWQiLCAiIGNoYW5nZSAnIiwgW2tleVBhdGggVVRG
OFN0cmluZ10sICInIHRvICIsIFt2YWx1ZVN0cmluZy5nZXQoKSBVVEY4U3RyaW5nXSk7CisgICAg
fQorI2VuZGlmCisKKyAgICBpZiAod2lsbENoYW5nZSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
aWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAInJlY29yZGluZyJdKQorICAgICAgICBfY2Fs
bGJhY2stPmNhcHR1cmVTdGF0ZURpZENoYW5nZSgpOworfQorQGVuZAorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2Jvb2wgUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZTo6aXNBdmFpbGFibGUoKQorewor
ICAgIHJldHVybiBbUEFMOjpnZXRSUFNjcmVlblJlY29yZGVyQ2xhc3MoKSBzaGFyZWRSZWNvcmRl
cl0uaXNBdmFpbGFibGU7Cit9CisKK0V4cGVjdGVkPFVuaXF1ZVJlZjxEaXNwbGF5Q2FwdHVyZVNv
dXJjZUNvY29hOjpDYXB0dXJlcj4sIFN0cmluZz4gUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZTo6Y3Jl
YXRlKGNvbnN0IFN0cmluZyYpCit7CisgICAgaWYgKCFpc0F2YWlsYWJsZSgpKQorICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIlNjcmVlbiBjYXB0dXJlIHVuYXZhaWxhYmxlIl9zKTsKKwor
ICAgIHJldHVybiBVbmlxdWVSZWY8RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Q2FwdHVyZXI+
KG1ha2VVbmlxdWVSZWY8UmVwbGF5S2l0Q2FwdHVyZVNvdXJjZT4oKSk7Cit9CisKK1JlcGxheUtp
dENhcHR1cmVTb3VyY2U6OlJlcGxheUtpdENhcHR1cmVTb3VyY2UoKQorICAgIDogbV9jYXB0dXJl
V2F0Y2hkb2dUaW1lcigqdGhpcywgJlJlcGxheUtpdENhcHR1cmVTb3VyY2U6OnZlcmlmeUNhcHR1
cmVJc0FjdGl2ZSkKK3sKK30KKworUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZTo6flJlcGxheUtpdENh
cHR1cmVTb3VyY2UoKQoreworICAgIFttX3JlY29yZGVySGVscGVyIGRpc2Nvbm5lY3RdOworICAg
IHN0b3AoKTsKKyAgICBtX2N1cnJlbnRGcmFtZSA9IG51bGxwdHI7Cit9CisKK2Jvb2wgUmVwbGF5
S2l0Q2FwdHVyZVNvdXJjZTo6c3RhcnQoKQoreworICAgIEFTU0VSVChpc0F2YWlsYWJsZSgpKTsK
KworICAgIGF1dG8gaWRlbnRpZmllciA9IExPR0lERU5USUZJRVI7CisgICAgQUxXQVlTX0xPR19J
Rihsb2dnZXJQdHIoKSwgaWRlbnRpZmllcik7CisKKyAgICBhdXRvICpzY3JlZW5SZWNvcmRlciA9
IFtQQUw6OmdldFJQU2NyZWVuUmVjb3JkZXJDbGFzcygpIHNoYXJlZFJlY29yZGVyXTsKKyAgICBp
ZiAoc2NyZWVuUmVjb3JkZXIucmVjb3JkaW5nKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg
IC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgY29uY3VycmVudCBhdWRpbyBjYXB0dXJlLgorICAg
IFtzY3JlZW5SZWNvcmRlciBzZXRNaWNyb3Bob25lRW5hYmxlZDpOT107CisKKyAgICBpZiAoIW1f
cmVjb3JkZXJIZWxwZXIpCisgICAgICAgIG1fcmVjb3JkZXJIZWxwZXIgPSAoW1tXZWJDb3JlUmVw
bGF5S2l0U2NyZWVuUmVjb3JkZXJIZWxwZXIgYWxsb2NdIGluaXRXaXRoQ2FsbGJhY2s6dGhpc10p
OworCisgICAgYXV0byBjYXB0dXJlSGFuZGxlciA9IG1ha2VCbG9ja1B0cihbdGhpcywgd2Vha1Ro
aXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgaWRlbnRpZmllcl0oQ01TYW1wbGVCdWZmZXJSZWYgX05v
bm51bGwgc2FtcGxlQnVmZmVyLCBSUFNhbXBsZUJ1ZmZlclR5cGUgYnVmZmVyVHlwZSwgTlNFcnJv
ciAqIF9OdWxsYWJsZSBlcnJvcikgeworCisgICAgICAgIGlmIChidWZmZXJUeXBlICE9IFJQU2Ft
cGxlQnVmZmVyVHlwZVZpZGVvKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIEVSUk9S
X0xPR19JRihlcnJvciAmJiBsb2dnZXJQdHIoKSwgaWRlbnRpZmllciwgInN0YXJ0Q2FwdHVyZVdp
dGhIYW5kbGVyIGZhaWxlZCAiLCBbZXJyb3IgbG9jYWxpemVkRGVzY3JpcHRpb25dLlVURjhTdHJp
bmcpOworCisgICAgICAgICsrbV9mcmFtZUNvdW50OworCisgICAgICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbd2Vha1RoaXMsIHNhbXBsZUJ1ZmZlciA9IHJldGFpblB0cihzYW1wbGVCdWZm
ZXIpXSgpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHdlYWtUaGlzLT5zY3JlZW5SZWNvcmRlckRpZE91
dHB1dFZpZGVvU2FtcGxlKFdURk1vdmUoc2FtcGxlQnVmZmVyKSk7CisgICAgICAgIH0pOworICAg
IH0pOworCisgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihbdGhpcywg
d2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgaWRlbnRpZmllcl0oTlNFcnJvciAqIF9OdWxs
YWJsZSBlcnJvcikgeworICAgICAgICAvLyBGSVhNRTogSXQgc2hvdWxkIGJlIHNhZmUgdG8gY2Fs
bCBgdmlkZW9TYW1wbGVBdmFpbGFibGVgIGZyb20gYW55IHRocmVhZC4gVGVzdCB0aGlzIGFuZCBn
ZXQgcmlkIG9mIHRoaXMgbWFpbiB0aHJlYWQgaG9wLgorICAgICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW3RoaXMsIHdlYWtUaGlzLCBlcnJvciA9IHJldGFpblB0cihlcnJvciksIGlkZW50
aWZpZXJdKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICFlcnJvcikK
KyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIEVSUk9SX0xPR19JRihsb2dn
ZXJQdHIoKSwgaWRlbnRpZmllciwgImNvbXBsZXRpb25IYW5kbGVyIGZhaWxlZCAiLCBbZXJyb3Ig
bG9jYWxpemVkRGVzY3JpcHRpb25dLlVURjhTdHJpbmcpOworICAgICAgICAgICAgd2Vha1RoaXMt
PnN0b3AoKTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBbc2NyZWVuUmVjb3JkZXIgc3Rh
cnRDYXB0dXJlV2l0aEhhbmRsZXI6Y2FwdHVyZUhhbmRsZXIuZ2V0KCkgY29tcGxldGlvbkhhbmRs
ZXI6Y29tcGxldGlvbkhhbmRsZXIuZ2V0KCldOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Zv
aWQgUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZTo6c2NyZWVuUmVjb3JkZXJEaWRPdXRwdXRWaWRlb1Nh
bXBsZShSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+JiYgc2FtcGxlQnVmZmVyKQoreworICAg
IG1fY3VycmVudEZyYW1lID0gc2FtcGxlQnVmZmVyLmdldCgpOworICAgIG1faW50cmluc2ljU2l6
ZSA9IEludFNpemUoUEFMOjpDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25HZXRQcmVzZW50YXRpb25E
aW1lbnNpb25zKFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRGb3JtYXREZXNjcmlwdGlvbihtX2N1cnJl
bnRGcmFtZS5nZXQoKSksIHRydWUsIHRydWUpKTsKK30KKwordm9pZCBSZXBsYXlLaXRDYXB0dXJl
U291cmNlOjpjYXB0dXJlU3RhdGVEaWRDaGFuZ2UoKQoreworICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgaWRlbnRpZmllciA9
IExPR0lERU5USUZJRVJdKCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgYm9vbCBpc1JlY29yZGluZyA9ICEhW1tQQUw6Omdl
dFJQU2NyZWVuUmVjb3JkZXJDbGFzcygpIHNoYXJlZFJlY29yZGVyXSBpc1JlY29yZGluZ107Cisg
ICAgICAgIGlmIChtX2lzUnVubmluZyA9PSAoaXNSZWNvcmRpbmcgJiYgIW1faW50ZXJydXB0ZWQp
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1faXNSdW5uaW5nID0gaXNSZWNvcmRp
bmcgJiYgIW1faW50ZXJydXB0ZWQ7CisgICAgICAgIEFMV0FZU19MT0dfSUYobG9nZ2VyUHRyKCks
IGlkZW50aWZpZXIsIG1faXNSdW5uaW5nKTsKKyAgICAgICAgY2FwdHVyZXJJc1J1bm5pbmdDaGFu
Z2VkKG1faXNSdW5uaW5nKTsKKyAgICB9KTsKK30KKwordm9pZCBSZXBsYXlLaXRDYXB0dXJlU291
cmNlOjpzdG9wKCkKK3sKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBMT0dJREVOVElGSUVSOworICAg
IEFMV0FZU19MT0dfSUYobG9nZ2VyUHRyKCksIGlkZW50aWZpZXIpOworICAgIG1fY2FwdHVyZVdh
dGNoZG9nVGltZXIuc3RvcCgpOworICAgIG1faW50ZXJydXB0ZWQgPSBmYWxzZTsKKyAgICBtX2lz
UnVubmluZyA9IGZhbHNlOworCisgICAgYXV0byAqc2NyZWVuUmVjb3JkZXIgPSBbUEFMOjpnZXRS
UFNjcmVlblJlY29yZGVyQ2xhc3MoKSBzaGFyZWRSZWNvcmRlcl07CisgICAgaWYgKHNjcmVlblJl
Y29yZGVyLnJlY29yZGluZykgeworICAgICAgICBbc2NyZWVuUmVjb3JkZXIgc3RvcENhcHR1cmVX
aXRoSGFuZGxlcjpeKE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IpIHsKKyAgICAgICAgICAgIEVS
Uk9SX0xPR19JRihlcnJvciAmJiBsb2dnZXJQdHIoKSwgaWRlbnRpZmllciwgInN0YXJ0Q2FwdHVy
ZVdpdGhIYW5kbGVyIGZhaWxlZCAiLCBbZXJyb3IgbG9jYWxpemVkRGVzY3JpcHRpb25dLlVURjhT
dHJpbmcpOworICAgICAgICB9XTsKKyAgICB9Cit9CisKK0Rpc3BsYXlDYXB0dXJlU291cmNlQ29j
b2E6OkRpc3BsYXlGcmFtZVR5cGUgUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZTo6Z2VuZXJhdGVGcmFt
ZSgpCit7CisgICAgcmV0dXJuIG1fY3VycmVudEZyYW1lOworfQorCit2b2lkIFJlcGxheUtpdENh
cHR1cmVTb3VyY2U6OnZlcmlmeUNhcHR1cmVJc0FjdGl2ZSgpCit7CisgICAgQVNTRVJUKG1faXNS
dW5uaW5nIHx8IG1faW50ZXJydXB0ZWQpOworICAgIGF1dG8gaWRlbnRpZmllciA9IExPR0lERU5U
SUZJRVI7CisgICAgaWYgKG1fbGFzdEZyYW1lQ291bnQgIT0gbV9mcmFtZUNvdW50KSB7CisgICAg
ICAgIG1fbGFzdEZyYW1lQ291bnQgPSBtX2ZyYW1lQ291bnQ7CisgICAgICAgIGlmIChtX2ludGVy
cnVwdGVkKSB7CisgICAgICAgICAgICBBTFdBWVNfTE9HX0lGKGxvZ2dlclB0cigpLCBpZGVudGlm
aWVyLCAiZnJhbWUgcmVjZWl2ZWQgYWZ0ZXIgaW50ZXJydXB0aW9uLCB1bm11dGluZyIpOworICAg
ICAgICAgICAgbV9pbnRlcnJ1cHRlZCA9IGZhbHNlOworICAgICAgICAgICAgY2FwdHVyZVN0YXRl
RGlkQ2hhbmdlKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFM
V0FZU19MT0dfSUYobG9nZ2VyUHRyKCksIGlkZW50aWZpZXIsICJubyBmcmFtZSByZWNlaXZlZCBp
biAiLCBzdGF0aWNfY2FzdDxpbnQ+KG1fY2FwdHVyZVdhdGNoZG9nVGltZXIucmVwZWF0SW50ZXJ2
YWwoKS52YWx1ZSgpKSwgIiBzZWNvbmRzLCBtdXRpbmciKTsKKyAgICBtX2ludGVycnVwdGVkID0g
dHJ1ZTsKKyAgICBjYXB0dXJlU3RhdGVEaWRDaGFuZ2UoKTsKK30KKwordm9pZCBSZXBsYXlLaXRD
YXB0dXJlU291cmNlOjpzdGFydENhcHR1cmVXYXRjaGRvZ1RpbWVyKCkKK3sKKyAgICBzdGF0aWMg
Y29uc3RleHByIFNlY29uZHMgdmVyaWZ5Q2FwdHVyZUludGVydmFsID0gMl9zOworICAgIGlmICht
X2NhcHR1cmVXYXRjaGRvZ1RpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fY2FwdHVyZVdhdGNoZG9nVGltZXIuc3RhcnRSZXBlYXRpbmcodmVyaWZ5Q2FwdHVyZUludGVy
dmFsKTsKKyAgICBtX2xhc3RGcmFtZUNvdW50ID0gbV9mcmFtZUNvdW50OworfQorCitzdGF0aWMg
U3RyaW5nIHNjcmVlbkRldmljZVVVSUQoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxT
dHJpbmc+IHNjcmVlbklEID0gY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOworICAgIHJldHVy
biBzY3JlZW5JRDsKK30KKworc3RhdGljIENhcHR1cmVEZXZpY2UmIHNjcmVlbkRldmljZSgpCit7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPENhcHR1cmVEZXZpY2U+IGRldmljZSA9IHsgc2Ny
ZWVuRGV2aWNlVVVJRCgpLCBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW4sIG1ha2VT
dHJpbmcoIlNjcmVlbiAxIiksIGVtcHR5U3RyaW5nKCksIHRydWUgfTsKKyAgICByZXR1cm4gZGV2
aWNlOworfQorCitzdGQ6Om9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IFJlcGxheUtpdENhcHR1cmVT
b3VyY2U6OnNjcmVlbkNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKGNvbnN0IFN0cmluZyYg
ZGlzcGxheUlEKQoreworICAgIGlmICghaXNBdmFpbGFibGUoKSkgeworICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihXZWJSVEMsICJSZXBsYXlLaXRDYXB0dXJlU291cmNlOjpzY3JlZW5DYXB0dXJl
RGV2aWNlV2l0aFBlcnNpc3RlbnRJRDogc2NyZWVuIGNhcHR1cmUgdW5hdmFpbGFibGUiKTsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAgICBpZiAoZGlzcGxheUlEICE9
IHNjcmVlbkRldmljZVVVSUQoKSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihXZWJSVEMs
ICJSZXBsYXlLaXRDYXB0dXJlU291cmNlOjpzY3JlZW5DYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3Rl
bnRJRDogaW52YWxpZCBkaXNwbGF5IElEIik7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisgICAgfQorCisgICAgcmV0dXJuIHNjcmVlbkRldmljZSgpOworfQorCit2b2lkIFJlcGxheUtp
dENhcHR1cmVTb3VyY2U6OnNjcmVlbkNhcHR1cmVEZXZpY2VzKFZlY3RvcjxDYXB0dXJlRGV2aWNl
PiYgZGlzcGxheXMpCit7CisgICAgaWYgKGlzQXZhaWxhYmxlKCkpCisgICAgICAgIGRpc3BsYXlz
LmFwcGVuZChzY3JlZW5EZXZpY2UoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKElPUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR0Rpc3BsYXlTdHJl
YW1DYXB0dXJlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9DR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlLmNwcAppbmRleCA1YmViOWZhMjE5OTU3
YWZmZGJlM2JlZjdiMDY3MDVlMjVhMzdkYTg2Li5mM2JiYjdjNThiM2YzZmU1NDA4YWYwYTIxMzhk
MmQwZjgyMDIxZTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3Vy
Y2UuY3BwCkBAIC03MSw5ICs3MSw5IEBAIHZvaWQgQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJj
ZTo6c3RvcCgpCiAgICAgbV9pc1J1bm5pbmcgPSBmYWxzZTsKIH0KIAotRGlzcGxheUNhcHR1cmVT
b3VyY2VNYWM6OkRpc3BsYXlGcmFtZVR5cGUgQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6
Z2VuZXJhdGVGcmFtZSgpCitEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpEaXNwbGF5RnJhbWVU
eXBlIENHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2U6OmdlbmVyYXRlRnJhbWUoKQogewotICAg
IHJldHVybiBSZXRhaW5QdHIgeyBtX2N1cnJlbnRGcmFtZS5pb1N1cmZhY2UoKSB9OworICAgIHJl
dHVybiBtX2N1cnJlbnRGcmFtZTsKIH0KIAogYm9vbCBDR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291
cmNlOjpzdGFydERpc3BsYXlTdHJlYW0oKQpAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgQ0dEaXNw
bGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6ZGlzcGxheVJlY29uZmlndXJhdGlvbkNhbGxCYWNrKENH
RGlyZWN0RGlzcGxhCiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Q0dEaXNwbGF5U3RyZWFtQ2Fw
dHVyZVNvdXJjZSAqPih1c2VySW5mbyktPmRpc3BsYXlXYXNSZWNvbmZpZ3VyZWQoZGlzcGxheSwg
ZmxhZ3MpOwogfQogCi12b2lkIENHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2U6Om5ld0ZyYW1l
KENHRGlzcGxheVN0cmVhbUZyYW1lU3RhdHVzIHN0YXR1cywgRGlzcGxheVN1cmZhY2UmJiBuZXdG
cmFtZSkKK3ZvaWQgQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6bmV3RnJhbWUoQ0dEaXNw
bGF5U3RyZWFtRnJhbWVTdGF0dXMgc3RhdHVzLCBSZXRhaW5QdHI8SU9TdXJmYWNlUmVmPiYmIG5l
d0ZyYW1lKQogewogICAgIHN3aXRjaCAoc3RhdHVzKSB7CiAgICAgY2FzZSBrQ0dEaXNwbGF5U3Ry
ZWFtRnJhbWVTdGF0dXNGcmFtZUNvbXBsZXRlOgpAQCAtMTcxLDcgKzE3MSw3IEBAIENHRGlzcGxh
eVN0cmVhbUZyYW1lQXZhaWxhYmxlSGFuZGxlciBDR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNl
OjpmcmFtZUF2YWlsYWJsCiAgICAgICAgIGlmICghcmVjdHMgfHwgIWNvdW50KQogICAgICAgICAg
ICAgcmV0dXJuOwogCi0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMs
IHN0YXR1cywgZnJhbWUgPSBEaXNwbGF5U3VyZmFjZSB7IGZyYW1lU3VyZmFjZSB9XSgpIG11dGFi
bGUgeworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzLCBzdGF0dXMs
IGZyYW1lID0gcmV0YWluUHRyKGZyYW1lU3VyZmFjZSldKCkgbXV0YWJsZSB7CiAgICAgICAgICAg
ICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIHdl
YWtUaGlzLT5uZXdGcmFtZShzdGF0dXMsIFdURk1vdmUoZnJhbWUpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR0Rpc3BsYXlTdHJlYW1DYXB0
dXJlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dE
aXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZS5oCmluZGV4IGExOTAzOGRjYWFkNGExZmI4MzI1Nzgw
Njk1NmFkMDQ1MTFjZjJjNjQuLjVhMTMxNjZiYTRmM2VjYWZhOGJlNzVlNDczMzU4MDBiNDllMWUz
ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9D
R0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0NHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2UuaApAQCAtMjcs
OCArMjcsNyBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oTUFDKQog
Ci0jaW5jbHVkZSAiRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMuaCIKLSNpbmNsdWRlICJJT1N1cmZh
Y2UuaCIKKyNpbmNsdWRlICJEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmgiCiAjaW5jbHVkZSA8
Q29yZUdyYXBoaWNzL0NHRGlzcGxheUNvbmZpZ3VyYXRpb24uaD4KICNpbmNsdWRlIDxDb3JlR3Jh
cGhpY3MvQ0dEaXNwbGF5U3RyZWFtLmg+CiAjaW5jbHVkZSA8d3RmL0Jsb2NrUHRyLmg+CkBAIC00
MCwxMCArMzksMTAgQEAgdHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVCdWZmZXIgKkNNU2Ft
cGxlQnVmZmVyUmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENHRGlzcGxheVN0
cmVhbUNhcHR1cmVTb3VyY2UgOiBwdWJsaWMgRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OkNhcHR1
cmVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZT4g
eworY2xhc3MgQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZSA6IHB1YmxpYyBEaXNwbGF5Q2Fw
dHVyZVNvdXJjZUNvY29hOjpDYXB0dXJlciwgcHVibGljIENhbk1ha2VXZWFrUHRyPENHRGlzcGxh
eVN0cmVhbUNhcHR1cmVTb3VyY2U+IHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBDR0Rpc3BsYXlT
dHJlYW1DYXB0dXJlU291cmNlKCkgPSBkZWZhdWx0OwotICAgIH5DR0Rpc3BsYXlTdHJlYW1DYXB0
dXJlU291cmNlKCk7CisgICAgdmlydHVhbCB+Q0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZSgp
OwogCiBwcm90ZWN0ZWQ6CiAgICAgdXNpbmcgRnJhbWVBdmFpbGFibGVDYWxsYmFjayA9IHZvaWQg
KF4pKENHRGlzcGxheVN0cmVhbUZyYW1lU3RhdHVzLCB1aW50NjRfdCwgSU9TdXJmYWNlUmVmLCBD
R0Rpc3BsYXlTdHJlYW1VcGRhdGVSZWYpOwpAQCAtNjAsNTEgKzU5LDE5IEBAIHByb3RlY3RlZDoK
IHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZGlzcGxheVJlY29uZmlndXJhdGlvbkNhbGxCYWNr
KENHRGlyZWN0RGlzcGxheUlELCBDR0Rpc3BsYXlDaGFuZ2VTdW1tYXJ5RmxhZ3MsIHZvaWQqKTsK
IAotICAgIC8vIERpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpDYXB0dXJlcgorICAgIC8vIERpc3Bs
YXlDYXB0dXJlU291cmNlQ29jb2E6OkNhcHR1cmVyCiAgICAgYm9vbCBzdGFydCgpIGZpbmFsOwog
ICAgIHZvaWQgc3RvcCgpIGZpbmFsOwotICAgIERpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpEaXNw
bGF5RnJhbWVUeXBlIGdlbmVyYXRlRnJhbWUoKSBmaW5hbDsKKyAgICBEaXNwbGF5Q2FwdHVyZVNv
dXJjZUNvY29hOjpEaXNwbGF5RnJhbWVUeXBlIGdlbmVyYXRlRnJhbWUoKSBmaW5hbDsKICAgICB2
b2lkIGNvbW1pdENvbmZpZ3VyYXRpb24oY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdz
JikgZmluYWw7CiAKICAgICB2b2lkIGRpc3BsYXlXYXNSZWNvbmZpZ3VyZWQoQ0dEaXJlY3REaXNw
bGF5SUQsIENHRGlzcGxheUNoYW5nZVN1bW1hcnlGbGFncyk7CiAgICAgYm9vbCBzdGFydERpc3Bs
YXlTdHJlYW0oKTsKICAgICBGcmFtZUF2YWlsYWJsZUNhbGxiYWNrIGZyYW1lQXZhaWxhYmxlSGFu
ZGxlcigpOwogCi0gICAgY2xhc3MgRGlzcGxheVN1cmZhY2UgewotICAgIHB1YmxpYzoKLSAgICAg
ICAgRGlzcGxheVN1cmZhY2UoKSA9IGRlZmF1bHQ7Ci0gICAgICAgIGV4cGxpY2l0IERpc3BsYXlT
dXJmYWNlKElPU3VyZmFjZVJlZiBzdXJmYWNlKQotICAgICAgICAgICAgOiBtX3N1cmZhY2Uoc3Vy
ZmFjZSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG1fc3VyZmFjZSkKLSAgICAgICAgICAg
ICAgICBJT1N1cmZhY2VJbmNyZW1lbnRVc2VDb3VudChtX3N1cmZhY2UuZ2V0KCkpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgfkRpc3BsYXlTdXJmYWNlKCkKLSAgICAgICAgewotICAgICAgICAgICAg
aWYgKG1fc3VyZmFjZSkKLSAgICAgICAgICAgICAgICBJT1N1cmZhY2VEZWNyZW1lbnRVc2VDb3Vu
dChtX3N1cmZhY2UuZ2V0KCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgRGlzcGxheVN1cmZhY2Um
IG9wZXJhdG9yPShJT1N1cmZhY2VSZWYgc3VyZmFjZSkKLSAgICAgICAgewotICAgICAgICAgICAg
aWYgKG1fc3VyZmFjZSkKLSAgICAgICAgICAgICAgICBJT1N1cmZhY2VEZWNyZW1lbnRVc2VDb3Vu
dChtX3N1cmZhY2UuZ2V0KCkpOwotICAgICAgICAgICAgaWYgKHN1cmZhY2UpCi0gICAgICAgICAg
ICAgICAgSU9TdXJmYWNlSW5jcmVtZW50VXNlQ291bnQoc3VyZmFjZSk7Ci0gICAgICAgICAgICBt
X3N1cmZhY2UgPSBzdXJmYWNlOwotICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgICB9
Ci0KLSAgICAgICAgSU9TdXJmYWNlUmVmIGlvU3VyZmFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vy
ZmFjZS5nZXQoKTsgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgUmV0YWluUHRyPElPU3VyZmFj
ZVJlZj4gbV9zdXJmYWNlOwotICAgIH07Ci0KLSAgICB2b2lkIG5ld0ZyYW1lKENHRGlzcGxheVN0
cmVhbUZyYW1lU3RhdHVzLCBEaXNwbGF5U3VyZmFjZSYmKTsKLQotICAgIERpc3BsYXlTdXJmYWNl
IG1fY3VycmVudEZyYW1lOworICAgIHZvaWQgbmV3RnJhbWUoQ0dEaXNwbGF5U3RyZWFtRnJhbWVT
dGF0dXMsIFJldGFpblB0cjxJT1N1cmZhY2VSZWY+JiYpOworCisgICAgUmV0YWluUHRyPElPU3Vy
ZmFjZVJlZj4gbV9jdXJyZW50RnJhbWU7CiAgICAgUmV0YWluUHRyPENHRGlzcGxheVN0cmVhbVJl
Zj4gbV9kaXNwbGF5U3RyZWFtOwogICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX3F1ZXVlX3Q+IG1f
Y2FwdHVyZVF1ZXVlOwogICAgIEJsb2NrUHRyPHZvaWQoQ0dEaXNwbGF5U3RyZWFtRnJhbWVTdGF0
dXMsIHVpbnQ2NF90LCBJT1N1cmZhY2VSZWYsIENHRGlzcGxheVN0cmVhbVVwZGF0ZVJlZik+IG1f
ZnJhbWVBdmFpbGFibGVIYW5kbGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0NHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR0Rpc3BsYXlTdHJlYW1T
Y3JlZW5DYXB0dXJlU291cmNlLmgKaW5kZXggZTE2MDQ0MDc1ZGI0MjljN2MwNjUxODM1Y2E4MzNm
NTliM2RiY2I0Ni4uZWIxYmY3OTNkYTEzYjBmNmU1ZmYwYWIxNWYyMjI2MDM3YzU4NWMwZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NHRGlzcGxh
eVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZS5oCkBA
IC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0dEaXNwbGF5U3Ry
ZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZSBmaW5hbCA6IHB1YmxpYyBDR0Rpc3BsYXlTdHJlYW1DYXB0
dXJlU291cmNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgRXhwZWN0ZWQ8VW5pcXVlUmVmPERpc3Bs
YXlDYXB0dXJlU291cmNlTWFjOjpDYXB0dXJlcj4sIFN0cmluZz4gY3JlYXRlKGNvbnN0IFN0cmlu
ZyYpOworICAgIHN0YXRpYyBFeHBlY3RlZDxVbmlxdWVSZWY8RGlzcGxheUNhcHR1cmVTb3VyY2VD
b2NvYTo6Q2FwdHVyZXI+LCBTdHJpbmc+IGNyZWF0ZShjb25zdCBTdHJpbmcmKTsKIAogICAgIGV4
cGxpY2l0IENHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2UodWludDMyX3QpOwogICAg
IH5DR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlKCkgPSBkZWZhdWx0OwpAQCAtNTEs
NyArNTEsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAKLSAgICAvLyBEaXNwbGF5Q2FwdHVyZVNv
dXJjZU1hYzo6Q2FwdHVyZXIKKyAgICAvLyBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpDYXB0
dXJlcgogICAgIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgZGV2aWNlVHlwZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNjcmVlbjsgfQogICAgIFJl
YWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RGlzcGxheVN1cmZhY2VUeXBlIHN1cmZhY2VUeXBl
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpEaXNw
bGF5U3VyZmFjZVR5cGU6Ok1vbml0b3I7IH0KICAgICBJbnRTaXplIGludHJpbnNpY1NpemUoKSBj
b25zdCBmaW5hbDsKQEAgLTYzLDM4ICs2Myw2IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPENH
RGlzcGxheVN0cmVhbVJlZj4gY3JlYXRlRGlzcGxheVN0cmVhbShGcmFtZUF2YWlsYWJsZUNhbGxi
YWNrLCBkaXNwYXRjaF9xdWV1ZV90KSBmaW5hbDsKICAgICBib29sIGNoZWNrRGlzcGxheVN0cmVh
bSgpIGZpbmFsOwogCi0gICAgY2xhc3MgRGlzcGxheVN1cmZhY2UgewotICAgIHB1YmxpYzoKLSAg
ICAgICAgRGlzcGxheVN1cmZhY2UoKSA9IGRlZmF1bHQ7Ci0gICAgICAgIGV4cGxpY2l0IERpc3Bs
YXlTdXJmYWNlKElPU3VyZmFjZVJlZiBzdXJmYWNlKQotICAgICAgICAgICAgOiBtX3N1cmZhY2Uo
c3VyZmFjZSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG1fc3VyZmFjZSkKLSAgICAgICAg
ICAgICAgICBJT1N1cmZhY2VJbmNyZW1lbnRVc2VDb3VudChtX3N1cmZhY2UuZ2V0KCkpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgfkRpc3BsYXlTdXJmYWNlKCkKLSAgICAgICAgewotICAgICAgICAg
ICAgaWYgKG1fc3VyZmFjZSkKLSAgICAgICAgICAgICAgICBJT1N1cmZhY2VEZWNyZW1lbnRVc2VD
b3VudChtX3N1cmZhY2UuZ2V0KCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgRGlzcGxheVN1cmZh
Y2UmIG9wZXJhdG9yPShJT1N1cmZhY2VSZWYgc3VyZmFjZSkKLSAgICAgICAgewotICAgICAgICAg
ICAgaWYgKG1fc3VyZmFjZSkKLSAgICAgICAgICAgICAgICBJT1N1cmZhY2VEZWNyZW1lbnRVc2VD
b3VudChtX3N1cmZhY2UuZ2V0KCkpOwotICAgICAgICAgICAgaWYgKHN1cmZhY2UpCi0gICAgICAg
ICAgICAgICAgSU9TdXJmYWNlSW5jcmVtZW50VXNlQ291bnQoc3VyZmFjZSk7Ci0gICAgICAgICAg
ICBtX3N1cmZhY2UgPSBzdXJmYWNlOwotICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAg
ICB9Ci0KLSAgICAgICAgSU9TdXJmYWNlUmVmIGlvU3VyZmFjZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c3VyZmFjZS5nZXQoKTsgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgUmV0YWluUHRyPElPU3Vy
ZmFjZVJlZj4gbV9zdXJmYWNlOwotICAgIH07Ci0KICAgICBSZXRhaW5QdHI8Q0dEaXNwbGF5U3Ry
ZWFtUmVmPiBtX2Rpc3BsYXlTdHJlYW07CiAKICAgICB1aW50MzJfdCBtX2Rpc3BsYXlJRCB7IDAg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9D
R0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2Uu
bW0KaW5kZXggYjdjNzQ1ZGRkZjEzZDViN2Y2MzZhZTllZWI0YjVjODI0ODQ0MGUzNi4uOWJkYTcy
NGQ1MzY5OWU3YmVlODQ0MTdiZWE5OTE5OTA3OTViOTk2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1
cmVTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0NHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2UubW0KQEAgLTc1LDcgKzc1LDcgQEAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8Q0dEaXJlY3REaXNwbGF5SUQ+IHVwZGF0ZURpc3BsYXlJRChD
R0RpcmVjdERpc3BsYXlJRCBkaXNwbGEKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1F
eHBlY3RlZDxVbmlxdWVSZWY8RGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OkNhcHR1cmVyPiwgU3Ry
aW5nPiBDR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlOjpjcmVhdGUoY29uc3QgU3Ry
aW5nJiBkZXZpY2VJRCkKK0V4cGVjdGVkPFVuaXF1ZVJlZjxEaXNwbGF5Q2FwdHVyZVNvdXJjZUNv
Y29hOjpDYXB0dXJlcj4sIFN0cmluZz4gQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJj
ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgZGV2aWNlSUQpCiB7CiAgICAgYXV0byBkaXNwbGF5SUQg
PSBwYXJzZUludGVnZXI8dWludDMyX3Q+KGRldmljZUlEKTsKICAgICBpZiAoIWRpc3BsYXlJRCkK
QEAgLTg1LDcgKzg1LDcgQEAgRXhwZWN0ZWQ8VW5pcXVlUmVmPERpc3BsYXlDYXB0dXJlU291cmNl
TWFjOjpDYXB0dXJlcj4sIFN0cmluZz4gQ0dEaXNwbGF5U3RyZWFtU2MKICAgICBpZiAoIWFjdHVh
bERpc3BsYXlJRCkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJJbnZhbGlkIGRpc3Bs
YXkgSUQiX3MpOwogCi0gICAgcmV0dXJuIFVuaXF1ZVJlZjxEaXNwbGF5Q2FwdHVyZVNvdXJjZU1h
Yzo6Q2FwdHVyZXI+KG1ha2VVbmlxdWVSZWY8Q0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNv
dXJjZT4oYWN0dWFsRGlzcGxheUlELnZhbHVlKCkpKTsKKyAgICByZXR1cm4gVW5pcXVlUmVmPERp
c3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OkNhcHR1cmVyPihtYWtlVW5pcXVlUmVmPENHRGlzcGxh
eVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2U+KGFjdHVhbERpc3BsYXlJRC52YWx1ZSgpKSk7CiB9
CiAKIENHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2U6OkNHRGlzcGxheVN0cmVhbVNj
cmVlbkNhcHR1cmVTb3VyY2UodWludDMyX3QgZGlzcGxheUlEKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlTWFuYWdlckNv
Y29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5
Q2FwdHVyZU1hbmFnZXJDb2NvYS5jcHAKaW5kZXggODg1NTRiYWI0YzIwMWI0MjNmMjUxMWMyMjU1
ZDIzZDg5NDliMmJlYy4uMTk3YzY2ZjY5NzE0OTgyOTQ4ZDZiNGZmMGZjMzQ5Y2MyYzk0ZjM3YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3Bs
YXlDYXB0dXJlTWFuYWdlckNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVNYW5hZ2VyQ29jb2EuY3BwCkBAIC0zNCwxMCAr
MzQsMTEgQEAKIAogI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlICJDR0Rpc3BsYXlTdHJlYW1T
Y3JlZW5DYXB0dXJlU291cmNlLmgiCi0jaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHRGlyZWN0RGlz
cGxheS5oPgogI2VuZGlmCiAKLSNpbmNsdWRlICJDb3JlVmlkZW9Tb2Z0TGluay5oIgorI2lmIFBM
QVRGT1JNKElPUykKKyNpbmNsdWRlICJSZXBsYXlLaXRDYXB0dXJlU291cmNlLmgiCisjZW5kaWYK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02MSw2ICs2Miw4IEBAIHZvaWQgRGlzcGxheUNh
cHR1cmVNYW5hZ2VyQ29jb2E6OnVwZGF0ZURpc3BsYXlDYXB0dXJlRGV2aWNlcygpCiB7CiAjaWYg
UExBVEZPUk0oTUFDKQogICAgIENHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2U6OnNj
cmVlbkNhcHR1cmVEZXZpY2VzKG1fZGV2aWNlcyk7CisjZWxpZiBQTEFURk9STShJT1MpCisgICAg
UmVwbGF5S2l0Q2FwdHVyZVNvdXJjZTo6c2NyZWVuQ2FwdHVyZURldmljZXMobV9kZXZpY2VzKTsK
ICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlTWFjLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTI1NjZlMTNmNzc5OGY0YmMyN2EyNTY4MDQ4OWYzMmYw
NTg4OGRkYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3Vy
Y2VNYWMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjc0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5oIgotCi0jaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkgJiYgUExBVEZPUk0oTUFDKQotCi0jaW5jbHVkZSAiQ0dEaXNwbGF5U3RyZWFtU2Ny
ZWVuQ2FwdHVyZVNvdXJjZS5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJNZWRp
YVNhbXBsZUFWRk9iakMuaCIKLSNpbmNsdWRlICJQaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmgiCi0j
aW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgotI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXIuaCIKLSNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaCIK
LSNpbmNsdWRlICJSZWFsdGltZVZpZGVvVXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAiUmVtb3RlVmlk
ZW9TYW1wbGUuaCIKLSNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgPENvcmVNZWRpYS9DTVN5
bmMuaD4KLSNpbmNsdWRlIDxtYWNoL21hY2hfdGltZS5oPgotI2luY2x1ZGUgPHBhbC9hdmZvdW5k
YXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+Ci0jaW5jbHVkZSA8cGFsL3NwaS9jZi9Db3Jl
QXVkaW9TUEkuaD4KLSNpbmNsdWRlIDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgotI2lu
Y2x1ZGUgPHBhbC9zcGkvY29jb2EvSU9TdXJmYWNlU1BJLmg+Ci0jaW5jbHVkZSA8c3lzL3RpbWUu
aD4KLSNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgotCi0jaW5jbHVkZSAiQ29yZVZpZGVvU29mdExpbmsuaCIKLSNpbmNsdWRlIDxwYWwv
Y2YvQ29yZU1lZGlhU29mdExpbmsuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1DYXB0dXJl
U291cmNlT3JFcnJvciBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6Y3JlYXRlKGNvbnN0IENhcHR1
cmVEZXZpY2UmIGRldmljZSwgY29uc3QgTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMpCi17
Ci0gICAgc3dpdGNoIChkZXZpY2UudHlwZSgpKSB7Ci0gICAgY2FzZSBDYXB0dXJlRGV2aWNlOjpE
ZXZpY2VUeXBlOjpTY3JlZW46Ci0gICAgICAgIHJldHVybiBjcmVhdGUoQ0dEaXNwbGF5U3RyZWFt
U2NyZWVuQ2FwdHVyZVNvdXJjZTo6Y3JlYXRlKGRldmljZS5wZXJzaXN0ZW50SWQoKSksIGRldmlj
ZSwgY29uc3RyYWludHMpOwotICAgIGNhc2UgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6V2lu
ZG93OgotICAgIGNhc2UgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6TWljcm9waG9uZToKLSAg
ICBjYXNlIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNwZWFrZXI6Ci0gICAgY2FzZSBDYXB0
dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpDYW1lcmE6Ci0gICAgY2FzZSBDYXB0dXJlRGV2aWNlOjpE
ZXZpY2VUeXBlOjpVbmtub3duOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgfQotCi0gICAgcmV0dXJuIHsgfTsKLX0KLQotQ2FwdHVyZVNvdXJjZU9y
RXJyb3IgRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OmNyZWF0ZShFeHBlY3RlZDxVbmlxdWVSZWY8
Q2FwdHVyZXI+LCBTdHJpbmc+JiYgY2FwdHVyZXIsIGNvbnN0IENhcHR1cmVEZXZpY2UmIGRldmlj
ZSwgY29uc3QgTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMpCi17Ci0gICAgaWYgKCFjYXB0
dXJlci5oYXNfdmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIENhcHR1cmVTb3VyY2VPckVycm9yIHsg
V1RGTW92ZShjYXB0dXJlci5lcnJvcigpKSB9OwotCi0gICAgYXV0byBzb3VyY2UgPSBhZG9wdFJl
ZigqbmV3IERpc3BsYXlDYXB0dXJlU291cmNlTWFjKFdURk1vdmUoY2FwdHVyZXIudmFsdWUoKSks
IFN0cmluZyB7IGRldmljZS5sYWJlbCgpIH0pKTsKLSAgICBpZiAoY29uc3RyYWludHMpIHsKLSAg
ICAgICAgYXV0byByZXN1bHQgPSBzb3VyY2UtPmFwcGx5Q29uc3RyYWludHMoKmNvbnN0cmFpbnRz
KTsKLSAgICAgICAgaWYgKHJlc3VsdCkKLSAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKHJlc3Vs
dC52YWx1ZSgpLmJhZENvbnN0cmFpbnQpOwotICAgIH0KLQotICAgIHJldHVybiBDYXB0dXJlU291
cmNlT3JFcnJvcihXVEZNb3ZlKHNvdXJjZSkpOwotfQotCi1EaXNwbGF5Q2FwdHVyZVNvdXJjZU1h
Yzo6RGlzcGxheUNhcHR1cmVTb3VyY2VNYWMoVW5pcXVlUmVmPENhcHR1cmVyPiYmIGNhcHR1cmVy
LCBTdHJpbmcmJiBuYW1lKQotICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZShUeXBlOjpWaWRlbywg
V1RGTW92ZShuYW1lKSkKLSAgICAsIG1fY2FwdHVyZXIoV1RGTW92ZShjYXB0dXJlcikpCi0gICAg
LCBtX3RpbWVyKFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJkRpc3BsYXlDYXB0dXJlU291cmNl
TWFjOjplbWl0RnJhbWUpCi17Ci19Ci0KLURpc3BsYXlDYXB0dXJlU291cmNlTWFjOjp+RGlzcGxh
eUNhcHR1cmVTb3VyY2VNYWMoKQotewotfQotCi1jb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2Fw
YWJpbGl0aWVzJiBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6Y2FwYWJpbGl0aWVzKCkKLXsKLSAg
ICBpZiAoIW1fY2FwYWJpbGl0aWVzKSB7Ci0gICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBh
YmlsaXRpZXMgY2FwYWJpbGl0aWVzKHNldHRpbmdzKCkuc3VwcG9ydGVkQ29uc3RyYWludHMoKSk7
Ci0KLSAgICAgICAgYXV0byBpbnRyaW5zaWNTaXplID0gbV9jYXB0dXJlci0+aW50cmluc2ljU2l6
ZSgpOwotICAgICAgICBjYXBhYmlsaXRpZXMuc2V0V2lkdGgoQ2FwYWJpbGl0eVZhbHVlT3JSYW5n
ZSgxLCBpbnRyaW5zaWNTaXplLndpZHRoKCkpKTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLnNldEhl
aWdodChDYXBhYmlsaXR5VmFsdWVPclJhbmdlKDEsIGludHJpbnNpY1NpemUuaGVpZ2h0KCkpKTsK
LSAgICAgICAgY2FwYWJpbGl0aWVzLnNldEZyYW1lUmF0ZShDYXBhYmlsaXR5VmFsdWVPclJhbmdl
KC4wMSwgMzAuMCkpOwotCi0gICAgICAgIG1fY2FwYWJpbGl0aWVzID0gV1RGTW92ZShjYXBhYmls
aXRpZXMpOwotICAgIH0KLSAgICByZXR1cm4gbV9jYXBhYmlsaXRpZXMudmFsdWUoKTsKLX0KLQot
Y29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1h
Yzo6c2V0dGluZ3MoKQotewotICAgIGlmICghbV9jdXJyZW50U2V0dGluZ3MpIHsKLSAgICAgICAg
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzIHNldHRpbmdzOwotICAgICAgICBzZXR0aW5ncy5z
ZXRGcmFtZVJhdGUoZnJhbWVSYXRlKCkpOwotCi0gICAgICAgIGF1dG8gc2l6ZSA9IHRoaXMtPnNp
emUoKTsKLSAgICAgICAgc2V0dGluZ3Muc2V0V2lkdGgoc2l6ZS53aWR0aCgpKTsKLSAgICAgICAg
c2V0dGluZ3Muc2V0SGVpZ2h0KHNpemUuaGVpZ2h0KCkpOwotCi0gICAgICAgIHNldHRpbmdzLnNl
dERpc3BsYXlTdXJmYWNlKG1fY2FwdHVyZXItPnN1cmZhY2VUeXBlKCkpOwotICAgICAgICBzZXR0
aW5ncy5zZXRMb2dpY2FsU3VyZmFjZShmYWxzZSk7Ci0KLSAgICAgICAgUmVhbHRpbWVNZWRpYVNv
dXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzIHN1cHBvcnRlZENvbnN0cmFpbnRzOwotICAgICAgICBz
dXBwb3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c0ZyYW1lUmF0ZSh0cnVlKTsKLSAgICAgICAg
c3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNXaWR0aCh0cnVlKTsKLSAgICAgICAgc3Vw
cG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNIZWlnaHQodHJ1ZSk7Ci0gICAgICAgIHN1cHBv
cnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzRGlzcGxheVN1cmZhY2UodHJ1ZSk7Ci0gICAgICAg
IHN1cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzTG9naWNhbFN1cmZhY2UodHJ1ZSk7Ci0K
LSAgICAgICAgc2V0dGluZ3Muc2V0U3VwcG9ydGVkQ29uc3RyYWludHMoc3VwcG9ydGVkQ29uc3Ry
YWludHMpOwotCi0gICAgICAgIG1fY3VycmVudFNldHRpbmdzID0gV1RGTW92ZShzZXR0aW5ncyk7
Ci0gICAgfQotICAgIHJldHVybiBtX2N1cnJlbnRTZXR0aW5ncy52YWx1ZSgpOwotfQotCi12b2lk
IERpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpzZXR0aW5nc0RpZENoYW5nZShPcHRpb25TZXQ8UmVh
bHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnPiBzZXR0aW5ncykKLXsKLSAgICBpZiAoc2V0
dGluZ3MuY29udGFpbnMoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpGcmFtZVJh
dGUpICYmIG1fdGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgbV90aW1lci5zdGFydFJlcGVhdGlu
ZygxX3MgLyBmcmFtZVJhdGUoKSk7Ci0KLSAgICBtX2N1cnJlbnRTZXR0aW5ncyA9IHsgfTsKLX0K
LQotdm9pZCBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKLXsK
LSAgICBtX3N0YXJ0VGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwotICAgIG1fdGltZXIuc3Rh
cnRSZXBlYXRpbmcoMV9zIC8gZnJhbWVSYXRlKCkpOwotCi0gICAgY29tbWl0Q29uZmlndXJhdGlv
bigpOwotICAgIGlmICghbV9jYXB0dXJlci0+c3RhcnQoKSkKLSAgICAgICAgY2FwdHVyZUZhaWxl
ZCgpOwotfQotCi12b2lkIERpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpzdG9wUHJvZHVjaW5nRGF0
YSgpCi17Ci0gICAgbV90aW1lci5zdG9wKCk7Ci0gICAgbV9lbGFwc2VkVGltZSArPSBNb25vdG9u
aWNUaW1lOjpub3coKSAtIG1fc3RhcnRUaW1lOwotICAgIG1fc3RhcnRUaW1lID0gTW9ub3Rvbmlj
VGltZTo6bmFuKCk7Ci0KLSAgICBtX2NhcHR1cmVyLT5zdG9wKCk7Ci19Ci0KLVNlY29uZHMgRGlz
cGxheUNhcHR1cmVTb3VyY2VNYWM6OmVsYXBzZWRUaW1lKCkKLXsKLSAgICBpZiAoc3RkOjppc25h
bihtX3N0YXJ0VGltZSkpCi0gICAgICAgIHJldHVybiBtX2VsYXBzZWRUaW1lOwotCi0gICAgcmV0
dXJuIG1fZWxhcHNlZFRpbWUgKyAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX3N0YXJ0VGltZSk7
Ci19Ci0KLS8vIFdlIGtlZXAgdGhlIGFzcGVjdCByYXRpbyBvZiB0aGUgaW50cmluc2ljIHNpemUg
Zm9yIHRoZSBmcmFtZSBzaXplIGFzIGdldERpc3BsYXlNZWRpYSBhbGxvd3MgbWF4IGNvbnN0cmFp
bnRzIG9ubHkuCi12b2lkIERpc3BsYXlDYXB0dXJlU291cmNlTWFjOjp1cGRhdGVGcmFtZVNpemUo
KQotewotICAgIGF1dG8gaW50cmluc2ljU2l6ZSA9IHRoaXMtPmludHJpbnNpY1NpemUoKTsKLQot
ICAgIGF1dG8gZnJhbWVTaXplID0gc2l6ZSgpOwotICAgIGlmICghZnJhbWVTaXplLmhlaWdodCgp
KQotICAgICAgICBmcmFtZVNpemUuc2V0SGVpZ2h0KGludHJpbnNpY1NpemUuaGVpZ2h0KCkpOwot
ICAgIGlmICghZnJhbWVTaXplLndpZHRoKCkpCi0gICAgICAgIGZyYW1lU2l6ZS5zZXRXaWR0aChp
bnRyaW5zaWNTaXplLndpZHRoKCkpOwotCi0gICAgYXV0byBtYXhIZWlnaHQgPSBzdGQ6Om1pbihm
cmFtZVNpemUuaGVpZ2h0KCksIGludHJpbnNpY1NpemUuaGVpZ2h0KCkpOwotICAgIGF1dG8gbWF4
V2lkdGggPSBzdGQ6Om1pbihmcmFtZVNpemUud2lkdGgoKSwgaW50cmluc2ljU2l6ZS53aWR0aCgp
KTsKLQotICAgIGF1dG8gaGVpZ2h0Rm9yTWF4V2lkdGggPSBtYXhXaWR0aCAqIGludHJpbnNpY1Np
emUuaGVpZ2h0KCkgLyBpbnRyaW5zaWNTaXplLndpZHRoKCk7Ci0gICAgYXV0byB3aWR0aEZvck1h
eEhlaWdodCA9IG1heEhlaWdodCAqIGludHJpbnNpY1NpemUud2lkdGgoKSAvIGludHJpbnNpY1Np
emUuaGVpZ2h0KCk7Ci0KLSAgICBpZiAoaGVpZ2h0Rm9yTWF4V2lkdGggPD0gbWF4SGVpZ2h0KSB7
Ci0gICAgICAgIHNldFNpemUoeyBtYXhXaWR0aCwgaGVpZ2h0Rm9yTWF4V2lkdGggfSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKHdpZHRoRm9yTWF4SGVpZ2h0IDw9IG1heFdpZHRo
KSB7Ci0gICAgICAgIHNldFNpemUoeyB3aWR0aEZvck1heEhlaWdodCwgbWF4SGVpZ2h0IH0pOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIHNldFNpemUoaW50cmluc2ljU2l6ZSk7Ci19Ci0K
LXZvaWQgRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OmVtaXRGcmFtZSgpCi17Ci0gICAgaWYgKG11
dGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghbV9pbWFnZVRyYW5zZmVyU2Vzc2lv
bikKLSAgICAgICAgbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbiA9IEltYWdlVHJhbnNmZXJTZXNzaW9u
VlQ6OmNyZWF0ZShwcmVmZXJlZFBpeGVsQnVmZmVyRm9ybWF0KCkpOwotCi0gICAgYXV0byBzYW1w
bGVUaW1lID0gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKChlbGFwc2VkVGltZSgpICsgMTAw
X21zKS5zZWNvbmRzKCkpOwotCi0gICAgYXV0byBmcmFtZSA9IG1fY2FwdHVyZXItPmdlbmVyYXRl
RnJhbWUoKTsKLSAgICBhdXRvIGltYWdlU2l6ZSA9IFdURjo6c3dpdGNoT24oZnJhbWUsCi0gICAg
ICAgIFtdKFJldGFpblB0cjxJT1N1cmZhY2VSZWY+IHN1cmZhY2UpIC0+IEludFNpemUgewotICAg
ICAgICAgICAgaWYgKCFzdXJmYWNlKQotICAgICAgICAgICAgICAgIHJldHVybiB7IH07Ci0KLSAg
ICAgICAgICAgIHJldHVybiBJbnRTaXplKElPU3VyZmFjZUdldFdpZHRoKHN1cmZhY2UuZ2V0KCkp
LCBJT1N1cmZhY2VHZXRIZWlnaHQoc3VyZmFjZS5nZXQoKSkpOwotICAgICAgICB9LAotICAgICAg
ICBbXShSZWZQdHI8TmF0aXZlSW1hZ2U+IGltYWdlKSAtPiBJbnRTaXplIHsKLSAgICAgICAgICAg
IGlmICghaW1hZ2UpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgICAgICAgICAg
cmV0dXJuIGltYWdlLT5zaXplKCk7Ci0gICAgICAgIH0KLSAgICApOwotCi0gICAgaWYgKGltYWdl
U2l6ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChpbnRyaW5zaWNTaXpl
KCkgIT0gaW1hZ2VTaXplKSB7Ci0gICAgICAgIHNldEludHJpbnNpY1NpemUoaW1hZ2VTaXplKTsK
LSAgICAgICAgdXBkYXRlRnJhbWVTaXplKCk7Ci0gICAgfQotCi0gICAgYXV0byBzYW1wbGUgPSBX
VEY6OnN3aXRjaE9uKGZyYW1lLAotICAgICAgICBbdGhpcywgc2FtcGxlVGltZV0oUmV0YWluUHRy
PElPU3VyZmFjZVJlZj4gc3VyZmFjZSkgLT4gUmVmUHRyPE1lZGlhU2FtcGxlPiB7Ci0gICAgICAg
ICAgICBpZiAoIXN1cmZhY2UpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAg
ICAgICAgICAgIHJldHVybiBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5jcmVhdGVNZWRpYVNhbXBs
ZShzdXJmYWNlLmdldCgpLCBzYW1wbGVUaW1lLCBzaXplKCkpOwotICAgICAgICB9LAotICAgICAg
ICBbdGhpcywgc2FtcGxlVGltZV0oUmVmUHRyPE5hdGl2ZUltYWdlPiBpbWFnZSkgLT4gUmVmUHRy
PE1lZGlhU2FtcGxlPiB7Ci0gICAgICAgICAgICBpZiAoIWltYWdlKQotICAgICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwotCi0gICAgICAgICAgICByZXR1cm4gbV9pbWFnZVRyYW5zZmVyU2Vz
c2lvbi0+Y3JlYXRlTWVkaWFTYW1wbGUoaW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgc2Ft
cGxlVGltZSwgc2l6ZSgpKTsKLSAgICAgICAgfQotICAgICk7Ci0KLSAgICBpZiAoIXNhbXBsZSkg
ewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIHZpZGVvU2FtcGxlQXZhaWxhYmxlKCpzYW1wbGUuZ2V0KCkpOwotfQotCi12b2lkIERp
c3BsYXlDYXB0dXJlU291cmNlTWFjOjpDYXB0dXJlcjo6c2V0TG9nZ2VyKGNvbnN0IExvZ2dlciYg
bmV3TG9nZ2VyLCBjb25zdCB2b2lkKiBuZXdMb2dJZGVudGlmaWVyKQotewotICAgIG1fbG9nZ2Vy
ID0gJm5ld0xvZ2dlcjsKLSAgICBtX2xvZ0lkZW50aWZpZXIgPSBuZXdMb2dJZGVudGlmaWVyOwot
fQotCi1XVEZMb2dDaGFubmVsJiBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6Q2FwdHVyZXI6Omxv
Z0NoYW5uZWwoKSBjb25zdAotewotICAgIHJldHVybiBMb2dXZWJSVEM7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRG
T1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlTWFjLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGY5M2U3ODM4YjljNDc3MzkyZmI3MzhhMTRiOGQ1MTRhNzg2ZWExMGMu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlTWFjLmgK
KysrIC9kZXYvbnVsbApAQCAtMSwxMTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
Ny0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKSAmJiBQTEFURk9STShNQUMpCi0KLSNpbmNsdWRlICJDYXB0dXJlRGV2aWNlLmgi
Ci0jaW5jbHVkZSAiSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oIgotI2luY2x1ZGUgIlJlYWx0aW1l
TWVkaWFTb3VyY2UuaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotI2luY2x1ZGUgPHd0Zi9Vbmlx
dWVSZWYuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotdHlwZWRlZiBzdHJ1
Y3QgQ0dJbWFnZSAqQ0dJbWFnZVJlZjsKLXR5cGVkZWYgc3RydWN0IF9fQ1ZCdWZmZXIgKkNWUGl4
ZWxCdWZmZXJSZWY7Ci10eXBlZGVmIHN0cnVjdCBfX0lPU3VyZmFjZSAqSU9TdXJmYWNlUmVmOwot
Ci1uYW1lc3BhY2UgV1RGIHsKLWNsYXNzIE1lZGlhVGltZTsKLX0KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1jbGFzcyBDYXB0dXJlRGV2aWNlSW5mbzsKLWNsYXNzIEltYWdlVHJhbnNmZXJTZXNz
aW9uVlQ7Ci1jbGFzcyBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWOwotCi1jbGFzcyBEaXNwbGF5Q2Fw
dHVyZVNvdXJjZU1hYyBmaW5hbCA6IHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlIHsKLXB1Ymxp
YzoKLSAgICB1c2luZyBEaXNwbGF5RnJhbWVUeXBlID0gc3RkOjp2YXJpYW50PFJlZlB0cjxOYXRp
dmVJbWFnZT4sIFJldGFpblB0cjxJT1N1cmZhY2VSZWY+PjsKLQotICAgIGNsYXNzIENhcHR1cmVy
IDogcHVibGljIExvZ2dlckhlbHBlciB7Ci0gICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwotICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB+Q2FwdHVyZXIoKSA9IGRlZmF1bHQ7Ci0K
LSAgICAgICAgdmlydHVhbCBib29sIHN0YXJ0KCkgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQg
c3RvcCgpID0gMDsKLSAgICAgICAgdmlydHVhbCBEaXNwbGF5RnJhbWVUeXBlIGdlbmVyYXRlRnJh
bWUoKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSBkZXZp
Y2VUeXBlKCkgY29uc3QgPSAwOwotICAgICAgICB2aXJ0dWFsIFJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5nczo6RGlzcGxheVN1cmZhY2VUeXBlIHN1cmZhY2VUeXBlKCkgY29uc3QgPSAwOwotICAg
ICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29uZmlndXJhdGlvbihjb25zdCBSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3MmKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgSW50U2l6ZSBpbnRyaW5zaWNT
aXplKCkgY29uc3QgPSAwOwotCi0gICAgICAgIHZpcnR1YWwgdm9pZCBzZXRMb2dnZXIoY29uc3Qg
TG9nZ2VyJiwgY29uc3Qgdm9pZCopOwotICAgICAgICBjb25zdCBMb2dnZXIqIGxvZ2dlclB0cigp
IGNvbnN0IHsgcmV0dXJuIG1fbG9nZ2VyLmdldCgpOyB9Ci0gICAgICAgIGNvbnN0IExvZ2dlciYg
bG9nZ2VyKCkgY29uc3QgZmluYWwgeyBBU1NFUlQobV9sb2dnZXIpOyByZXR1cm4gKm1fbG9nZ2Vy
LmdldCgpOyB9Ci0gICAgICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7IH0KLSAgICAgICAgV1RGTG9nQ2hhbm5lbCYgbG9n
Q2hhbm5lbCgpIGNvbnN0IGZpbmFsOwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgUmVmUHRyPGNv
bnN0IExvZ2dlcj4gbV9sb2dnZXI7Ci0gICAgICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmll
cjsKLSAgICB9OwotCi0gICAgc3RhdGljIENhcHR1cmVTb3VyY2VPckVycm9yIGNyZWF0ZShjb25z
dCBDYXB0dXJlRGV2aWNlJiwgY29uc3QgTWVkaWFDb25zdHJhaW50cyopOwotICAgIHN0YXRpYyBD
YXB0dXJlU291cmNlT3JFcnJvciBjcmVhdGUoRXhwZWN0ZWQ8VW5pcXVlUmVmPENhcHR1cmVyPiwg
U3RyaW5nPiYmLCBjb25zdCBDYXB0dXJlRGV2aWNlJiwgY29uc3QgTWVkaWFDb25zdHJhaW50cyop
OwotCi0gICAgU2Vjb25kcyBlbGFwc2VkVGltZSgpOwotICAgIHZvaWQgdXBkYXRlRnJhbWVTaXpl
KCk7Ci0KLXByaXZhdGU6Ci0gICAgRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMoVW5pcXVlUmVmPENh
cHR1cmVyPiYmLCBTdHJpbmcmJiBuYW1lKTsKLSAgICB+RGlzcGxheUNhcHR1cmVTb3VyY2VNYWMo
KTsKLQotICAgIHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRhKCkgZmluYWw7Ci0gICAgdm9pZCBzdG9w
UHJvZHVjaW5nRGF0YSgpIGZpbmFsOwotICAgIHZvaWQgc2V0dGluZ3NEaWRDaGFuZ2UoT3B0aW9u
U2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZz4pIGZpbmFsOwotICAgIGJvb2wg
aXNDYXB0dXJlU291cmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIGNvbnN0
IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcygpIGZpbmFsOwot
ICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MoKSBmaW5hbDsK
LSAgICBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIGRldmljZVR5cGUoKSBjb25zdCB7IHJldHVy
biBtX2NhcHR1cmVyLT5kZXZpY2VUeXBlKCk7IH0KLSAgICB2b2lkIGNvbW1pdENvbmZpZ3VyYXRp
b24oKSBmaW5hbCB7IG1fY2FwdHVyZXItPmNvbW1pdENvbmZpZ3VyYXRpb24oc2V0dGluZ3MoKSk7
IH0KLQotICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
ICJEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYyI7IH0KLQotICAgIHZvaWQgZW1pdEZyYW1lKCk7Ci0K
LSAgICBVbmlxdWVSZWY8Q2FwdHVyZXI+IG1fY2FwdHVyZXI7Ci0gICAgc3RkOjpvcHRpb25hbDxS
ZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzPiBtX2NhcGFiaWxpdGllczsKLSAgICBzdGQ6
Om9wdGlvbmFsPFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncz4gbV9jdXJyZW50U2V0dGluZ3M7
Ci0gICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzIG1fc3VwcG9ydGVk
Q29uc3RyYWludHM7Ci0KLSAgICBNb25vdG9uaWNUaW1lIG1fc3RhcnRUaW1lIHsgTW9ub3Rvbmlj
VGltZTo6bmFuKCkgfTsKLSAgICBTZWNvbmRzIG1fZWxhcHNlZFRpbWUgeyAwX3MgfTsKLQotICAg
IFJ1bkxvb3A6OlRpbWVyPERpc3BsYXlDYXB0dXJlU291cmNlTWFjPiBtX3RpbWVyOwotCi0gICAg
c3RkOjp1bmlxdWVfcHRyPEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ+IG1faW1hZ2VUcmFuc2ZlclNl
c3Npb247Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUo
TUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlck1hYy5jcHAKaW5kZXggY2U0OTA5MTAzZTZjY2M4Y2EyNDRhZTdiZjU4OWM5
NTMyNTQxOWE5OS4uYTQxOGE2MDUwMmI3Y2ZhN2YzNzM0OWYxMTE5YzdhMWUyNjQ1YjFhYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcApAQCAtMzYsNyAr
MzYsNyBAQAogI2luY2x1ZGUgIkFWVmlkZW9DYXB0dXJlU291cmNlLmgiCiAjaW5jbHVkZSAiQ29y
ZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oIgogI2luY2x1ZGUgIkRpc3BsYXlDYXB0dXJlTWFuYWdlckNv
Y29hLmgiCi0jaW5jbHVkZSAiRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMuaCIKKyNpbmNsdWRlICJE
aXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1
ZGUgIk1lZGlhU3RyZWFtUHJpdmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBA
IC01OSwxNSArNTksNyBAQCBjbGFzcyBEaXNwbGF5Q2FwdHVyZVNvdXJjZUZhY3RvcnlNYWMgZmlu
YWwgOiBwdWJsaWMgRGlzcGxheUNhcHR1cmVGYWN0b3J5IHsKIHB1YmxpYzoKICAgICBDYXB0dXJl
U291cmNlT3JFcnJvciBjcmVhdGVEaXNwbGF5Q2FwdHVyZVNvdXJjZShjb25zdCBDYXB0dXJlRGV2
aWNlJiBkZXZpY2UsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzKSBmaW5hbAog
ICAgIHsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAgICBVTlVTRURfUEFSQU0oZGV2
aWNlKTsKLSAgICAgICAgVU5VU0VEX1BBUkFNKGNvbnN0cmFpbnRzKTsKLSNlbmRpZgotI2lmIFBM
QVRGT1JNKE1BQykKLSAgICAgICAgcmV0dXJuIERpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpjcmVh
dGUoZGV2aWNlLCBjb25zdHJhaW50cyk7Ci0jZWxzZQotICAgICAgICByZXR1cm4geyB9OwotI2Vu
ZGlmCisgICAgICAgIHJldHVybiBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpjcmVhdGUoZGV2
aWNlLCBjb25zdHJhaW50cyk7CiAgICAgfQogcHJpdmF0ZToKICAgICBDYXB0dXJlRGV2aWNlTWFu
YWdlciYgZGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyKCkgeyByZXR1cm4gRGlzcGxheUNhcHR1
cmVNYW5hZ2VyQ29jb2E6OnNpbmdsZXRvbigpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3Bw
CmluZGV4IDMxZDkyMTQ4ODBkZjM0Mjg5ZmZhOWU2YWI2Y2RhZjFjMzAwYTFkZjQuLjE2Njg0YTEz
ZDQ2ZGVkYTdhMjMxOWI4ZTUzYzhhMDExM2IwOGE1MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXIuY3BwCkBAIC00Myw3ICs0Myw3IEBACiAKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRl
ICJDb3JlQXVkaW9DYXB0dXJlU291cmNlLmgiCi0jaW5jbHVkZSAiRGlzcGxheUNhcHR1cmVTb3Vy
Y2VNYWMuaCIKKyNpbmNsdWRlICJEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmgiCiAjaW5jbHVk
ZSAiTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMuaCIKICNlbmRpZgogCkBAIC0xMTUsMTQgKzEx
NSwxNCBAQCBwcml2YXRlOgogfTsKIAogI2lmIFBMQVRGT1JNKE1BQykKLWNsYXNzIE1vY2tEaXNw
bGF5Q2FwdHVyZXIgZmluYWwgOiBwdWJsaWMgRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OkNhcHR1
cmVyIHsKK2NsYXNzIE1vY2tEaXNwbGF5Q2FwdHVyZXIgZmluYWwgOiBwdWJsaWMgRGlzcGxheUNh
cHR1cmVTb3VyY2VDb2NvYTo6Q2FwdHVyZXIgewogcHVibGljOgogICAgIGV4cGxpY2l0IE1vY2tE
aXNwbGF5Q2FwdHVyZXIoY29uc3QgQ2FwdHVyZURldmljZSYpOwogCiBwcml2YXRlOgogICAgIGJv
b2wgc3RhcnQoKSBmaW5hbDsKICAgICB2b2lkIHN0b3AoKSBmaW5hbCAgeyBtX3NvdXJjZS0+c3Rv
cCgpOyB9Ci0gICAgRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OkRpc3BsYXlGcmFtZVR5cGUgZ2Vu
ZXJhdGVGcmFtZSgpIGZpbmFsOworICAgIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OkRpc3Bs
YXlGcmFtZVR5cGUgZ2VuZXJhdGVGcmFtZSgpIGZpbmFsOwogICAgIFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTZXR0aW5nczo6RGlzcGxheVN1cmZhY2VUeXBlIHN1cmZhY2VUeXBlKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpEaXNwbGF5U3VyZmFjZVR5cGU6
Ok1vbml0b3I7IH0KICAgICB2b2lkIGNvbW1pdENvbmZpZ3VyYXRpb24oY29uc3QgUmVhbHRpbWVN
ZWRpYVNvdXJjZVNldHRpbmdzJikgZmluYWw7CiAgICAgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlw
ZSBkZXZpY2VUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gQ2FwdHVyZURldmljZTo6RGV2aWNl
VHlwZTo6U2NyZWVuOyB9CkBAIC0xNTIsNyArMTUyLDcgQEAgdm9pZCBNb2NrRGlzcGxheUNhcHR1
cmVyOjpjb21taXRDb25maWd1cmF0aW9uKGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5n
cyYKICAgICBtX3NldHRpbmdzID0gc2V0dGluZ3M7CiB9CiAKLURpc3BsYXlDYXB0dXJlU291cmNl
TWFjOjpEaXNwbGF5RnJhbWVUeXBlIE1vY2tEaXNwbGF5Q2FwdHVyZXI6OmdlbmVyYXRlRnJhbWUo
KQorRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6RGlzcGxheUZyYW1lVHlwZSBNb2NrRGlzcGxh
eUNhcHR1cmVyOjpnZW5lcmF0ZUZyYW1lKCkKIHsKICAgICBpZiAoYXV0byogaW1hZ2VCdWZmZXIg
PSBtX3NvdXJjZS0+aW1hZ2VCdWZmZXIoKSkKICAgICAgICAgcmV0dXJuIGltYWdlQnVmZmVyLT5j
b3B5TmF0aXZlSW1hZ2UoKTsKQEAgLTE4Niw3ICsxODYsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNh
c2UgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuOgogICAgICAgICBjYXNlIENhcHR1
cmVEZXZpY2U6OkRldmljZVR5cGU6OldpbmRvdzoKICNpZiBQTEFURk9STShNQUMpCi0gICAgICAg
ICAgICByZXR1cm4gRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OmNyZWF0ZShVbmlxdWVSZWY8RGlz
cGxheUNhcHR1cmVTb3VyY2VNYWM6OkNhcHR1cmVyPihtYWtlVW5pcXVlUmVmPE1vY2tEaXNwbGF5
Q2FwdHVyZXI+KGRldmljZSkpLCBkZXZpY2UsIGNvbnN0cmFpbnRzKTsKKyAgICAgICAgICAgIHJl
dHVybiBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpjcmVhdGUoVW5pcXVlUmVmPERpc3BsYXlD
YXB0dXJlU291cmNlQ29jb2E6OkNhcHR1cmVyPihtYWtlVW5pcXVlUmVmPE1vY2tEaXNwbGF5Q2Fw
dHVyZXI+KGRldmljZSkpLCBkZXZpY2UsIGNvbnN0cmFpbnRzKTsKICNlbGlmIFVTRShHU1RSRUFN
RVIpCiAgICAgICAgICAgICByZXR1cm4gTW9ja0Rpc3BsYXlDYXB0dXJlU291cmNlR1N0cmVhbWVy
OjpjcmVhdGUoZGV2aWNlLCBjb25zdHJhaW50cyk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLm1tCmlu
ZGV4IDFkNzZhODgwNmQwMTk5YmU4MTE3ZTU4Nzk3MjA5NGYzMTg1ZDJhZGUuLjBiYzE3ZmZmZmE3
YTQ4ZWM3YWJhNDkwY2YzYWYyM2IyYjVmNmI4ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW0KQEAgLTE0
MSw2ICsxNDEsOCBAQCBzdGF0aWMgTlNTdHJpbmcgKmFsZXJ0TWVzc2FnZVRleHQoTWVkaWFQZXJt
aXNzaW9uUmVhc29uIHJlYXNvbiwgY29uc3QgV2ViQ29yZTo6UwogICAgICAgICByZXR1cm4gW05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6V0VCX1VJX05TU1RSSU5HKEAiQWxsb3cg4oCcJUDigJ0g
dG8gdXNlIHlvdXIgY2FtZXJhIGFuZCBtaWNyb3Bob25lPyIsIEAiTWVzc2FnZSBmb3IgdXNlciBt
ZWRpYSBwcm9tcHQiKSwgdmlzaWJsZU9yaWdpbl07CiAgICAgY2FzZSBNZWRpYVBlcm1pc3Npb25S
ZWFzb246Ok1pY3JvcGhvbmU6CiAgICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZv
cm1hdDpXRUJfVUlfTlNTVFJJTkcoQCJBbGxvdyDigJwlQOKAnSB0byB1c2UgeW91ciBtaWNyb3Bo
b25lPyIsIEAiTWVzc2FnZSBmb3IgdXNlciBtaWNyb3Bob25lIGFjY2VzcyBwcm9tcHQiKSwgdmlz
aWJsZU9yaWdpbl07CisgICAgY2FzZSBNZWRpYVBlcm1pc3Npb25SZWFzb246OlNjcmVlbkNhcHR1
cmU6CisgICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpXRUJfVUlfTlNT
VFJJTkcoQCJBbGxvdyDigJwlQOKAnSB0byBvYnNlcnZlIHlvdXIgc2NyZWVuPyIsIEAiTWVzc2Fn
ZSBmb3Igc2NyZWVuIHNoYXJpbmcgcHJvbXB0IiksIHZpc2libGVPcmlnaW5dOwogICAgIGNhc2Ug
TWVkaWFQZXJtaXNzaW9uUmVhc29uOjpEZXZpY2VPcmllbnRhdGlvbjoKICAgICAgICAgcmV0dXJu
IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OldFQl9VSV9OU1NUUklORyhAIuKAnCVA4oCdIFdv
dWxkIExpa2UgdG8gQWNjZXNzIE1vdGlvbiBhbmQgT3JpZW50YXRpb24iLCBAIk1lc3NhZ2UgZm9y
IHJlcXVlc3RpbmcgYWNjZXNzIHRvIHRoZSBkZXZpY2UgbW90aW9uIGFuZCBvcmllbnRhdGlvbiIp
LCB2aXNpYmxlT3JpZ2luXTsKICAgICBjYXNlIE1lZGlhUGVybWlzc2lvblJlYXNvbjo6R2VvbG9j
YXRpb246CkBAIC0xNTcsNiArMTU5LDggQEAgc3RhdGljIE5TU3RyaW5nICphbGxvd0J1dHRvblRl
eHQoTWVkaWFQZXJtaXNzaW9uUmVhc29uIHJlYXNvbikKICAgICBjYXNlIE1lZGlhUGVybWlzc2lv
blJlYXNvbjo6Q2FtZXJhQW5kTWljcm9waG9uZToKICAgICBjYXNlIE1lZGlhUGVybWlzc2lvblJl
YXNvbjo6TWljcm9waG9uZToKICAgICAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkdfS0VZKEAiQWxs
b3ciLCAiQWxsb3cgKHVzZXJtZWRpYSkiLCBAIkFsbG93IGJ1dHRvbiB0aXRsZSBpbiB1c2VyIG1l
ZGlhIHByb21wdCIpOworICAgIGNhc2UgTWVkaWFQZXJtaXNzaW9uUmVhc29uOjpTY3JlZW5DYXB0
dXJlOgorICAgICAgICByZXR1cm4gV0VCX1VJX1NUUklOR19LRVkoQCJBbGxvdyIsICJBbGxvdyAo
c2NyZWVuc2hhcmluZykiLCBAIkFsbG93IGJ1dHRvbiB0aXRsZSBpbiBzY3JlZW4gc2hhcmluZyBw
cm9tcHQiKTsKICAgICBjYXNlIE1lZGlhUGVybWlzc2lvblJlYXNvbjo6RGV2aWNlT3JpZW50YXRp
b246CiAgICAgICAgIHJldHVybiBXRUJfVUlfU1RSSU5HX0tFWShAIkFsbG93IiwgIkFsbG93IChk
ZXZpY2UgbW90aW9uIGFuZCBvcmllbnRhdGlvbiBhY2Nlc3MpIiwgQCJCdXR0b24gdGl0bGUgaW4g
RGV2aWNlIE9yaWVudGF0aW9uIFBlcm1pc3Npb24gQVBJIHByb21wdCIpOwogICAgIGNhc2UgTWVk
aWFQZXJtaXNzaW9uUmVhc29uOjpHZW9sb2NhdGlvbjoKQEAgLTE3Myw2ICsxNzcsOCBAQCBzdGF0
aWMgTlNTdHJpbmcgKmRvTm90QWxsb3dCdXR0b25UZXh0KE1lZGlhUGVybWlzc2lvblJlYXNvbiBy
ZWFzb24pCiAgICAgY2FzZSBNZWRpYVBlcm1pc3Npb25SZWFzb246OkNhbWVyYUFuZE1pY3JvcGhv
bmU6CiAgICAgY2FzZSBNZWRpYVBlcm1pc3Npb25SZWFzb246Ok1pY3JvcGhvbmU6CiAgICAgICAg
IHJldHVybiBXRUJfVUlfU1RSSU5HX0tFWShAIkRvbuKAmXQgQWxsb3ciLCAiRG9u4oCZdCBBbGxv
dyAodXNlcm1lZGlhKSIsIEAiRGlzYWxsb3cgYnV0dG9uIHRpdGxlIGluIHVzZXIgbWVkaWEgcHJv
bXB0Iik7CisgICAgY2FzZSBNZWRpYVBlcm1pc3Npb25SZWFzb246OlNjcmVlbkNhcHR1cmU6Cisg
ICAgICAgIHJldHVybiBXRUJfVUlfU1RSSU5HX0tFWShAIkRvbuKAmXQgQWxsb3ciLCAiRG9u4oCZ
dCBBbGxvdyAoc2NyZWVuc2hhcmluZykiLCBAIkRpc2FsbG93IGJ1dHRvbiB0aXRsZSBpbiBzY3Jl
ZW4gc2hhcmluZyBwcm9tcHQiKTsKICAgICBjYXNlIE1lZGlhUGVybWlzc2lvblJlYXNvbjo6RGV2
aWNlT3JpZW50YXRpb246CiAgICAgICAgIHJldHVybiBXRUJfVUlfU1RSSU5HX0tFWShAIkNhbmNl
bCIsICJDYW5jZWwgKGRldmljZSBtb3Rpb24gYW5kIG9yaWVudGF0aW9uIGFjY2VzcykiLCBAIkJ1
dHRvbiB0aXRsZSBpbiBEZXZpY2UgT3JpZW50YXRpb24gUGVybWlzc2lvbiBBUEkgcHJvbXB0Iik7
CiAgICAgY2FzZSBNZWRpYVBlcm1pc3Npb25SZWFzb246Okdlb2xvY2F0aW9uOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KaW5kZXggZDc4ZjRjYzBkNTY1NTk0
YzBlODgxYTQ1OGJmZDIzODI3NTEyMjQ1YS4uOWFmNGE3YTk0ZmE5NzMyMDRjMTVkNTYwZGJmNmI3
ZDM0MjQyOGEzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlE
ZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRl
Lm1tCkBAIC0xMTE3LDYgKzExMTcsMTEgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVj
aWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3gKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmIChyZXF1ZXN0LnJlcXVpcmVzRGlzcGxheUNhcHR1
cmUoKSAmJiByZXF1ZXN0LmNhblByb21wdEZvckdldERpc3BsYXlNZWRpYSgpKSB7CisgICAgICAg
IHJlcXVlc3QucHJvbXB0Rm9yR2V0RGlzcGxheU1lZGlhKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKICAgICAvLyBGSVhNRTogUHJvdmlkZSBhIHNwZWNpZmljIGRlbGVnYXRlIGZvciBkaXNw
bGF5IGNhcHR1cmUuCiAgICAgaWYgKCFyZXF1ZXN0LnJlcXVpcmVzRGlzcGxheUNhcHR1cmUoKSAm
JiByZXNwb25kc1RvUmVxdWVzdE1lZGlhQ2FwdHVyZVBlcm1pc3Npb24pIHsKICAgICAgICAgYXV0
byBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRl
LCBAc2VsZWN0b3Iod2ViVmlldzpyZXF1ZXN0TWVkaWFDYXB0dXJlUGVybWlzc2lvbkZvck9yaWdp
bjppbml0aWF0ZWRCeUZyYW1lOnR5cGU6ZGVjaXNpb25IYW5kbGVyOikpOwpAQCAtMTEyNyw3ICsx
MTMyLDcgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3gKIAogICAgICAgICAgICAgc3dpdGNoIChk
ZWNpc2lvbikgewogICAgICAgICAgICAgY2FzZSBXS1Blcm1pc3Npb25EZWNpc2lvblByb21wdDoK
LSAgICAgICAgICAgICAgICBwcm90ZWN0ZWRSZXF1ZXN0LT5wcm9tcHQoKTsKKyAgICAgICAgICAg
ICAgICBwcm90ZWN0ZWRSZXF1ZXN0LT5wcm9tcHRGb3JHZXRVc2VyTWVkaWEoKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgV0tQZXJtaXNzaW9uRGVjaXNpb25HcmFu
dDogewogICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgdmlkZW9EZXZpY2VVSUQgPSBwcm90
ZWN0ZWRSZXF1ZXN0LT5yZXF1aXJlc1ZpZGVvQ2FwdHVyZSgpID8gcHJvdGVjdGVkUmVxdWVzdC0+
dmlkZW9EZXZpY2VVSURzKCkuZmlyc3QoKSA6IFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaAppbmRleCA0MWVhNDFkZmQ0
NzQ2YWZjYjdmYjMyNzQ1ZDgzZmQ3ZWY4NDJlYzAzLi4xNzVjMjVjMDQ0OTMyZmE1YjZhYTY1NzEy
OTkzMzlhMTJhMTYxMTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRp
YVBlcm1pc3Npb25VdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRp
YVBlcm1pc3Npb25VdGlsaXRpZXMuaApAQCAtNTQsNyArNTQsOCBAQCBlbnVtIGNsYXNzIE1lZGlh
UGVybWlzc2lvblJlYXNvbiB7CiAgICAgTWljcm9waG9uZSwKICAgICBEZXZpY2VPcmllbnRhdGlv
biwKICAgICBHZW9sb2NhdGlvbiwKLSAgICBTcGVlY2hSZWNvZ25pdGlvbgorICAgIFNwZWVjaFJl
Y29nbml0aW9uLAorICAgIFNjcmVlbkNhcHR1cmUKIH07CiAKICNpZiBQTEFURk9STShDT0NPQSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RQcm94eS5jcHAKaW5kZXggMmNmY2FlNzQ4NWQ1OWZkMWNhZTkzNGFlNDU4NjA3
ZWQwN2Y3MzQ4My4uNzViYmRjMWQwMjFhZTY1OTYxMjBmZjU2NjQ1ZDdmZWJiODRkOGYyMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RQcm94eS5jcHAKQEAgLTE0MCwxNyArMTQwLDI5IEBAIFN0cmluZyBjb252ZXJ0
RW51bWVyYXRpb25Ub1N0cmluZyhVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2Vy
TWVkaWFBY2NlCiAgICAgcmV0dXJuIHZhbHVlc1tzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0
aW9uVmFsdWUpXTsKIH0KIAotdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5Ojpw
cm9tcHQoKQordm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5Ojpwcm9tcHRGb3JH
ZXREaXNwbGF5TWVkaWEoKQogewogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JN
KENPQ09BKQotICAgIEFTU0VSVChtX21hbmFnZXIpOwotICAgIGlmICghbV9tYW5hZ2VyKSB7Cisg
ICAgQVNTRVJUKG1fbWFuYWdlciAmJiBjYW5Qcm9tcHRGb3JHZXREaXNwbGF5TWVkaWEoKSk7Cisg
ICAgaWYgKCFtX21hbmFnZXIgfHwgIWNhblByb21wdEZvckdldERpc3BsYXlNZWRpYSgpKSB7CiAg
ICAgICAgIGRlbnkoVXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uOjpQZXJtaXNzaW9uRGVuaWVk
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChyZXF1aXJlc0Rpc3BsYXlDYXB0
dXJlKCkpIHsKLSAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBnZXREaXNwbGF5TWVkaWEgcHJv
bXB0LCBmb3Igbm93IGRlbnkuCisgICAgYWxlcnRGb3JQZXJtaXNzaW9uKG1fbWFuYWdlci0+cGFn
ZSgpLCBNZWRpYVBlcm1pc3Npb25SZWFzb246OlNjcmVlbkNhcHR1cmUsIHRvcExldmVsRG9jdW1l
bnRTZWN1cml0eU9yaWdpbigpLmRhdGEoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAq
dGhpcyB9XShib29sIGdyYW50ZWQpIHsKKyAgICAgICAgaWYgKCFncmFudGVkKQorICAgICAgICAg
ICAgZGVueShVc2VyTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb246OlBlcm1pc3Npb25EZW5pZWQpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBhbGxvdygpOworICAgIH0pOworI2VuZGlmCit9CisK
K3ZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6cHJvbXB0Rm9yR2V0VXNlck1l
ZGlhKCkKK3sKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShDT0NPQSkKKyAg
ICBBU1NFUlQobV9tYW5hZ2VyKTsKKyAgICBpZiAoIW1fbWFuYWdlcikgewogICAgICAgICBkZW55
KFVzZXJNZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbjo6UGVybWlzc2lvbkRlbmllZCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC0xNTgsMTUgKzE3MCw0MCBAQCB2b2lkIFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0UHJveHk6OnByb21wdCgpCiAgICAgTWVkaWFQZXJtaXNzaW9uUmVhc29uIHJl
YXNvbiA9IE1lZGlhUGVybWlzc2lvblJlYXNvbjo6Q2FtZXJhOwogICAgIGlmIChyZXF1aXJlc0F1
ZGlvQ2FwdHVyZSgpKQogICAgICAgICByZWFzb24gPSByZXF1aXJlc1ZpZGVvQ2FwdHVyZSgpID8g
TWVkaWFQZXJtaXNzaW9uUmVhc29uOjpDYW1lcmFBbmRNaWNyb3Bob25lIDogTWVkaWFQZXJtaXNz
aW9uUmVhc29uOjpNaWNyb3Bob25lOworCiAgICAgYWxlcnRGb3JQZXJtaXNzaW9uKG1fbWFuYWdl
ci0+cGFnZSgpLCByZWFzb24sIHRvcExldmVsRG9jdW1lbnRTZWN1cml0eU9yaWdpbigpLmRhdGEo
KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XShib29sIGdyYW50ZWQpIHsK
ICAgICAgICAgaWYgKCFncmFudGVkKQogICAgICAgICAgICAgZGVueShVc2VyTWVkaWFBY2Nlc3NE
ZW5pYWxSZWFzb246OlBlcm1pc3Npb25EZW5pZWQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBhbGxvdygpOwogICAgIH0pOworI2VuZGlmCit9CisKK3ZvaWQgVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RQcm94eTo6ZG9EZWZhdWx0QWN0aW9uKCkKK3sKKyNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKSAmJiBQTEFURk9STShDT0NPQSkKKyAgICBpZiAocmVxdWlyZXNEaXNwbGF5Q2FwdHVyZSgp
KSB7CisgICAgICAgIGlmICghY2FuUHJvbXB0Rm9yR2V0RGlzcGxheU1lZGlhKCkpIHsKKyAgICAg
ICAgICAgIGRlbnkoVXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uOjpQZXJtaXNzaW9uRGVuaWVk
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHByb21wdEZvckdl
dERpc3BsYXlNZWRpYSgpOworICAgIH0gZWxzZQorICAgICAgICBwcm9tcHRGb3JHZXRVc2VyTWVk
aWEoKTsKICNlbHNlCiAgICAgZGVueSgpOwogI2VuZGlmCiB9CiAKK2Jvb2wgVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RQcm94eTo6Y2FuUHJvbXB0Rm9yR2V0RGlzcGxheU1lZGlhKCkKK3sKKyNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShJT1MpCisgICAgcmV0dXJuIHRydWU7
CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0UHJveHkuaAppbmRleCAyNGNlZTM4ZjliYzFkOGEyYTZhZTc0ZDI0YWFj
NDZmY2I4MWY1YzFlLi5kZjQxMmFiNjVlYzM3ZGQ0NzMwZWFmYzdjYjRlM2Q1NTE2MzQ5ZGIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RQcm94eS5oCkBAIC00NSw4ICs0NSwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGFsbG93KGNvbnN0IFN0cmluZyYgYXVkaW9EZXZpY2VVSUQsIGNvbnN0IFN0cmluZyYgdmlkZW9E
ZXZpY2VVSUQpOwogICAgIHZvaWQgYWxsb3coKTsKLSAgICB2b2lkIHByb21wdCgpOwotICAgIHZv
aWQgZG9EZWZhdWx0QWN0aW9uKCkgeyBwcm9tcHQoKTsgfQorICAgIHZvaWQgcHJvbXB0Rm9yR2V0
VXNlck1lZGlhKCk7CisgICAgdm9pZCBwcm9tcHRGb3JHZXREaXNwbGF5TWVkaWEoKTsKKyAgICBi
b29sIGNhblByb21wdEZvckdldERpc3BsYXlNZWRpYSgpOworICAgIHZvaWQgZG9EZWZhdWx0QWN0
aW9uKCk7CiAgICAgZW51bSBjbGFzcyBVc2VyTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb24geyBOb0Nv
bnN0cmFpbnRzLCBVc2VyTWVkaWFEaXNhYmxlZCwgTm9DYXB0dXJlRGV2aWNlcywgSW52YWxpZENv
bnN0cmFpbnQsIEhhcmR3YXJlRXJyb3IsIFBlcm1pc3Npb25EZW5pZWQsIE90aGVyRmFpbHVyZSB9
OwogICAgIHZvaWQgZGVueShVc2VyTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb24gPSBVc2VyTWVkaWFB
Y2Nlc3NEZW5pYWxSZWFzb246OlVzZXJNZWRpYURpc2FibGVkKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441313</attachid>
            <date>2021-10-14 17:34:34 -0700</date>
            <delta_ts>2021-10-15 08:21:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231455-20211014173433.patch</filename>
            <type>text/plain</type>
            <size>103248</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2M2MWNjNWYyZjlmMWJl
MDFlMWQxYWQyNjAxNjA4MTVlMTAwMGZjOS4uMDU5NjFkMGJhMWY0MDQzOTkyMDE1ZTk4MmEzYmFj
ZGZjZTRjZjFjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAyMS0xMC0xMyAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBTdXBw
b3J0IGdldERpc3BsYXlNZWRpYQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMxNDU1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NDA0NDQ5NT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQg
c2NyZWVuIGNhcHR1cmUgZm9yIGlPUyB1c2luZyBSZXBsYXlLaXQuIFJlcGxheUtpdCBvbmx5IGNh
cHR1cmVzIHdoZW4gdGhlIAorICAgICAgICBob3N0IGFwcGxpY2F0aW9uIGlzIGluIHRoZSBmb3Jl
Z3JvdW5kLCBzbyB0aGUgTWVkaWFTdHJlYW0gdHJhY2sgaXMgbXV0ZWQgd2hlbiB0aGUKKyAgICAg
ICAgYXBwIGlzIGJhY2tncm91bmRlZC4KKworICAgICAgICBnZXREaXNwbGF5TWVkaWEgYXZhaWxh
YmlsaXR5IHRvIEphdmFTY3JpcHQgaXMgY29udHJvbGxlZCBieSB0aGUgYFNjcmVlbkNhcHR1cmVF
bmFibGVkYAorICAgICAgICBzZXR0aW5nLCB3aGljaCBpcyBkaXNhYmxlZCBieSBkZWZhdWx0IG9u
IGlPUy4KKworICAgICAgICBJIGhhdmVuJ3QgZmlndXJlZCBvdXQgaG93IHRvIHRlc3QgdGhpcyBh
dXRvbWF0aWNhbGx5IHlldCBiZWNhdXNlIFJlcGxheUtpdCBhbHdheXMKKyAgICAgICAgc2hvd3Mg
aXRzIG93biBtb2RhbCB1c2VyIHByb21wdCBiZWZvcmUgaXQgYWxsb3dzIGNhcHR1cmUgdG8gYmVn
aW4uCisKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OiBBZGQgUmVwbGF5S2l0Q2FwdHVyZVNv
dXJjZS5tbS4gUmVuYW1lIERpc3BsYXlDYXB0dXJlU291cmNlTWFjLmNwcAorICAgICAgICB0byBE
aXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmNwcC4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajogQWRkIG5ldyBmaWxlcy4KKworICAgICAgICAqIGVuLmxwcm9q
L0xvY2FsaXphYmxlLnN0cmluZ3M6IEFkZCBsb2NhbGl6YWJsZSBzdHJpbmdzIGZvciBnZXREaXNw
bGF5TWVkaWEgcHJvbXB0LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VU
cmFuc2ZlclNlc3Npb25WVC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdl
VHJhbnNmZXJTZXNzaW9uVlQubW06CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVRyYW5zZmVyU2Vz
c2lvblZUOjpjb252ZXJ0Q01TYW1wbGVCdWZmZXIpOiBBZGQgYW4gb3B0aW9uYWwgTWVkaWFUaW1l
IHBhcmFtZXRlci4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNy
ZWF0ZU1lZGlhU2FtcGxlKTogQWRkIGEgTWVkaWFUaW1lIHBhcmFtZXRlci4KKworICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9SZXBsYXlLaXRDYXB0dXJlU291cmNlLmg6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9SZXBsYXlLaXRDYXB0dXJlU291
cmNlLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV2ViQ29yZVJlcGxheUtpdFNjcmVlblJlY29yZGVy
SGVscGVyIGluaXRXaXRoQ2FsbGJhY2s6XSk6CisgICAgICAgICgtW1dlYkNvcmVSZXBsYXlLaXRT
Y3JlZW5SZWNvcmRlckhlbHBlciBkaXNjb25uZWN0XSk6CisgICAgICAgICgtW1dlYkNvcmVSZXBs
YXlLaXRTY3JlZW5SZWNvcmRlckhlbHBlciBvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOm9mT2JqZWN0
OmNoYW5nZTpjb250ZXh0Ol0pOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGF5S2l0Q2FwdHVyZVNv
dXJjZTo6aXNBdmFpbGFibGUpOiBDaGVjayBSZXBsYXlLaXQgYXZhaWxhYmlsaXR5LgorICAgICAg
ICAoV2ViQ29yZTo6UmVwbGF5S2l0Q2FwdHVyZVNvdXJjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlcGxheUtpdENhcHR1cmVTb3VyY2U6OlJlcGxheUtpdENhcHR1cmVTb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVwbGF5S2l0Q2FwdHVyZVNvdXJjZTo6flJlcGxheUtpdENhcHR1
cmVTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGF5S2l0Q2FwdHVyZVNvdXJjZTo6c3Rh
cnQpOiBTdGFydCBzY3JlZW4gY2FwdHVyZSBvbmx5LgorICAgICAgICAoV2ViQ29yZTo6UmVwbGF5
S2l0Q2FwdHVyZVNvdXJjZTo6c2NyZWVuUmVjb3JkZXJEaWRPdXRwdXRWaWRlb1NhbXBsZSk6IFJl
dGFpbiB0aGUKKyAgICAgICAgdGhlIG5ldyBmcmFtZSwgc2V0IGludHJpbnNpYyBzaXplIHRvIHRo
ZSBpbWFnZSBzaXplLgorICAgICAgICAoV2ViQ29yZTo6UmVwbGF5S2l0Q2FwdHVyZVNvdXJjZTo6
Y2FwdHVyZVN0YXRlRGlkQ2hhbmdlKTogVXBkYXRlIG9ic2VydmVyIGlmIGludGVycnVwdGlvbgor
ICAgICAgICBzdGF0ZSBvciByZWNvcmRlciBzdGF0ZSBjaGFuZ2VzIHNvIGl0IGNhbiB1cGRhdGUg
dGhlIHRyYWNrJ3MgJ211dGVkJyBzdGF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlcGxheUtpdENh
cHR1cmVTb3VyY2U6OnN0b3ApOiBTdG9wIGNhcHR1cmUuCisgICAgICAgIChXZWJDb3JlOjpSZXBs
YXlLaXRDYXB0dXJlU291cmNlOjpnZW5lcmF0ZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
cGxheUtpdENhcHR1cmVTb3VyY2U6OnZlcmlmeUNhcHR1cmVJc0FjdGl2ZSk6IFJlcGxheUtpdCBk
b2Vzbid0IG5vdGlmeSAKKyAgICAgICAgd2hlbiBjYXB0dXJlIGlzIHBhdXNlZCwgc28gd2F0Y2gg
Zm9yIGNoYW5nZXMgYnkgbW9uaXRvcmluZyB0aGUgZnJhbWUgY291bnQuCisgICAgICAgIChXZWJD
b3JlOjpSZXBsYXlLaXRDYXB0dXJlU291cmNlOjpzdGFydENhcHR1cmVXYXRjaGRvZ1RpbWVyKTog
U3RhcnQgdGhlIHRpbWVyIHRoYXQKKyAgICAgICAgd2lsbCBtb25pdG9yIGZvciBjYXB0dXJlIHBh
dXNpbmcvcmVzdW1pbmcuCisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5EZXZpY2VVVUlEKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNjcmVlbkRldmljZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYXlL
aXRDYXB0dXJlU291cmNlOjpzY3JlZW5DYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXBsYXlLaXRDYXB0dXJlU291cmNlOjpzY3JlZW5DYXB0dXJlRGV2
aWNlcyk6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3Ry
ZWFtQ2FwdHVyZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDR0Rpc3BsYXlTdHJlYW1D
YXB0dXJlU291cmNlOjpnZW5lcmF0ZUZyYW1lKTogRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMgd2Fz
CisgICAgICAgIHJlbmFtZWQgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS4KKyAgICAgICAgKFdl
YkNvcmU6OkNHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2U6Om5ld0ZyYW1lKTogVGFrZSBhIFJl
dGFpblB0cjxJT1N1cmZhY2VSZWY+CisgICAgICAgIGluc3RlYWQgb2YgYSBEaXNwbGF5U3VyZmFj
ZS4KKyAgICAgICAgKFdlYkNvcmU6OkNHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2U6OmZyYW1l
QXZhaWxhYmxlSGFuZGxlcik6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9DR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpD
R0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlOjpEaXNwbGF5U3VyZmFjZTo6RGlzcGxheVN1cmZh
Y2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNv
dXJjZTo6RGlzcGxheVN1cmZhY2U6On5EaXNwbGF5U3VyZmFjZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpDR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlOjpEaXNwbGF5U3VyZmFjZTo6
b3BlcmF0b3I9KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNHRGlzcGxheVN0cmVhbUNh
cHR1cmVTb3VyY2U6OkRpc3BsYXlTdXJmYWNlOjppb1N1cmZhY2UgY29uc3QpOiBEZWxldGVkLgor
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NHRGlzcGxheVN0cmVhbVNjcmVl
bkNhcHR1cmVTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dE
aXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNH
RGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2U6OmNyZWF0ZSk6IERpc3BsYXlDYXB0dXJl
U291cmNlTWFjIHdhcworICAgICAgICByZW5hbWVkIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2Eu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVNYW5h
Z2VyQ29jb2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUNhcHR1cmVNYW5hZ2VyQ29j
b2E6OnVwZGF0ZURpc3BsYXlDYXB0dXJlRGV2aWNlcyk6IFVzZSAKKyAgICAgICAgUmVwbGF5S2l0
Q2FwdHVyZVNvdXJjZSBvbiBpT1MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMuY3Bw
LgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OkRpc3BsYXlDYXB0
dXJlU291cmNlQ29jb2EpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUNhcHR1cmVTb3VyY2VD
b2NvYTo6fkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Y2FwYWJpbGl0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OnNldHRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OnNldHRpbmdzRGlkQ2hhbmdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OnN0YXJ0UHJvZHVjaW5nRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpzdG9wUHJvZHVj
aW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpl
bGFwc2VkVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29h
Ojp1cGRhdGVGcmFtZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUNhcHR1cmVTb3Vy
Y2VDb2NvYTo6ZW1pdEZyYW1lKTogU3VwcG9ydCBjYXB0dXJlciByZXR1cm5pbmcgYSBDTVNhbXBs
ZUJ1ZmZlci4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OnNl
dExvZ2dlcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpD
YXB0dXJlcjo6c2V0TG9nZ2VyKTogU2V0IHRoZSBjYXB0dXJlcidzIGxvZ2dlci4KKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OkNhcHR1cmVyOjpsb2dDaGFubmVs
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OkNh
cHR1cmVyOjpPYnNlcnZlcjo6fk9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlD
YXB0dXJlU291cmNlQ29jb2E6OkNhcHR1cmVyOjpzZXRPYnNlcnZlcik6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpDYXB0dXJlcjo6Y2FwdHVyZXJJc1J1bm5p
bmdDaGFuZ2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNh
cHR1cmVTb3VyY2VDb2NvYS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlTWFjLmguCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Q2FwdHVyZVNvdXJjZUZhY3RvcnlNYWM6OmNyZWF0
ZURpc3BsYXlDYXB0dXJlU291cmNlKTogRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMKKyAgICAgICAg
cmVuYW1lZCB0byBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLgorCisgICAgICAgICogcGxhdGZv
cm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrRGlzcGxheUNhcHR1cmVyOjpnZW5lcmF0ZUZyYW1lKTogRGl0dG8uCisKIDIwMjEt
MTAtMTMgIEdhYnJpZWwgTmF2YSBNYXJpbm8gIDxnbmF2YW1hcmlub0BhcHBsZS5jb20+CiAKICAg
ICAgICAgU2tpcCBmYWxsYmFja0ZvbnRzRm9yUnVuV2l0aEl0ZXJhdG9yIGZvciBlbXB0eSBydW5z
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZwppbmRleCA1ZTkxMDJmYWNhMjI2MGNjMTk4OWM3YWIzMjQzOTZkYjEw
MWZjNmFmLi5jMTIyNWVkYTY1NjJkY2NlZDVhZDU4YzIwZGZhZDdiOTc1MjkyMTg2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0xMC0xMyAgRXJpYyBDYXJsc29uICA8
ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBTdXBwb3J0IGdldERpc3Bs
YXlNZWRpYQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjMxNDU1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NDA0NDQ5NT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBBTC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIHBhbC9pb3MvUmVwbGF5S2l0U29mdExpbmsuaDogQWRkZWQu
CisgICAgICAgICogcGFsL2lvcy9SZXBsYXlLaXRTb2Z0TGluay5tbTogQWRkZWQuCisKIDIwMjEt
MTAtMTMgIEFkaXR5YSBLZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtt
YWNPU10gQWRkIHN1cHBvcnQgZm9yIGFjY2VudC1jb2xvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlMGVjOWI0Yzcz
NTc1YTU5MmYwMTM2NjNlZDM5ZWM5ZWNiNmFjMWZjLi40NWNjYTJlYzkyZmI2ZmEyZDdkMjAxMDc3
MzYzZDcwOTFjY2UyMWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIxLTEwLTEzICBF
cmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFN1
cHBvcnQgZ2V0RGlzcGxheU1lZGlhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzE0NTUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg0MDQ0NDk1Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbToKKyAgICAgICAgKFdlYktpdDo6
YWxlcnRNZXNzYWdlVGV4dCk6IEFkZCB0ZXh0IGZvciBkZWZhdWx0IHNjcmVlbiBjYXB0dXJlIHBy
b21wdC4KKyAgICAgICAgKFdlYktpdDo6YWxsb3dCdXR0b25UZXh0KTogRGl0dG8uCisgICAgICAg
IChXZWJLaXQ6OmRvTm90QWxsb3dCdXR0b25UZXh0KTogRGl0dG8uCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6
VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KTogQ2Fs
bAorICAgICAgICBkZWZhdWx0IGdldERpc3BsYXlNZWRpYSBwcm9tcHQgaWYgdGhlIGRlbGVnYXRl
IGRvZXNuJ3QgaW1wbGVtZW50IHRoZSBwcml2YXRlCisgICAgICAgIHByb21wdCBzZWxlY3Rvci4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OnByb21wdEZvckdl
dERpc3BsYXlNZWRpYSk6IE5ldyBkZWZhdWx0CisgICAgICAgIGdldERpc3BsYXlNZWRpYSBwcm9t
cHQuCisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OnBy
b21wdEZvckdldFVzZXJNZWRpYSk6IAorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdFByb3h5Ojpkb0RlZmF1bHRBY3Rpb24pOiBDYWxsIHByb21wdEZvckdldERpc3Bs
YXlNZWRpYQorICAgICAgICBvciBwcm9tcHRGb3JHZXRVc2VyTWVkaWEgYWNjb3JkaW5nIHRvIHRo
ZSByZXF1ZXN0IHR5cGUuCisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0UHJveHk6OmNhblByb21wdEZvckdldERpc3BsYXlNZWRpYSk6CisgICAgICAgIChXZWJLaXQ6
OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OnByb21wdCk6IERlbGV0ZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuaDoKKyAgICAg
ICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6ZG9EZWZhdWx0QWN0
aW9uKTogRGVsZXRlZC4KKwogMjAyMS0xMC0xMyAgUGVyIEFybmUgIDxwdm9sbGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXN0cmljdCAiZGFyd2luLW5vdGlmaWNhdGlvbi1wb3N0IiB0byBhIG1p
bmltYWwgc2V0IGluIHRoZSBXUCBzYW5kYm94CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFM
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggM2U5MDUzZTRjOGMyNzIwZTY3ZWMyNzcz
YTVhMzIwNTlmZTAyNzA2Ni4uYTU1MWM2NzAzMzQ3MTc1NGRhZmJhOTU0ZmUwOTcwOTkxNDUyZjJl
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMjEsNiArMjEsOCBAQAogLyogRW5kIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0aW9u
ICovCiAKIC8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCisJCTA3MUMwMDM3MjcwN0VE
RjAwMEQwMjdDNyAvKiBSZXBsYXlLaXRTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MUMwMDM1MjcwN0VERjAwMEQwMjdDNyAvKiBSZXBs
YXlLaXRTb2Z0TGluay5tbSAqLzsgfTsKKwkJMDcxQzAwMzgyNzA3RURGMDAwRDAyN0M3IC8qIFJl
cGxheUtpdFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwNzFDMDAzNjI3MDdFREYwMDBEMDI3QzcgLyogUmVwbGF5S2l0U29mdExpbmsuaCAq
LzsgfTsKIAkJMDc2MTFEQjYyNDNGQTVCRjAwRDgwNzA0IC8qIFVzYWdlVHJhY2tpbmdTb2Z0TGlu
ay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2MTFE
QjQyNDNGQTVCRTAwRDgwNzA0IC8qIFVzYWdlVHJhY2tpbmdTb2Z0TGluay5oICovOyB9OwogCQkw
NzYxMURCNzI0M0ZBNUJGMDBEODA3MDQgLyogVXNhZ2VUcmFja2luZ1NvZnRMaW5rLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2MTFEQjUyNDNGQTVC
RjAwRDgwNzA0IC8qIFVzYWdlVHJhY2tpbmdTb2Z0TGluay5tbSAqLzsgfTsKIAkJMDc3RTg3QjEy
MjZBNDYwMjAwQTJBRkYwIC8qIEFWRm91bmRhdGlvblNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc3RTg3QUYyMjZBNDYwMjAwQTJBRkYw
IC8qIEFWRm91bmRhdGlvblNvZnRMaW5rLm1tICovOyB9OwpAQCAtMjM1LDYgKzIzNyw4IEBACiAv
KiBFbmQgUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRmls
ZVJlZmVyZW5jZSBzZWN0aW9uICovCisJCTA3MUMwMDM1MjcwN0VERjAwMEQwMjdDNyAvKiBSZXBs
YXlLaXRTb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFJlcGxheUtpdFNvZnRMaW5rLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzFD
MDAzNjI3MDdFREYwMDBEMDI3QzcgLyogUmVwbGF5S2l0U29mdExpbmsuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVwbGF5S2l0U29mdExpbmsuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMDc2MTFEQjQyNDNGQTVCRTAwRDgwNzA0IC8qIFVzYWdlVHJhY2tpbmdT
b2Z0TGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2FnZVRyYWNraW5n
U29mdExpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2MTFEQjUyNDNGQTVC
RjAwRDgwNzA0IC8qIFVzYWdlVHJhY2tpbmdTb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVzYWdlVHJhY2tpbmdTb2Z0TGluay5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc3RTg3QUYyMjZBNDYwMjAwQTJBRkYwIC8qIEFWRm91bmRh
dGlvblNvZnRMaW5rLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
QVZGb3VuZGF0aW9uU29mdExpbmsubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03
NzEsNiArNzc1LDggQEAKIAkJCQk1QzdDNzg3MjIzQUMzRTc3MDA2NUY0N0UgLyogTWFuYWdlZENv
bmZpZ3VyYXRpb25Tb2Z0TGluay5tbSAqLywKIAkJCQk0NDUwRkM5RTIxRjVGNjAyMDA0REZBNTYg
LyogUXVpY2tMb29rU29mdExpbmsuaCAqLywKIAkJCQk0NDUwRkM5RDIxRjVGNjAyMDA0REZBNTYg
LyogUXVpY2tMb29rU29mdExpbmsubW0gKi8sCisJCQkJMDcxQzAwMzYyNzA3RURGMDAwRDAyN0M3
IC8qIFJlcGxheUtpdFNvZnRMaW5rLmggKi8sCisJCQkJMDcxQzAwMzUyNzA3RURGMDAwRDAyN0M3
IC8qIFJlcGxheUtpdFNvZnRMaW5rLm1tICovLAogCQkJCTA3OUQxRDk1MjY5NTBERDcwMDg4MzU3
NyAvKiBTeXN0ZW1TdGF0dXNTb2Z0TGluay5oICovLAogCQkJCTA3OUQxRDk2MjY5NTBERDcwMDg4
MzU3NyAvKiBTeXN0ZW1TdGF0dXNTb2Z0TGluay5tbSAqLywKIAkJCQkyRTEzNDJDQTIxNUFBMTBB
MDA3MTk5RDIgLyogVUlLaXRTb2Z0TGluay5oICovLApAQCAtOTkyLDYgKzk5OCw3IEBACiAJCQkJ
NDQ1MEZDQTAyMUY1RjYwMjAwNERGQTU2IC8qIFF1aWNrTG9va1NvZnRMaW5rLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwQzVBRjkyMDFGNDNBNEM3MDAyRUFDMDIgLyogUXVpY2tMb29rU1BJLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGNEM4NUE0RjI2NTg1NTFBMDA1Qjg5Q0MgLyogUXVpY2tMb29rVUlT
b2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDcxQzAwMzgyNzA3RURGMDAwRDAyN0M3IC8q
IFJlcGxheUtpdFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDk3NEVBMzI2NUVFQTIy
MDBCNDlCOEMgLyogUmV2ZWFsU29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ0Mjk1NkNE
MjE4QTcyREYwMDgwREI1NCAvKiBSZXZlYWxTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MEFC
OEYxMjBBRTJFOEQwMEI4QkU4NyAvKiBTZWNLZXlQcm94eVNQSS5oIGluIEhlYWRlcnMgKi8sCkBA
IC0xMTM2LDYgKzExNDMsNyBAQAogCQkJCUExMTc1QjRGMUY2QjMzNzMwMEM0QjlGMCAvKiBQb3B1
cE1lbnUubW0gaW4gU291cmNlcyAqLywKIAkJCQk0NDUwRkM5RjIxRjVGNjAyMDA0REZBNTYgLyog
UXVpY2tMb29rU29mdExpbmsubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNEM4NUE0RTI2NTg1NTFB
MDA1Qjg5Q0MgLyogUXVpY2tMb29rVUlTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAorCQkJCTA3
MUMwMDM3MjcwN0VERjAwMEQwMjdDNyAvKiBSZXBsYXlLaXRTb2Z0TGluay5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUY0OTc0RUE0MjY1RUVBMjIwMEI0OUI4QyAvKiBSZXZlYWxTb2Z0TGluay5tbSBp
biBTb3VyY2VzICovLAogCQkJCUEzQzY2Q0RDMUY0NjJENkEwMDlFNkVFOSAvKiBTZXNzaW9uSUQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTNBQjZFNTIxRjNEMURDNTAwOUMxNEIxIC8qIFNsZWVw
RGlzYWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2lvcy9SZXBsYXlLaXRTb2Z0TGluay5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9p
b3MvUmVwbGF5S2l0U29mdExpbmsuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZjI3MDY3MjY4NzhkYTFiZGVmYjA1
YWJkNDQ4OWU2MjgzNGE0ZGRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9pb3MvUmVwbGF5S2l0U29mdExpbmsuaApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
CisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgUExBVEZPUk0oSU9TKQorCisjaW1wb3J0IDxSZXBsYXlL
aXQvUmVwbGF5S2l0Lmg+CisjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKworU09GVF9MSU5L
X0ZSQU1FV09SS19GT1JfSEVBREVSKFBBTCwgUmVwbGF5S2l0KQorCitTT0ZUX0xJTktfQ0xBU1Nf
Rk9SX0hFQURFUihQQUwsIFJQU2NyZWVuUmVjb3JkZXIpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9pb3MvUmVwbGF5S2l0U29mdExpbmsubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2lvcy9SZXBsYXlLaXRTb2Z0TGluay5tbQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOGUw
ZDY2NjRkYjI4MzI2MTJiMTgxMDBiYmEwZTQ3ZTcxY2Q1YzU0Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9pb3MvUmVwbGF5S2l0U29mdExpbmsubW0KQEAgLTAsMCAr
MSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2lmIFBMQVRGT1JN
KElPUykKKworI2ltcG9ydCA8UmVwbGF5S2l0L1JlcGxheUtpdC5oPgorI2ltcG9ydCA8d3RmL1Nv
ZnRMaW5raW5nLmg+CisKK1NPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJDRShQQUwsIFJlcGxh
eUtpdCkKKworU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBSZXBs
YXlLaXQsIFJQU2NyZWVuUmVjb3JkZXIsIFBBTF9FWFBPUlQpCisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXNDb2NvYS50eHQKaW5kZXggYTRjMGE3NjI3YzM3ODFkZmNkMDQ5MDZmYzUyMzMwOWM5MDczMGMy
Yy4uYWU5M2NjNmFlZDEzYzRkZDJiNDFhMmQxYTJjNzE4MzI3N2U3MzE1NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzQ29jb2EudHh0CkBAIC01MjIsOSArNTIyLDExIEBAIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIv
Y29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9jb2NvYS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLmNwcAogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vY29jb2EvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXQuY3BwCiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9BdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlclVuaXQuY3BwCitwbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9EaXNwbGF5Q2FwdHVy
ZVNvdXJjZUNvY29hLmNwcAogcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9u
Q2FwdHVyZURldmljZS5tbQogcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9u
Q2FwdHVyZURldmljZU1hbmFnZXIubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9p
b3MvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZUlPUy5tbQorcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9z
L1JlcGxheUtpdENhcHR1cmVTb3VyY2UubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJDb2NvYS5jcHAKIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0KQEAgLTUzNSw3ICs1MzcsNiBAQCBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZS5jcHAKIHBsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcAogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlTWFuYWdlckNvY29hLmNwcAotcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlTWFjLmNwcAogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL01lZGlhU3RyZWFtVHJhY2tBdWRpb1NvdXJjZVByb3ZpZGVyQ29jb2EuY3BwCiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja0F1ZGlvU2hhcmVkVW5pdC5tbQogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzUxOTc0YTJi
N2ZmMzc2ZTA1ZmMxMTNiZTdkMzY3MTdlN2M5MWE3NS4uZDU3NGI3YTZhMDRiMDc4OWUzZmFjMjJh
NDM3MWE1MTRlNzQyZWQ4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTgsNiArOTgsOCBAQAogCQkwNzBFODFEMTFCRjI3NjU2
MDAxRkRBNDggLyogVmlkZW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwRTgxRDAxQkYyNzY1NjAwMUZEQTQ4
IC8qIFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uaCAqLzsgfTsKIAkJMDcwRjU0OTgxN0Yx
MkY2QjAwMTY5RTA0IC8qIE1lZGlhU3RyZWFtQ29uc3RyYWludHNWYWxpZGF0aW9uQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzBGNTQ5NzE3
RjEyRjZCMDAxNjlFMDQgLyogTWVkaWFTdHJlYW1Db25zdHJhaW50c1ZhbGlkYXRpb25DbGllbnQu
aCAqLzsgfTsKIAkJMDcxQTlFQzMxNjhGQkM1NTAwMjYyOUY5IC8qIFRleHRUcmFja0N1ZUdlbmVy
aWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MUE5
RUMxMTY4RkI1NkMwMDI2MjlGOSAvKiBUZXh0VHJhY2tDdWVHZW5lcmljLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMDcxQzAwMzQyNzA3RDk1NTAw
RDAyN0M3IC8qIFJlcGxheUtpdENhcHR1cmVTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MUMwMDMzMjcwN0Q5NDQwMEQwMjdDNyAvKiBSZXBs
YXlLaXRDYXB0dXJlU291cmNlLmggKi87IH07CisJCTA3MUMwMDRCMjcwQjg2NDkwMEQwMjdDNyAv
KiBSZXBsYXlLaXRDYXB0dXJlU291cmNlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDcxQzAwMzIyNzA3RDk0MzAwRDAyN0M3IC8qIFJlcGxheUtpdENh
cHR1cmVTb3VyY2UubW0gKi87IH07CiAJCTA3MUU0OTcwMUFENUFCNUUwMDhBNTBCNCAvKiBNZWRp
YVBsYXliYWNrVGFyZ2V0Q29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA3MUU0OTZGMUFENUFCNUUwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29jb2EuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwNzI1RUZBOTIzOUFENzkzMDBBNTM4QTkgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzlGNUU0QjBGM0JF
QkVBMDA1RTA3ODIgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDcyNzdFNEQxN0QwMThDQzAwMTU1MzREIC8q
IEpTTWVkaWFTdHJlYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3Mjc3RTQxMTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtLmggKi87IH07
CkBAIC0yMDcsNiArMjA5LDcgQEAKIAkJMDdCNzExNkQxRDg5OUU2MzAwOUYwRkZCIC8qIENhcHR1
cmVEZXZpY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3QjcxMTZBMUQ4OTlFNjMwMDlGMEZGQiAvKiBDYXB0dXJlRGV2aWNlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDdCNzExNkYxRDg5OUU2MzAw
OUYwRkZCIC8qIENhcHR1cmVEZXZpY2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0I3MTE2QzFEODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVy
ZURldmljZU1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwN0I5M0ZGQzIzQjk0RUM3MDAzNkY4RUEgLyogTUlNRVR5cGVDYWNoZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdCOTNGRjkyM0I5
MkFBQTAwMzZGOEVBIC8qIE1JTUVUeXBlQ2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwN0JCMUU3MDI3MTc2Q0Q5MDAxREYyODkgLyogRGlz
cGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDdCQjFFNkYyNzE3NkNDQTAwMURGMjg5IC8qIERpc3BsYXlDYXB0dXJl
U291cmNlQ29jb2EuaCAqLzsgfTsKIAkJMDdDMDQ2QzQxRTQyNTA4QjAwNzIwMUU3IC8qIENBQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDczQjg3NTgxRTQwRENGRDAwNzFDMEVDIC8qIENBQXVkaW9TdHJlYW1EZXNj
cmlwdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTA3QzA0NkNCMUU0MjY0MTMwMDcyMDFFNyAvKiBBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzNCODc1NjFF
NDBEQ0U1MDA3MUMwRUMgLyogQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3QzE0ODJFMjYxMkEyMUYwMDc3
NTgyOCAvKiBNZWRpYVNlc3Npb25Db29yZGluYXRvclN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzdCQTU4ODI2MTI2RDY2MDA3MkYxOUYgLyog
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC01ODUyLDYgKzU4NTUsOCBAQAogCQkwNzE3NzY1RjI2
QzMwM0I3MDBBNjMyOTkgLyogQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IENHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2Uu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MUE5RUMwMTY4RkI1NkMwMDI2MjlG
OSAvKiBUZXh0VHJhY2tDdWVHZW5lcmljLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFRleHRUcmFja0N1ZUdlbmVyaWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwNzFBOUVDMTE2OEZCNTZDMDAyNjI5RjkgLyogVGV4dFRyYWNrQ3VlR2VuZXJpYy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0VHJhY2tDdWVHZW5lcmljLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MUMwMDMyMjcwN0Q5NDMwMEQwMjdDNyAv
KiBSZXBsYXlLaXRDYXB0dXJlU291cmNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVwbGF5
S2l0Q2FwdHVyZVNvdXJjZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcxQzAw
MzMyNzA3RDk0NDAwRDAyN0M3IC8qIFJlcGxheUtpdENhcHR1cmVTb3VyY2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwNzFFNDk2RDFBRDVBQTBEMDA4QTUwQjQgLyogTWVkaWFQbGF5YmFja1RhcmdldENvY29h
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVkaWFQbGF5YmFj
a1RhcmdldENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzFFNDk2RjFB
RDVBQjVFMDA4QTUwQjQgLyogTWVkaWFQbGF5YmFja1RhcmdldENvY29hLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwNzIyMUI0QzE3Q0VDMzI3MDA4NDhFNTEgLyogTWVkaWFT
dHJlYW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFTdHJl
YW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjA0MCwxMCArNjA0NSw4IEBA
CiAJCTA3OUY1RTRCMEYzQkVCRUEwMDVFMDc4MiAvKiBNZWRpYVBsYXllclByaXZhdGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5ZXJQcml2YXRlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QTZEMUU5MTQ5MTEzNzcwMDA1MUQwQyAvKiBNZWRp
YUZyYWdtZW50VVJJUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IE1lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwN0E2RDFFQTE0OTExMzc3MDAwNTFEMEMgLyogTWVkaWFGcmFnbWVudFVSSVBhcnNlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYUZyYWdtZW50VVJJUGFyc2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3QTZEODQ3MUZFQjcwMEIwMDY0NDFE
RSAvKiBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA3QTZEODQ4MUZFQjcwMEIwMDY0NDFERSAvKiBEaXNwbGF5Q2FwdHVy
ZU1hbmFnZXJDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBE
aXNwbGF5Q2FwdHVyZU1hbmFnZXJDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA3QTZEODQ5MUZFQjcwMEMwMDY0NDFERSAvKiBEaXNwbGF5Q2FwdHVyZU1hbmFnZXJDb2Nv
YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5Q2FwdHVyZU1hbmFn
ZXJDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwN0E2RDg0QTFGRUI3MDBE
MDA2NDQxREUgLyogRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMDdBQTZCNjkxNjZEMDE5NTAwRDQ1NjcxIC8qIEluYmFuZFRleHRUcmFj
a1ByaXZhdGVBVkZPYmpDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluYmFu
ZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTA3QUE2QjZBMTY2RDAxOTUwMEQ0NTY3MSAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2Jq
Qy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEluYmFuZFRleHRU
cmFja1ByaXZhdGVBVkZPYmpDLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0FC
OTk2NTE4REEzQzAxMDAxODc3MUUgLyogUlRDQ29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSVENDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC02MDYzLDYgKzYwNjYsOCBAQAogCQkwN0I3MTE2QzFEODk5RTYzMDA5RjBG
RkIgLyogQ2FwdHVyZURldmljZU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ2FwdHVyZURldmljZU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDdCOTNGRjkyM0I5MkFBQTAwMzZGOEVBIC8qIE1JTUVUeXBlQ2FjaGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTUlNRVR5cGVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0I5
M0ZGQjIzQjkyQUFCMDAzNkY4RUEgLyogTUlNRVR5cGVDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBNSU1FVHlwZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdC
QjFFNkUyNzE3NkNDQTAwMURGMjg5IC8qIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3QkIxRTZGMjcxNzZDQ0EwMDFERjI4OSAvKiBEaXNwbGF5
Q2FwdHVyZVNvdXJjZUNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlDYXB0dXJlU291cmNl
Q29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdDMTQ4MjkyNjEyOTU1QzAw
Nzc1ODI4IC8qIEpTTWVkaWFTZXNzaW9uUmVhZHlTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01l
ZGlhU2Vzc2lvblJlYWR5U3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdD
MTQ4MkIyNjEyOTU1RDAwNzc1ODI4IC8qIEpTTWVkaWFTZXNzaW9uUmVhZHlTdGF0ZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU01lZGlhU2Vzc2lvblJlYWR5U3RhdGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwN0MxNDgyQzI2MTI5NTVFMDA3NzU4MjggLyogSlNNZWRpYVNl
c3Npb25Db29yZGluYXRvclN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3JTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
Nzc5MSw4ICsxNzc5Niw2IEBACiAJCQkJM0YzQkI1ODMxRTcwOUVFNDAwQzcwMUYyIC8qIENvcmVB
dWRpb0NhcHR1cmVTb3VyY2UuaCAqLywKIAkJCQkwN0E2RDg0ODFGRUI3MDBCMDA2NDQxREUgLyog
RGlzcGxheUNhcHR1cmVNYW5hZ2VyQ29jb2EuY3BwICovLAogCQkJCTA3QTZEODQ5MUZFQjcwMEMw
MDY0NDFERSAvKiBEaXNwbGF5Q2FwdHVyZU1hbmFnZXJDb2NvYS5oICovLAotCQkJCTA3QTZEODQ3
MUZFQjcwMEIwMDY0NDFERSAvKiBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5jcHAgKi8sCi0JCQkJ
MDdBNkQ4NEExRkVCNzAwRDAwNjQ0MURFIC8qIERpc3BsYXlDYXB0dXJlU291cmNlTWFjLmggKi8s
CiAJCQkJNDE3NEU5MjAyNTM1RENERDAwRkU0MjAyIC8qIE1lZGlhU3RyZWFtVHJhY2tBdWRpb1Nv
dXJjZVByb3ZpZGVyQ29jb2EuY3BwICovLAogCQkJCTQxNzRFOTFFMjUzNURDRDYwMEZFNDIwMiAv
KiBNZWRpYVN0cmVhbVRyYWNrQXVkaW9Tb3VyY2VQcm92aWRlckNvY29hLmggKi8sCiAJCQkJMDc0
NEVDRUIxRTBDNEFFNTAwMEQwOTQ0IC8qIE1vY2tBdWRpb1NoYXJlZFVuaXQuaCAqLywKQEAgLTIw
MTA4LDYgKzIwMTExLDggQEAKIAkJCQk0MUMzQjg5RjI2NDlCMUI3MDA0RUQ0REUgLyogQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQuaCAqLywKIAkJCQk0MUMzQjhBMDI2
NDlCMUI3MDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmNwcCAq
LywKIAkJCQk0MUMzQjg5QjI2NDlCMUI2MDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJVbml0LmggKi8sCisJCQkJMDdCQjFFNkUyNzE3NkNDQTAwMURGMjg5IC8qIERpc3Bs
YXlDYXB0dXJlU291cmNlQ29jb2EuY3BwICovLAorCQkJCTA3QkIxRTZGMjcxNzZDQ0EwMDFERjI4
OSAvKiBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNv
Y29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI4ODAyLDYgKzI4ODA3LDggQEAK
IAkJCQlDREM2NzUyMDFFQUVBOUI3MDA3MjdDODQgLyogQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2
aWNlTWFuYWdlci5tbSAqLywKIAkJCQkwN0FGRjQyMDFFRkIxNDQ3MDBCNTQ1QjMgLyogQ29yZUF1
ZGlvQ2FwdHVyZVNvdXJjZUlPUy5oICovLAogCQkJCTA3QUZGNDIxMUVGQjE0NDcwMEI1NDVCMyAv
KiBDb3JlQXVkaW9DYXB0dXJlU291cmNlSU9TLm1tICovLAorCQkJCTA3MUMwMDMzMjcwN0Q5NDQw
MEQwMjdDNyAvKiBSZXBsYXlLaXRDYXB0dXJlU291cmNlLmggKi8sCisJCQkJMDcxQzAwMzIyNzA3
RDk0MzAwRDAyN0M3IC8qIFJlcGxheUtpdENhcHR1cmVTb3VyY2UubW0gKi8sCiAJCQkpOwogCQkJ
cGF0aCA9IGlvczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zMjQ1Niw2ICszMjQ2
Myw3IEBACiAJCQkJODM1RDU0QzUxRjRERTUzODAwRTYwNjcxIC8qIERpcmVjdG9yeUZpbGVMaXN0
Q3JlYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQ3QTA5RDEyMEE5M0E5NzAwMjQwRkFFIC8q
IERpc2FibGVkQWRhcHRhdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdFREFBRkM5MTlBMkND
REMwMDM0REZEMSAvKiBEaXNrQ2FjaGVNb25pdG9yQ29jb2EuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTA3QkIxRTcwMjcxNzZDRDkwMDFERjI4OSAvKiBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkU1RkJEMzFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxp
c3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTU1QUQwOTQwMjQwODk2NDAwMERFNEQyRiAvKiBEaXNw
bGF5TGlzdERyYXdpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1NUFEMDkzRTI0MDg5
NjM1MDBERTREMkYgLyogRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCkBA
IC0zNTA4OCw2ICszNTA5Niw3IEBACiAJCQkJQTg5Q0NDNTMwRjQ0RTk4MTAwQjVEQTEwIC8qIFJl
cGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREY1MTJDRTFE
ODczRTQ3MDAxRDY3ODAgLyogUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5MzMwOUUwQTA5OUU2NDkyMDA1NkU1ODEgLyogUmVwbGFjZVNlbGVjdGlvbkNv
bW1hbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3MUMwMDM0MjcwN0Q5NTUwMEQwMjdDNyAvKiBS
ZXBsYXlLaXRDYXB0dXJlU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkRENkUxRjI2RTdE
QkU3MDA4QzFGNEMgLyogUmVwb3J0aW5nRW5kcG9pbnRzQ2FjaGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQ5OThBRUM2MTNGOUQwRUEwMDkwQjFBQSAvKiBSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxs
YmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNERDAxMjUxRjEyRDAwM0VGMjY5IC8qIFJl
c2V0SW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTM2ODEwLDYgKzM2ODE5LDcgQEAKIAkJ
CQlDREEyOUEzMDFDQkY3NEQ0MDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZL
aXQubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREEyOUExNjFDQkRBNTZDMDA5MDFDQ0YgLyogUGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5MjQyNDky
MTI3QjkzRTAwNjM0RkNGIC8qIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLm1tIGlu
IFNvdXJjZXMgKi8sCisJCQkJMDcxQzAwNEIyNzBCODY0OTAwRDAyN0M3IC8qIFJlcGxheUtpdENh
cHR1cmVTb3VyY2UubW0gaW4gU291cmNlcyAqLywKIAkJCQk1QzJCMUFFQzIyMzk3RUJDMDBCOTFD
RjcgLyogUmVzb3VyY2VSZXNwb25zZUNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1MTE1
NkUxMkIxNzQ5QzAwQzk2NzU0IC8qIFNjcm9sbEFuaW1hdG9yTWFjLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEZFRTM3MTEyNkYxOTUyOTAwMUI1MTg0IC8qIFNjcm9sbGJhcnNDb250cm9sbGVyTWFj
Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lbi5scHJvai9M
b2NhbGl6YWJsZS5zdHJpbmdzIGIvU291cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUu
c3RyaW5ncwppbmRleCBlMTI5Y2NhOTgzYjllZmQ0ZjgzZTc0YjIyYjRiZjM2NzQ5OGExNWQzLi5h
MDU5ZDdiYjJlMGJhZjNiMjAwZjk0ZmY3MTIzMDI5YzgwOWRiNjQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKQEAgLTE2Myw2ICsxNjMsOSBAQAogLyog
QWxsb3cgYnV0dG9uIHRpdGxlIGluIHVzZXIgbWVkaWEgcHJvbXB0ICovCiAiQWxsb3cgKHVzZXJt
ZWRpYSkiID0gIkFsbG93IjsKIAorLyogQWxsb3cgYnV0dG9uIHRpdGxlIGluIHNjcmVlbiBzaGFy
aW5nIHByb21wdCAqLworIkFsbG93IChzY3JlZW5zaGFyaW5nKSIgPSAiQWxsb3ciOworCiAvKiBN
ZXNzYWdlIGZvciByZXF1ZXN0aW5nIGNyb3NzLXNpdGUgY29va2llIGFuZCB3ZWJzaXRlIGRhdGEg
YWNjZXNzLiAqLwogIkFsbG93IOKAnCVA4oCdIGFuZCDigJwlQOKAnSB0byB1c2UgY29va2llcyBh
bmQgd2Vic2l0ZSBkYXRhIHdoaWxlIGJyb3dzaW5nIOKAnCVA4oCdPyIgPSAiQWxsb3cg4oCcJUDi
gJ0gYW5kIOKAnCVA4oCdIHRvIHVzZSBjb29raWVzIGFuZCB3ZWJzaXRlIGRhdGEgd2hpbGUgYnJv
d3Npbmcg4oCcJUDigJ0/IjsKIApAQCAtMTg0LDYgKzE4Nyw5IEBACiAvKiBNZXNzYWdlIGZvciB1
c2VyIG1pY3JvcGhvbmUgYWNjZXNzIHByb21wdCAqLwogIkFsbG93IOKAnCVA4oCdIHRvIHVzZSB5
b3VyIG1pY3JvcGhvbmU/IiA9ICJBbGxvdyDigJwlQOKAnSB0byB1c2UgeW91ciBtaWNyb3Bob25l
PyI7CiAKKy8qIE1lc3NhZ2UgZm9yIHNjcmVlbiBzaGFyaW5nIHByb21wdC4gKi8KKyJBbGxvdyDi
gJwlQOKAnSB0byBvYnNlcnZlIHlvdXIgc2NyZWVuPyIgPSAiQWxsb3cg4oCcJUDigJ0gdG8gb2Jz
ZXJ2ZSB5b3VyIHNjcmVlbj8iOworCiAvKiBXS0Vycm9yVW5rbm93biBkZXNjcmlwdGlvbiAqLwog
IkFuIHVua25vd24gZXJyb3Igb2NjdXJyZWQiID0gIkFuIHVua25vd24gZXJyb3Igb2NjdXJyZWQi
OwogCkBAIC0zOTEsNiArMzk3LDkgQEAKIC8qIERpc2FsbG93IGJ1dHRvbiB0aXRsZSBpbiB1c2Vy
IG1lZGlhIHByb21wdCAqLwogIkRvbuKAmXQgQWxsb3cgKHVzZXJtZWRpYSkiID0gIkRvbuKAmXQg
QWxsb3ciOwogCisvKiBEaXNhbGxvdyBidXR0b24gdGl0bGUgaW4gc2NyZWVuIHNoYXJpbmcgcHJv
bXB0ICovCisiRG9u4oCZdCBBbGxvdyAoc2NyZWVuc2hhcmluZykiID0gIkRvbuKAmXQgQWxsb3ci
OworCiAvKiBEb3dubG9hZCBBdWRpbyBUbyBEaXNrIGNvbnRleHQgbWVudSBpdGVtICovCiAiRG93
bmxvYWQgQXVkaW8iID0gIkRvd25sb2FkIEF1ZGlvIjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5o
CmluZGV4IDRmMjI5ZGU2YWZmOWRmMWExZDQyZDc2MGUyNzA5OTA1Yzg4N2Y0MGQuLmVjOTViZmI4
MzRhZjNjY2UyMjc0YjVkZTVkZTc2YmYzMzMyMzZhY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZU
LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBj
b252ZXJ0TWVkaWFTYW1wbGUoTWVkaWFTYW1wbGUmLCBjb25zdCBJbnRTaXplJik7CiAgICAgUmVm
UHRyPE1lZGlhU2FtcGxlPiBjcmVhdGVNZWRpYVNhbXBsZShDR0ltYWdlUmVmLCBjb25zdCBNZWRp
YVRpbWUmLCBjb25zdCBJbnRTaXplJiwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gPSBNZWRp
YVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSwgYm9vbCBtaXJyb3JlZCA9IGZhbHNlKTsKLSAg
ICBSZWZQdHI8TWVkaWFTYW1wbGU+IGNyZWF0ZU1lZGlhU2FtcGxlKENNU2FtcGxlQnVmZmVyUmVm
LCBjb25zdCBJbnRTaXplJiwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gPSBNZWRpYVNhbXBs
ZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSwgYm9vbCBtaXJyb3JlZCA9IGZhbHNlKTsKKyAgICBSZWZQ
dHI8TWVkaWFTYW1wbGU+IGNyZWF0ZU1lZGlhU2FtcGxlKENNU2FtcGxlQnVmZmVyUmVmLCBjb25z
dCBNZWRpYVRpbWUmLCBjb25zdCBJbnRTaXplJiwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24g
PSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSwgYm9vbCBtaXJyb3JlZCA9IGZhbHNl
KTsKIAogI2lmICFQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQ
dHI8TWVkaWFTYW1wbGU+IGNyZWF0ZU1lZGlhU2FtcGxlKElPU3VyZmFjZVJlZiwgY29uc3QgTWVk
aWFUaW1lJiwgY29uc3QgSW50U2l6ZSYsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uID0gTWVk
aWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUsIGJvb2wgbWlycm9yZWQgPSBmYWxzZSk7CkBA
IC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVm
PiBjcmVhdGVDTVNhbXBsZUJ1ZmZlcihJT1N1cmZhY2VSZWYsIGNvbnN0IE1lZGlhVGltZSYsIGNv
bnN0IEludFNpemUmKTsKICNlbmRpZgogCi0gICAgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVm
PiBjb252ZXJ0Q01TYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYsIGNvbnN0IEludFNpemUm
KTsKKyAgICBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IGNvbnZlcnRDTVNhbXBsZUJ1ZmZl
cihDTVNhbXBsZUJ1ZmZlclJlZiwgY29uc3QgSW50U2l6ZSYsIGNvbnN0IE1lZGlhVGltZSogPSBu
dWxscHRyKTsKICAgICBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IGNyZWF0ZUNNU2FtcGxl
QnVmZmVyKENWUGl4ZWxCdWZmZXJSZWYsIGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IEludFNpemUm
KTsKICAgICBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IGNyZWF0ZUNNU2FtcGxlQnVmZmVy
KENHSW1hZ2VSZWYsIGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IEludFNpemUmKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNl
c3Npb25WVC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJh
bnNmZXJTZXNzaW9uVlQubW0KaW5kZXggZDU3M2I3Zjk1YWFjYThjMjQxZTVhNTFiOTQwYmIzMDdh
MTI3ZjhlZC4uYWJiOTkyMzkzZTU3NTNiMzY5ZTdjNTU0NDZhMTFiZDA3MzdhZDk0YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNl
c3Npb25WVC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFn
ZVRyYW5zZmVyU2Vzc2lvblZULm1tCkBAIC0xMDgsNyArMTA4LDcgQEAgUmV0YWluUHRyPENWUGl4
ZWxCdWZmZXJSZWY+IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNvbnZlcnRQaXhlbEJ1ZmZlcihD
VlBpeGVsQnUKICAgICByZXR1cm4gb3V0cHV0QnVmZmVyOwogfQogCi1SZXRhaW5QdHI8Q01TYW1w
bGVCdWZmZXJSZWY+IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNvbnZlcnRDTVNhbXBsZUJ1ZmZl
cihDTVNhbXBsZUJ1ZmZlclJlZiBzb3VyY2VCdWZmZXIsIGNvbnN0IEludFNpemUmIHNpemUpCitS
ZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNvbnZl
cnRDTVNhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZiBzb3VyY2VCdWZmZXIsIGNvbnN0IElu
dFNpemUmIHNpemUsIGNvbnN0IE1lZGlhVGltZSogc2FtcGxlVGltZSkKIHsKICAgICBpZiAoIXNv
dXJjZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNDEsNiArMTQxLDE0IEBA
IFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gSW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y29u
dmVydENNU2FtcGxlQnVmZmVyKENNU2FtCiAgICAgICAgICAgICBSRUxFQVNFX0xPRyhNZWRpYSwg
IkltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNvbnZlcnRDTVNhbXBsZUJ1ZmZlcjogQ01TYW1wbGVC
dWZmZXJHZXRTYW1wbGVUaW1pbmdJbmZvQXJyYXkgZmFpbGVkIHdpdGggZXJyb3IgY29kZTogJWQi
LCBzdGF0aWNfY2FzdDxpbnQ+KHN0YXR1cykpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgICAgIH0KKworICAgICAgICBpZiAoc2FtcGxlVGltZSkgeworICAgICAgICAgICAgYXV0
byBjbVRpbWUgPSBQQUw6OnRvQ01UaW1lKCpzYW1wbGVUaW1lKTsKKyAgICAgICAgICAgIGZvciAo
YXV0byYgdGltaW5nIDogdGltaW5nSW5mb0FycmF5KSB7CisgICAgICAgICAgICAgICAgdGltaW5n
LnByZXNlbnRhdGlvblRpbWVTdGFtcCA9IGNtVGltZTsKKyAgICAgICAgICAgICAgICB0aW1pbmcu
ZGVjb2RlVGltZVN0YW1wID0gY21UaW1lOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAg
ICAgIHRpbWVpbmdJbmZvUHRyID0gdGltaW5nSW5mb0FycmF5LmRhdGEoKTsKICAgICB9CiAKQEAg
LTI4Nyw5ICsyOTUsOSBAQCBSZWZQdHI8TWVkaWFTYW1wbGU+IEltYWdlVHJhbnNmZXJTZXNzaW9u
VlQ6OmNyZWF0ZU1lZGlhU2FtcGxlKENHSW1hZ2VSZWYgaW1hZ2UsCiAgICAgcmV0dXJuIE1lZGlh
U2FtcGxlQVZGT2JqQzo6Y3JlYXRlKHNhbXBsZUJ1ZmZlci5nZXQoKSwgcm90YXRpb24sIG1pcnJv
cmVkKTsKIH0KIAotUmVmUHRyPE1lZGlhU2FtcGxlPiBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpj
cmVhdGVNZWRpYVNhbXBsZShDTVNhbXBsZUJ1ZmZlclJlZiBidWZmZXIsIGNvbnN0IEludFNpemUm
IHNpemUsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uLCBib29sIG1pcnJvcmVk
KQorUmVmUHRyPE1lZGlhU2FtcGxlPiBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpjcmVhdGVNZWRp
YVNhbXBsZShDTVNhbXBsZUJ1ZmZlclJlZiBidWZmZXIsIGNvbnN0IE1lZGlhVGltZSYgc2FtcGxl
VGltZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90
YXRpb24sIGJvb2wgbWlycm9yZWQpCiB7Ci0gICAgYXV0byBzYW1wbGVCdWZmZXIgPSBjb252ZXJ0
Q01TYW1wbGVCdWZmZXIoYnVmZmVyLCBzaXplKTsKKyAgICBhdXRvIHNhbXBsZUJ1ZmZlciA9IGNv
bnZlcnRDTVNhbXBsZUJ1ZmZlcihidWZmZXIsIHNpemUsICZzYW1wbGVUaW1lKTsKICAgICBpZiAo
IXNhbXBsZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0Rpc3BsYXlDYXB0dXJlU291
cmNlQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2Ev
RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTg1N2I0NGNmZDE1YTNh
YjQyZTFhZWI0OWM4Y2FhOGZhZDI1MzQ5ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2Eu
Y3BwCkBAIC0wLDAgKzEsMzIwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGlzcGxheUNh
cHR1cmVTb3VyY2VDb2NvYS5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZP
Uk0oQ09DT0EpCisKKyNpbmNsdWRlICJDR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNl
LmgiCisjaW5jbHVkZSAiSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oIgorI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKKyNpbmNsdWRlICJNZWRpYVNhbXBsZUFWRk9iakMuaCIKKyNpbmNsdWRlICJQaXhlbEJ1
ZmZlckNvbmZvcm1lckNWLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgorI2lu
Y2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCIKKyNpbmNsdWRlICJSZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJSZWFsdGltZVZpZGVvVXRpbGl0aWVzLmgi
CisjaW5jbHVkZSAiUmVtb3RlVmlkZW9TYW1wbGUuaCIKKyNpbmNsdWRlICJSZXBsYXlLaXRDYXB0
dXJlU291cmNlLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDxDb3JlTWVkaWEvQ01T
eW5jLmg+CisjaW5jbHVkZSA8SU9TdXJmYWNlL0lPU3VyZmFjZVJlZi5oPgorI2luY2x1ZGUgPG1h
Y2gvbWFjaF90aW1lLmg+CisjaW5jbHVkZSA8cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZv
dW5kYXRpb24uaD4KKyNpbmNsdWRlIDxwYWwvc3BpL2NmL0NvcmVBdWRpb1NQSS5oPgorI2luY2x1
ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CisjaW5jbHVkZSA8cGFsL3NwaS9jb2Nv
YS9JT1N1cmZhY2VTUEkuaD4KKyNpbmNsdWRlIDxzeXMvdGltZS5oPgorI2luY2x1ZGUgPHd0Zi9N
YWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKKyNpbmNsdWRl
ICJDb3JlVmlkZW9Tb2Z0TGluay5oIgorI2luY2x1ZGUgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGlu
ay5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NhcHR1cmVTb3VyY2VPckVycm9yIERpc3Bs
YXlDYXB0dXJlU291cmNlQ29jb2E6OmNyZWF0ZShjb25zdCBDYXB0dXJlRGV2aWNlJiBkZXZpY2Us
IGNvbnN0IE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzKQoreworICAgIHN3aXRjaCAoZGV2
aWNlLnR5cGUoKSkgeworICAgIGNhc2UgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVu
OgorI2lmIFBMQVRGT1JNKElPUykKKyAgICAgICAgcmV0dXJuIGNyZWF0ZShSZXBsYXlLaXRDYXB0
dXJlU291cmNlOjpjcmVhdGUoZGV2aWNlLnBlcnNpc3RlbnRJZCgpKSwgZGV2aWNlLCBjb25zdHJh
aW50cyk7CisjZWxzZQorICAgICAgICByZXR1cm4gY3JlYXRlKENHRGlzcGxheVN0cmVhbVNjcmVl
bkNhcHR1cmVTb3VyY2U6OmNyZWF0ZShkZXZpY2UucGVyc2lzdGVudElkKCkpLCBkZXZpY2UsIGNv
bnN0cmFpbnRzKTsKKyNlbmRpZgorICAgIGNhc2UgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6
V2luZG93OgorICAgIGNhc2UgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6TWljcm9waG9uZToK
KyAgICBjYXNlIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNwZWFrZXI6CisgICAgY2FzZSBD
YXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpDYW1lcmE6CisgICAgY2FzZSBDYXB0dXJlRGV2aWNl
OjpEZXZpY2VUeXBlOjpVbmtub3duOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIHsgfTsKK30KKworQ2FwdHVyZVNvdXJj
ZU9yRXJyb3IgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Y3JlYXRlKEV4cGVjdGVkPFVuaXF1
ZVJlZjxDYXB0dXJlcj4sIFN0cmluZz4mJiBjYXB0dXJlciwgY29uc3QgQ2FwdHVyZURldmljZSYg
ZGV2aWNlLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cykKK3sKKyAgICBpZiAo
IWNhcHR1cmVyLmhhc192YWx1ZSgpKQorICAgICAgICByZXR1cm4gQ2FwdHVyZVNvdXJjZU9yRXJy
b3IgeyBXVEZNb3ZlKGNhcHR1cmVyLmVycm9yKCkpIH07CisKKyAgICBhdXRvIHNvdXJjZSA9IGFk
b3B0UmVmKCpuZXcgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYShXVEZNb3ZlKGNhcHR1cmVyLnZh
bHVlKCkpLCBTdHJpbmcgeyBkZXZpY2UubGFiZWwoKSB9KSk7CisgICAgaWYgKGNvbnN0cmFpbnRz
KSB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gc291cmNlLT5hcHBseUNvbnN0cmFpbnRzKCpjb25z
dHJhaW50cyk7CisgICAgICAgIGlmIChyZXN1bHQpCisgICAgICAgICAgICByZXR1cm4gV1RGTW92
ZShyZXN1bHQudmFsdWUoKS5iYWRDb25zdHJhaW50KTsKKyAgICB9CisKKyAgICByZXR1cm4gQ2Fw
dHVyZVNvdXJjZU9yRXJyb3IoV1RGTW92ZShzb3VyY2UpKTsKK30KKworRGlzcGxheUNhcHR1cmVT
b3VyY2VDb2NvYTo6RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYShVbmlxdWVSZWY8Q2FwdHVyZXI+
JiYgY2FwdHVyZXIsIFN0cmluZyYmIG5hbWUpCisgICAgOiBSZWFsdGltZU1lZGlhU291cmNlKFR5
cGU6OlZpZGVvLCBXVEZNb3ZlKG5hbWUpKQorICAgICwgbV9jYXB0dXJlcihXVEZNb3ZlKGNhcHR1
cmVyKSkKKyAgICAsIG1fdGltZXIoUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmRGlzcGxheUNh
cHR1cmVTb3VyY2VDb2NvYTo6ZW1pdEZyYW1lKQoreworICAgIGlmIChsb2dnZXJQdHIoKSkKKyAg
ICAgICAgbV9jYXB0dXJlci0+c2V0TG9nZ2VyKGxvZ2dlcigpLCBsb2dJZGVudGlmaWVyKCkpOwor
fQorCitEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjp+RGlzcGxheUNhcHR1cmVTb3VyY2VDb2Nv
YSgpCit7Cit9CisKK2NvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIERpc3Bs
YXlDYXB0dXJlU291cmNlQ29jb2E6OmNhcGFiaWxpdGllcygpCit7CisgICAgaWYgKCFtX2NhcGFi
aWxpdGllcykgeworICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzIGNhcGFi
aWxpdGllcyhzZXR0aW5ncygpLnN1cHBvcnRlZENvbnN0cmFpbnRzKCkpOworCisgICAgICAgIGF1
dG8gaW50cmluc2ljU2l6ZSA9IG1fY2FwdHVyZXItPmludHJpbnNpY1NpemUoKTsKKyAgICAgICAg
Y2FwYWJpbGl0aWVzLnNldFdpZHRoKENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UoMSwgaW50cmluc2lj
U2l6ZS53aWR0aCgpKSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5zZXRIZWlnaHQoQ2FwYWJpbGl0
eVZhbHVlT3JSYW5nZSgxLCBpbnRyaW5zaWNTaXplLmhlaWdodCgpKSk7CisgICAgICAgIGNhcGFi
aWxpdGllcy5zZXRGcmFtZVJhdGUoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSguMDEsIDMwLjApKTsK
KworICAgICAgICBtX2NhcGFiaWxpdGllcyA9IFdURk1vdmUoY2FwYWJpbGl0aWVzKTsKKyAgICB9
CisgICAgcmV0dXJuIG1fY2FwYWJpbGl0aWVzLnZhbHVlKCk7Cit9CisKK2NvbnN0IFJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5ncyYgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6c2V0dGluZ3Mo
KQoreworICAgIGlmICghbV9jdXJyZW50U2V0dGluZ3MpIHsKKyAgICAgICAgUmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzIHNldHRpbmdzOworICAgICAgICBzZXR0aW5ncy5zZXRGcmFtZVJhdGUo
ZnJhbWVSYXRlKCkpOworCisgICAgICAgIGF1dG8gc2l6ZSA9IHRoaXMtPnNpemUoKTsKKyAgICAg
ICAgc2V0dGluZ3Muc2V0V2lkdGgoc2l6ZS53aWR0aCgpKTsKKyAgICAgICAgc2V0dGluZ3Muc2V0
SGVpZ2h0KHNpemUuaGVpZ2h0KCkpOworCisgICAgICAgIHNldHRpbmdzLnNldERpc3BsYXlTdXJm
YWNlKG1fY2FwdHVyZXItPnN1cmZhY2VUeXBlKCkpOworICAgICAgICBzZXR0aW5ncy5zZXRMb2dp
Y2FsU3VyZmFjZShmYWxzZSk7CisKKyAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRl
ZENvbnN0cmFpbnRzIHN1cHBvcnRlZENvbnN0cmFpbnRzOworICAgICAgICBzdXBwb3J0ZWRDb25z
dHJhaW50cy5zZXRTdXBwb3J0c0ZyYW1lUmF0ZSh0cnVlKTsKKyAgICAgICAgc3VwcG9ydGVkQ29u
c3RyYWludHMuc2V0U3VwcG9ydHNXaWR0aCh0cnVlKTsKKyAgICAgICAgc3VwcG9ydGVkQ29uc3Ry
YWludHMuc2V0U3VwcG9ydHNIZWlnaHQodHJ1ZSk7CisgICAgICAgIHN1cHBvcnRlZENvbnN0cmFp
bnRzLnNldFN1cHBvcnRzRGlzcGxheVN1cmZhY2UodHJ1ZSk7CisgICAgICAgIHN1cHBvcnRlZENv
bnN0cmFpbnRzLnNldFN1cHBvcnRzTG9naWNhbFN1cmZhY2UodHJ1ZSk7CisKKyAgICAgICAgc2V0
dGluZ3Muc2V0U3VwcG9ydGVkQ29uc3RyYWludHMoc3VwcG9ydGVkQ29uc3RyYWludHMpOworCisg
ICAgICAgIG1fY3VycmVudFNldHRpbmdzID0gV1RGTW92ZShzZXR0aW5ncyk7CisgICAgfQorICAg
IHJldHVybiBtX2N1cnJlbnRTZXR0aW5ncy52YWx1ZSgpOworfQorCit2b2lkIERpc3BsYXlDYXB0
dXJlU291cmNlQ29jb2E6OnNldHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNldDxSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3M6OkZsYWc+IHNldHRpbmdzKQoreworICAgIGlmIChzZXR0aW5ncy5jb250
YWlucyhSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OkZyYW1lUmF0ZSkgJiYgbV90
aW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3RpbWVyLnN0YXJ0UmVwZWF0aW5nKDFfcyAvIGZy
YW1lUmF0ZSgpKTsKKworICAgIG1fY3VycmVudFNldHRpbmdzID0geyB9OworfQorCit2b2lkIERp
c3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCit7CisgICAgbV9z
dGFydFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKKyAgICBtX3RpbWVyLnN0YXJ0UmVwZWF0
aW5nKDFfcyAvIGZyYW1lUmF0ZSgpKTsKKworICAgIGNvbW1pdENvbmZpZ3VyYXRpb24oKTsKKyAg
ICBpZiAoIW1fY2FwdHVyZXItPnN0YXJ0KCkpCisgICAgICAgIGNhcHR1cmVGYWlsZWQoKTsKK30K
Kwordm9pZCBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpzdG9wUHJvZHVjaW5nRGF0YSgpCit7
CisgICAgbV90aW1lci5zdG9wKCk7CisgICAgbV9lbGFwc2VkVGltZSArPSBNb25vdG9uaWNUaW1l
Ojpub3coKSAtIG1fc3RhcnRUaW1lOworICAgIG1fc3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6
bmFuKCk7CisKKyAgICBtX2NhcHR1cmVyLT5zdG9wKCk7Cit9CisKK1NlY29uZHMgRGlzcGxheUNh
cHR1cmVTb3VyY2VDb2NvYTo6ZWxhcHNlZFRpbWUoKQoreworICAgIGlmIChzdGQ6OmlzbmFuKG1f
c3RhcnRUaW1lKSkKKyAgICAgICAgcmV0dXJuIG1fZWxhcHNlZFRpbWU7CisKKyAgICByZXR1cm4g
bV9lbGFwc2VkVGltZSArIChNb25vdG9uaWNUaW1lOjpub3coKSAtIG1fc3RhcnRUaW1lKTsKK30K
KworLy8gV2Uga2VlcCB0aGUgYXNwZWN0IHJhdGlvIG9mIHRoZSBpbnRyaW5zaWMgc2l6ZSBmb3Ig
dGhlIGZyYW1lIHNpemUgYXMgZ2V0RGlzcGxheU1lZGlhIGFsbG93cyBtYXggY29uc3RyYWludHMg
b25seS4KK3ZvaWQgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6dXBkYXRlRnJhbWVTaXplKCkK
K3sKKyAgICBhdXRvIGludHJpbnNpY1NpemUgPSB0aGlzLT5pbnRyaW5zaWNTaXplKCk7CisKKyAg
ICBhdXRvIGZyYW1lU2l6ZSA9IHNpemUoKTsKKyAgICBpZiAoIWZyYW1lU2l6ZS5oZWlnaHQoKSkK
KyAgICAgICAgZnJhbWVTaXplLnNldEhlaWdodChpbnRyaW5zaWNTaXplLmhlaWdodCgpKTsKKyAg
ICBpZiAoIWZyYW1lU2l6ZS53aWR0aCgpKQorICAgICAgICBmcmFtZVNpemUuc2V0V2lkdGgoaW50
cmluc2ljU2l6ZS53aWR0aCgpKTsKKworICAgIGF1dG8gbWF4SGVpZ2h0ID0gc3RkOjptaW4oZnJh
bWVTaXplLmhlaWdodCgpLCBpbnRyaW5zaWNTaXplLmhlaWdodCgpKTsKKyAgICBhdXRvIG1heFdp
ZHRoID0gc3RkOjptaW4oZnJhbWVTaXplLndpZHRoKCksIGludHJpbnNpY1NpemUud2lkdGgoKSk7
CisKKyAgICBhdXRvIGhlaWdodEZvck1heFdpZHRoID0gbWF4V2lkdGggKiBpbnRyaW5zaWNTaXpl
LmhlaWdodCgpIC8gaW50cmluc2ljU2l6ZS53aWR0aCgpOworICAgIGF1dG8gd2lkdGhGb3JNYXhI
ZWlnaHQgPSBtYXhIZWlnaHQgKiBpbnRyaW5zaWNTaXplLndpZHRoKCkgLyBpbnRyaW5zaWNTaXpl
LmhlaWdodCgpOworCisgICAgaWYgKGhlaWdodEZvck1heFdpZHRoIDw9IG1heEhlaWdodCkgewor
ICAgICAgICBzZXRTaXplKHsgbWF4V2lkdGgsIGhlaWdodEZvck1heFdpZHRoIH0pOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIGlmICh3aWR0aEZvck1heEhlaWdodCA8PSBtYXhXaWR0aCkg
eworICAgICAgICBzZXRTaXplKHsgd2lkdGhGb3JNYXhIZWlnaHQsIG1heEhlaWdodCB9KTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBzZXRTaXplKGludHJpbnNpY1NpemUpOworfQorCit2
b2lkIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OmVtaXRGcmFtZSgpCit7CisgICAgaWYgKG11
dGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV9pbWFnZVRyYW5zZmVyU2Vzc2lv
bikKKyAgICAgICAgbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbiA9IEltYWdlVHJhbnNmZXJTZXNzaW9u
VlQ6OmNyZWF0ZShwcmVmZXJlZFBpeGVsQnVmZmVyRm9ybWF0KCkpOworCisgICAgYXV0byBzYW1w
bGVUaW1lID0gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKChlbGFwc2VkVGltZSgpICsgMTAw
X21zKS5zZWNvbmRzKCkpOworCisgICAgYXV0byBmcmFtZSA9IG1fY2FwdHVyZXItPmdlbmVyYXRl
RnJhbWUoKTsKKyAgICBhdXRvIGltYWdlU2l6ZSA9IFdURjo6c3dpdGNoT24oZnJhbWUsCisgICAg
ICAgIFtdKFJldGFpblB0cjxJT1N1cmZhY2VSZWY+JiBzdXJmYWNlKSAtPiBJbnRTaXplIHsKKyAg
ICAgICAgICAgIGlmICghc3VyZmFjZSkKKyAgICAgICAgICAgICAgICByZXR1cm4geyB9OworCisg
ICAgICAgICAgICByZXR1cm4gSW50U2l6ZShJT1N1cmZhY2VHZXRXaWR0aChzdXJmYWNlLmdldCgp
KSwgSU9TdXJmYWNlR2V0SGVpZ2h0KHN1cmZhY2UuZ2V0KCkpKTsKKyAgICAgICAgfSwKKyAgICAg
ICAgW10oUmVmUHRyPE5hdGl2ZUltYWdlPiYgaW1hZ2UpIC0+IEludFNpemUgeworICAgICAgICAg
ICAgaWYgKCFpbWFnZSkKKyAgICAgICAgICAgICAgICByZXR1cm4geyB9OworCisgICAgICAgICAg
ICByZXR1cm4gaW1hZ2UtPnNpemUoKTsKKyAgICAgICAgfSwKKyAgICAgICAgW10oUmV0YWluUHRy
PENNU2FtcGxlQnVmZmVyUmVmPiYgc2FtcGxlKSAtPiBJbnRTaXplIHsKKyAgICAgICAgICAgIGlm
ICghc2FtcGxlKQorICAgICAgICAgICAgICAgIHJldHVybiB7IH07CisKKyAgICAgICAgICAgIENN
Rm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb24gPSBQQUw6OkNNU2FtcGxlQnVm
ZmVyR2V0Rm9ybWF0RGVzY3JpcHRpb24oc2FtcGxlLmdldCgpKTsKKyAgICAgICAgICAgIGlmIChQ
QUw6OkNNRm9ybWF0RGVzY3JpcHRpb25HZXRNZWRpYVR5cGUoZm9ybWF0RGVzY3JpcHRpb24pICE9
IGtDTU1lZGlhVHlwZV9WaWRlbykKKyAgICAgICAgICAgICAgICByZXR1cm4gSW50U2l6ZSgpOwor
CisgICAgICAgICAgICByZXR1cm4gSW50U2l6ZShQQUw6OkNNVmlkZW9Gb3JtYXREZXNjcmlwdGlv
bkdldFByZXNlbnRhdGlvbkRpbWVuc2lvbnMoZm9ybWF0RGVzY3JpcHRpb24sIHRydWUsIHRydWUp
KTsKKyAgICAgICAgfQorICAgICk7CisKKyAgICBpZiAoaW1hZ2VTaXplLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWYgKGludHJpbnNpY1NpemUoKSAhPSBpbWFnZVNpemUpIHsK
KyAgICAgICAgc2V0SW50cmluc2ljU2l6ZShpbWFnZVNpemUpOworICAgICAgICB1cGRhdGVGcmFt
ZVNpemUoKTsKKyAgICB9CisKKyAgICBhdXRvIHNhbXBsZSA9IFdURjo6c3dpdGNoT24oZnJhbWUs
CisgICAgICAgIFt0aGlzLCBzYW1wbGVUaW1lXShSZXRhaW5QdHI8SU9TdXJmYWNlUmVmPiYgc3Vy
ZmFjZSkgLT4gUmVmUHRyPE1lZGlhU2FtcGxlPiB7CisgICAgICAgICAgICBpZiAoIXN1cmZhY2Up
CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgICAgIHJldHVybiBt
X2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5jcmVhdGVNZWRpYVNhbXBsZShzdXJmYWNlLmdldCgpLCBz
YW1wbGVUaW1lLCBzaXplKCkpOworICAgICAgICB9LAorICAgICAgICBbdGhpcywgc2FtcGxlVGlt
ZV0oUmVmUHRyPE5hdGl2ZUltYWdlPiYgaW1hZ2UpIC0+IFJlZlB0cjxNZWRpYVNhbXBsZT4gewor
ICAgICAgICAgICAgaWYgKCFpbWFnZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgICAgICAgICAgcmV0dXJuIG1faW1hZ2VUcmFuc2ZlclNlc3Npb24tPmNyZWF0ZU1lZGlh
U2FtcGxlKGltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIHNhbXBsZVRpbWUsIHNpemUoKSk7
CisgICAgICAgIH0sCisgICAgICAgIFt0aGlzLCBzYW1wbGVUaW1lXShSZXRhaW5QdHI8Q01TYW1w
bGVCdWZmZXJSZWY+JiBzYW1wbGUpIC0+IFJlZlB0cjxNZWRpYVNhbXBsZT4geworICAgICAgICAg
ICAgaWYgKCFzYW1wbGUpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAg
ICAgICAgIHJldHVybiBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5jcmVhdGVNZWRpYVNhbXBsZShz
YW1wbGUuZ2V0KCksIHNhbXBsZVRpbWUsIHNpemUoKSk7CisgICAgICAgIH0KKyAgICApOworCisg
ICAgaWYgKCFzYW1wbGUpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICB2aWRlb1NhbXBsZUF2YWlsYWJsZSgqc2FtcGxlLmdldCgp
KTsKK30KKwordm9pZCBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpzZXRMb2dnZXIoY29uc3Qg
TG9nZ2VyJiBsb2dnZXIsIGNvbnN0IHZvaWQqIGlkZW50aWZpZXIpCit7CisgICAgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6c2V0TG9nZ2VyKGxvZ2dlciwgaWRlbnRpZmllcik7CisgICAgbV9jYXB0dXJl
ci0+c2V0TG9nZ2VyKGxvZ2dlciwgaWRlbnRpZmllcik7Cit9CisKK3ZvaWQgRGlzcGxheUNhcHR1
cmVTb3VyY2VDb2NvYTo6Q2FwdHVyZXI6OnNldExvZ2dlcihjb25zdCBMb2dnZXImIG5ld0xvZ2dl
ciwgY29uc3Qgdm9pZCogbmV3TG9nSWRlbnRpZmllcikKK3sKKyAgICBtX2xvZ2dlciA9ICZuZXdM
b2dnZXI7CisgICAgbV9sb2dJZGVudGlmaWVyID0gbmV3TG9nSWRlbnRpZmllcjsKK30KKworV1RG
TG9nQ2hhbm5lbCYgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Q2FwdHVyZXI6OmxvZ0NoYW5u
ZWwoKSBjb25zdAoreworICAgIHJldHVybiBMb2dXZWJSVEM7Cit9CisKK0Rpc3BsYXlDYXB0dXJl
U291cmNlQ29jb2E6OkNhcHR1cmVyOjpPYnNlcnZlcjo6fk9ic2VydmVyKCkKK3sKK30KKwordm9p
ZCBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpDYXB0dXJlcjo6c2V0T2JzZXJ2ZXIoT2JzZXJ2
ZXIqIG9ic2VydmVyKQoreworICAgIG1fb2JzZXJ2ZXIgPSBXZWFrUHRyIHsgb2JzZXJ2ZXIgfTsK
K30KKwordm9pZCBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpDYXB0dXJlcjo6Y2FwdHVyZXJJ
c1J1bm5pbmdDaGFuZ2VkKGJvb2wgcnVubmluZykKK3sKKyAgICBpZiAobV9vYnNlcnZlcikKKyAg
ICAgICAgbV9vYnNlcnZlci0+Y2FwdHVyZXJJc1J1bm5pbmdDaGFuZ2VkKHJ1bm5pbmcpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFN
KSAmJiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2NvY29hL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29j
b2EuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xZTZhOTBhOGMwNTc0NzRiY2U3NDk3NmJkOWRiN2Y4NjQzNWNlMjFm
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Y29jb2EvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oCkBAIC0wLDAgKzEsMTM1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKENPQ09BKQorCisjaW5j
bHVkZSAiQ2FwdHVyZURldmljZS5oIgorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIK
KyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNp
bmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworCit0eXBlZGVmIHN0cnVjdCBDR0ltYWdlICpD
R0ltYWdlUmVmOwordHlwZWRlZiBzdHJ1Y3QgX19DVkJ1ZmZlciAqQ1ZQaXhlbEJ1ZmZlclJlZjsK
K3R5cGVkZWYgc3RydWN0IF9fSU9TdXJmYWNlICpJT1N1cmZhY2VSZWY7CisKK25hbWVzcGFjZSBX
VEYgeworY2xhc3MgTWVkaWFUaW1lOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IENhcHR1cmVEZXZpY2VJbmZvOworY2xhc3MgSW1hZ2VUcmFuc2ZlclNlc3Npb25WVDsKK2NsYXNz
IFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y7CisKK2NsYXNzIERpc3BsYXlDYXB0dXJlU291cmNlQ29j
b2EgZmluYWwgOiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZSB7CitwdWJsaWM6CisgICAgdXNp
bmcgRGlzcGxheUZyYW1lVHlwZSA9IHN0ZDo6dmFyaWFudDxSZWZQdHI8TmF0aXZlSW1hZ2U+LCBS
ZXRhaW5QdHI8SU9TdXJmYWNlUmVmPiwgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPj47CisK
KyAgICBjbGFzcyBDYXB0dXJlciA6IHB1YmxpYyBMb2dnZXJIZWxwZXIgeworICAgICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6CisKKyAgICAgICAgY2xhc3MgT2JzZXJ2
ZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8T2JzZXJ2ZXI+IHsKKyAgICAgICAgcHVibGljOgor
ICAgICAgICAgICAgdmlydHVhbCB+T2JzZXJ2ZXIoKTsKKworICAgICAgICAgICAgLy8gQ2FwdHVy
ZXIgc3RhdGUgY2hhbmdlcy4KKyAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBjYXB0dXJlcklzUnVu
bmluZ0NoYW5nZWQoYm9vbCkgeyB9CisgICAgICAgIH07CisKKyAgICAgICAgdmlydHVhbCB+Q2Fw
dHVyZXIoKSA9IGRlZmF1bHQ7CisKKyAgICAgICAgdmlydHVhbCBib29sIHN0YXJ0KCkgPSAwOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpID0gMDsKKyAgICAgICAgdmlydHVhbCBEaXNwbGF5
RnJhbWVUeXBlIGdlbmVyYXRlRnJhbWUoKSA9IDA7CisgICAgICAgIHZpcnR1YWwgQ2FwdHVyZURl
dmljZTo6RGV2aWNlVHlwZSBkZXZpY2VUeXBlKCkgY29uc3QgPSAwOworICAgICAgICB2aXJ0dWFs
IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RGlzcGxheVN1cmZhY2VUeXBlIHN1cmZhY2VU
eXBlKCkgY29uc3QgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29uZmlndXJhdGlv
bihjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmKSA9IDA7CisgICAgICAgIHZpcnR1
YWwgSW50U2l6ZSBpbnRyaW5zaWNTaXplKCkgY29uc3QgPSAwOworCisgICAgICAgIHZpcnR1YWwg
dm9pZCBzZXRMb2dnZXIoY29uc3QgTG9nZ2VyJiwgY29uc3Qgdm9pZCopOworICAgICAgICBjb25z
dCBMb2dnZXIqIGxvZ2dlclB0cigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nZ2VyLmdldCgpOyB9Cisg
ICAgICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWwgeyBBU1NFUlQobV9sb2dn
ZXIpOyByZXR1cm4gKm1fbG9nZ2VyLmdldCgpOyB9CisgICAgICAgIGNvbnN0IHZvaWQqIGxvZ0lk
ZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7IH0KKyAgICAg
ICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0IGZpbmFsOworCisgICAgICAgIHZv
aWQgc2V0T2JzZXJ2ZXIoT2JzZXJ2ZXIqKTsKKworICAgIHByb3RlY3RlZDoKKyAgICAgICAgdm9p
ZCBjYXB0dXJlcklzUnVubmluZ0NoYW5nZWQoYm9vbCk7CisKKyAgICBwcml2YXRlOgorICAgICAg
ICBXZWFrUHRyPE9ic2VydmVyPiBtX29ic2VydmVyOworICAgICAgICBSZWZQdHI8Y29uc3QgTG9n
Z2VyPiBtX2xvZ2dlcjsKKyAgICAgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOworICAg
IH07CisKKyAgICBzdGF0aWMgQ2FwdHVyZVNvdXJjZU9yRXJyb3IgY3JlYXRlKGNvbnN0IENhcHR1
cmVEZXZpY2UmLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKik7CisgICAgc3RhdGljIENhcHR1cmVT
b3VyY2VPckVycm9yIGNyZWF0ZShFeHBlY3RlZDxVbmlxdWVSZWY8Q2FwdHVyZXI+LCBTdHJpbmc+
JiYsIGNvbnN0IENhcHR1cmVEZXZpY2UmLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKik7CisKKyAg
ICBTZWNvbmRzIGVsYXBzZWRUaW1lKCk7CisgICAgdm9pZCB1cGRhdGVGcmFtZVNpemUoKTsKKwor
cHJpdmF0ZToKKyAgICBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hKFVuaXF1ZVJlZjxDYXB0dXJl
cj4mJiwgU3RyaW5nJiYgbmFtZSk7CisgICAgdmlydHVhbCB+RGlzcGxheUNhcHR1cmVTb3VyY2VD
b2NvYSgpOworCisgICAgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKKyAgICB2b2lk
IHN0b3BQcm9kdWNpbmdEYXRhKCkgZmluYWw7CisgICAgdm9pZCBzZXR0aW5nc0RpZENoYW5nZShP
cHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnPikgZmluYWw7CisgICAg
Ym9vbCBpc0NhcHR1cmVTb3VyY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAg
Y29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKCkgZmlu
YWw7CisgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncygpIGZp
bmFsOworICAgIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgZGV2aWNlVHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY2FwdHVyZXItPmRldmljZVR5cGUoKTsgfQorICAgIHZvaWQgY29tbWl0Q29uZmln
dXJhdGlvbigpIGZpbmFsIHsgbV9jYXB0dXJlci0+Y29tbWl0Q29uZmlndXJhdGlvbihzZXR0aW5n
cygpKTsgfQorCisgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gIkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EiOyB9CisgICAgdm9pZCBzZXRMb2dnZXIo
Y29uc3QgTG9nZ2VyJiwgY29uc3Qgdm9pZCopIGZpbmFsOworCisgICAgdm9pZCBlbWl0RnJhbWUo
KTsKKworICAgIFVuaXF1ZVJlZjxDYXB0dXJlcj4gbV9jYXB0dXJlcjsKKyAgICBzdGQ6Om9wdGlv
bmFsPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IG1fY2FwYWJpbGl0aWVzOworICAg
IHN0ZDo6b3B0aW9uYWw8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzPiBtX2N1cnJlbnRTZXR0
aW5nczsKKyAgICBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMgbV9zdXBw
b3J0ZWRDb25zdHJhaW50czsKKworICAgIE1vbm90b25pY1RpbWUgbV9zdGFydFRpbWUgeyBNb25v
dG9uaWNUaW1lOjpuYW4oKSB9OworICAgIFNlY29uZHMgbV9lbGFwc2VkVGltZSB7IDBfcyB9Owor
CisgICAgUnVuTG9vcDo6VGltZXI8RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYT4gbV90aW1lcjsK
KworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZVRyYW5zZmVyU2Vzc2lvblZUPiBtX2ltYWdlVHJh
bnNmZXJTZXNzaW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvUmVwbGF5S2l0Q2FwdHVyZVNvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL1JlcGxheUtpdENh
cHR1cmVTb3VyY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZWVlNjYzZDc3ZWRhMWUxYmY3NDBhZmZmMjgyZmVi
OWU2NmUwMTA5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vaW9zL1JlcGxheUtpdENhcHR1cmVTb3VyY2UuaApAQCAtMCwwICsxLDg1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShJT1MpCisKKyNpbmNsdWRl
ICJEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfQ0xBU1MgUlBTY3JlZW5SZWNvcmRlcjsKK09C
SkNfQ0xBU1MgV2ViQ29yZVJlcGxheUtpdFNjcmVlblJlY29yZGVySGVscGVyOworCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlcGxheUtpdENhcHR1cmVTb3VyY2UgZmluYWwgOiBwdWJs
aWMgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Q2FwdHVyZXIsIHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxSZXBsYXlLaXRDYXB0dXJlU291cmNlPiB7CitwdWJsaWM6CisgICAgc3RhdGljIEV4cGVj
dGVkPFVuaXF1ZVJlZjxEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpDYXB0dXJlcj4sIFN0cmlu
Zz4gY3JlYXRlKGNvbnN0IFN0cmluZyYpOworCisgICAgUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZSgp
OworICAgIHZpcnR1YWwgflJlcGxheUtpdENhcHR1cmVTb3VyY2UoKTsKKworICAgIHN0YXRpYyBi
b29sIGlzQXZhaWxhYmxlKCk7CisKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxDYXB0dXJlRGV2
aWNlPiBzY3JlZW5DYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChjb25zdCBTdHJpbmcmKTsK
KyAgICBzdGF0aWMgdm9pZCBzY3JlZW5DYXB0dXJlRGV2aWNlcyhWZWN0b3I8Q2FwdHVyZURldmlj
ZT4mKTsKKworICAgIHZvaWQgY2FwdHVyZVN0YXRlRGlkQ2hhbmdlKCk7CisKK3ByaXZhdGU6CisK
KyAgICAvLyBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpDYXB0dXJlcgorICAgIGJvb2wgc3Rh
cnQoKSBmaW5hbDsKKyAgICB2b2lkIHN0b3AoKSBmaW5hbDsKKyAgICBEaXNwbGF5Q2FwdHVyZVNv
dXJjZUNvY29hOjpEaXNwbGF5RnJhbWVUeXBlIGdlbmVyYXRlRnJhbWUoKSBmaW5hbDsKKyAgICBD
YXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIGRldmljZVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW47IH0KKyAgICBSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3M6OkRpc3BsYXlTdXJmYWNlVHlwZSBzdXJmYWNlVHlwZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RGlzcGxheVN1cmZhY2VU
eXBlOjpNb25pdG9yOyB9CisgICAgdmlydHVhbCB2b2lkIGNvbW1pdENvbmZpZ3VyYXRpb24oY29u
c3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJikgeyB9CisgICAgdmlydHVhbCBJbnRTaXpl
IGludHJpbnNpY1NpemUoKSBjb25zdCB7IHJldHVybiBtX2ludHJpbnNpY1NpemU7IH0KKworICAg
IC8vIExvZ2dlckhlbHBlcgorICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuICJSZXBsYXlLaXRDYXB0dXJlU291cmNlIjsgfQorCisgICAgdm9pZCBzY3Jl
ZW5SZWNvcmRlckRpZE91dHB1dFZpZGVvU2FtcGxlKFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJl
Zj4mJik7CisgICAgdm9pZCBzdGFydENhcHR1cmVXYXRjaGRvZ1RpbWVyKCk7CisgICAgdm9pZCB2
ZXJpZnlDYXB0dXJlSXNBY3RpdmUoKTsKKworICAgIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJl
Zj4gbV9jdXJyZW50RnJhbWU7CisgICAgUmV0YWluUHRyPFJQU2NyZWVuUmVjb3JkZXI+IG1fc2Ny
ZWVuUmVjb3JkZXI7CisgICAgUmV0YWluUHRyPFdlYkNvcmVSZXBsYXlLaXRTY3JlZW5SZWNvcmRl
ckhlbHBlcj4gbV9yZWNvcmRlckhlbHBlcjsKKworICAgIFRpbWVyIG1fY2FwdHVyZVdhdGNoZG9n
VGltZXI7CisgICAgdWludDY0X3QgbV9mcmFtZUNvdW50IHsgMCB9OworICAgIHVpbnQ2NF90IG1f
bGFzdEZyYW1lQ291bnQgeyAwIH07CisgICAgSW50U2l6ZSBtX2ludHJpbnNpY1NpemU7CisgICAg
Ym9vbCBtX2lzUnVubmluZyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2ludGVycnVwdGVkIHsgZmFs
c2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShN
RURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9SZXBsYXlLaXRDYXB0dXJlU291cmNlLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL1JlcGxheUtpdENhcHR1cmVTb3Vy
Y2UubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNTVmNjM1YmYyY2Y4ZWE0YzFmYmVmZTFmODJhOTM4YmI1ZWM4MzI2
MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2lvcy9SZXBsYXlLaXRDYXB0dXJlU291cmNlLm1tCkBAIC0wLDAgKzEsMjgxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlJlcGxheUtpdENhcHR1cmVTb3VyY2UuaCIKKworI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pICYmIFBMQVRGT1JNKElPUykKKworI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9y
dCAiUmVhbHRpbWVWaWRlb1V0aWxpdGllcy5oIgorI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+Cisj
aW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi9VVUlELmg+CisjaW1w
b3J0IDx3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CisKKyNpbXBvcnQgPHBh
bC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgorI2ltcG9ydCA8cGFsL2lvcy9SZXBsYXlLaXRTb2Z0
TGluay5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK0BpbnRlcmZhY2UgV2ViQ29yZVJl
cGxheUtpdFNjcmVlblJlY29yZGVySGVscGVyIDogTlNPYmplY3QgeworICAgIFdlYWtQdHI8UmVw
bGF5S2l0Q2FwdHVyZVNvdXJjZT4gX2NhbGxiYWNrOworfQorCistIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhDYWxsYmFjazooV2Vha1B0cjxSZXBsYXlLaXRDYXB0dXJlU291cmNlPiYmKWNhbGxiYWNr
OworLSAodm9pZClkaXNjb25uZWN0OworLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOmtl
eVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeSopY2hhbmdlIGNv
bnRleHQ6KHZvaWQqKWNvbnRleHQ7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJDb3JlUmVw
bGF5S2l0U2NyZWVuUmVjb3JkZXJIZWxwZXIKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aENhbGxi
YWNrOihXZWFrUHRyPFJlcGxheUtpdENhcHR1cmVTb3VyY2U+JiYpY2FsbGJhY2sKK3sKKyAgICBz
ZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIHNlbGY7
CisKKyAgICBfY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsKKyAgICBbW1BBTDo6Z2V0UlBT
Y3JlZW5SZWNvcmRlckNsYXNzKCkgc2hhcmVkUmVjb3JkZXJdIGFkZE9ic2VydmVyOnNlbGYgZm9y
S2V5UGF0aDpAInJlY29yZGluZyIgb3B0aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3
IGNvbnRleHQ6KHZvaWQgKiluaWxdOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQp
ZGlzY29ubmVjdAoreworICAgIF9jYWxsYmFjayA9IG51bGxwdHI7CisgICAgW1tQQUw6OmdldFJQ
U2NyZWVuUmVjb3JkZXJDbGFzcygpIHNoYXJlZFJlY29yZGVyXSByZW1vdmVPYnNlcnZlcjpzZWxm
IGZvcktleVBhdGg6QCJyZWNvcmRpbmciXTsKK30KKworLSAodm9pZClvYnNlcnZlVmFsdWVGb3JL
ZXlQYXRoOmtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeSop
Y2hhbmdlIGNvbnRleHQ6KHZvaWQqKWNvbnRleHQKK3sKKyAgICBVTlVTRURfUEFSQU0ob2JqZWN0
KTsKKyAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CisKKyAgICBpZiAoIV9jYWxsYmFjaykKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWQgbmV3VmFsdWUgPSBbY2hhbmdlIHZhbHVlRm9yS2V5Ok5T
S2V5VmFsdWVDaGFuZ2VOZXdLZXldOworICAgIGJvb2wgd2lsbENoYW5nZSA9IFtbY2hhbmdlIHZh
bHVlRm9yS2V5Ok5TS2V5VmFsdWVDaGFuZ2VOb3RpZmljYXRpb25Jc1ByaW9yS2V5XSBib29sVmFs
dWVdOworCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgaWYgKF9jYWxsYmFjay0+bG9n
Z2VyUHRyKCkpIHsKKyAgICAgICAgYXV0byBpZGVudGlmaWVyID0gTG9nZ2VyOjpMb2dTaXRlSWRl
bnRpZmllcigiUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZSIsICJvYnNlcnZlVmFsdWVGb3JLZXlQYXRo
IiwgX2NhbGxiYWNrLT5sb2dJZGVudGlmaWVyKCkpOworICAgICAgICBSZXRhaW5QdHI8TlNTdHJp
bmc+IHZhbHVlU3RyaW5nID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aEZvcm1h
dDpAIiVAIiwgbmV3VmFsdWVdKTsKKyAgICAgICAgX2NhbGxiYWNrLT5sb2dnZXIoKS5sb2dBbHdh
eXMoX2NhbGxiYWNrLT5sb2dDaGFubmVsKCksIGlkZW50aWZpZXIsIHdpbGxDaGFuZ2UgPyAid2ls
bCIgOiAiZGlkIiwgIiBjaGFuZ2UgJyIsIFtrZXlQYXRoIFVURjhTdHJpbmddLCAiJyB0byAiLCBb
dmFsdWVTdHJpbmcuZ2V0KCkgVVRGOFN0cmluZ10pOworICAgIH0KKyNlbmRpZgorCisgICAgaWYg
KHdpbGxDaGFuZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChba2V5UGF0aCBpc0VxdWFs
VG9TdHJpbmc6QCJyZWNvcmRpbmciXSkKKyAgICAgICAgX2NhbGxiYWNrLT5jYXB0dXJlU3RhdGVE
aWRDaGFuZ2UoKTsKK30KK0BlbmQKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitib29sIFJlcGxh
eUtpdENhcHR1cmVTb3VyY2U6OmlzQXZhaWxhYmxlKCkKK3sKKyAgICByZXR1cm4gW1BBTDo6Z2V0
UlBTY3JlZW5SZWNvcmRlckNsYXNzKCkgc2hhcmVkUmVjb3JkZXJdLmlzQXZhaWxhYmxlOworfQor
CitFeHBlY3RlZDxVbmlxdWVSZWY8RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Q2FwdHVyZXI+
LCBTdHJpbmc+IFJlcGxheUtpdENhcHR1cmVTb3VyY2U6OmNyZWF0ZShjb25zdCBTdHJpbmcmKQor
eworICAgIGlmICghaXNBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KCJTY3JlZW4gY2FwdHVyZSB1bmF2YWlsYWJsZSJfcyk7CisKKyAgICByZXR1cm4gVW5pcXVlUmVm
PERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OkNhcHR1cmVyPihtYWtlVW5pcXVlUmVmPFJlcGxh
eUtpdENhcHR1cmVTb3VyY2U+KCkpOworfQorCitSZXBsYXlLaXRDYXB0dXJlU291cmNlOjpSZXBs
YXlLaXRDYXB0dXJlU291cmNlKCkKKyAgICA6IG1fY2FwdHVyZVdhdGNoZG9nVGltZXIoKnRoaXMs
ICZSZXBsYXlLaXRDYXB0dXJlU291cmNlOjp2ZXJpZnlDYXB0dXJlSXNBY3RpdmUpCit7Cit9CisK
K1JlcGxheUtpdENhcHR1cmVTb3VyY2U6On5SZXBsYXlLaXRDYXB0dXJlU291cmNlKCkKK3sKKyAg
ICBbbV9yZWNvcmRlckhlbHBlciBkaXNjb25uZWN0XTsKKyAgICBzdG9wKCk7CisgICAgbV9jdXJy
ZW50RnJhbWUgPSBudWxscHRyOworfQorCitib29sIFJlcGxheUtpdENhcHR1cmVTb3VyY2U6OnN0
YXJ0KCkKK3sKKyAgICBBU1NFUlQoaXNBdmFpbGFibGUoKSk7CisKKyAgICBhdXRvIGlkZW50aWZp
ZXIgPSBMT0dJREVOVElGSUVSOworICAgIEFMV0FZU19MT0dfSUYobG9nZ2VyUHRyKCksIGlkZW50
aWZpZXIpOworCisgICAgYXV0byAqc2NyZWVuUmVjb3JkZXIgPSBbUEFMOjpnZXRSUFNjcmVlblJl
Y29yZGVyQ2xhc3MoKSBzaGFyZWRSZWNvcmRlcl07CisgICAgaWYgKHNjcmVlblJlY29yZGVyLnJl
Y29yZGluZykKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBGSVhNRTogQWRkIHN1cHBv
cnQgZm9yIGNvbmN1cnJlbnQgYXVkaW8gY2FwdHVyZS4KKyAgICBbc2NyZWVuUmVjb3JkZXIgc2V0
TWljcm9waG9uZUVuYWJsZWQ6Tk9dOworCisgICAgaWYgKCFtX3JlY29yZGVySGVscGVyKQorICAg
ICAgICBtX3JlY29yZGVySGVscGVyID0gKFtbV2ViQ29yZVJlcGxheUtpdFNjcmVlblJlY29yZGVy
SGVscGVyIGFsbG9jXSBpbml0V2l0aENhbGxiYWNrOnRoaXNdKTsKKworICAgIGF1dG8gY2FwdHVy
ZUhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlz
IH0sIGlkZW50aWZpZXJdKENNU2FtcGxlQnVmZmVyUmVmIF9Ob25udWxsIHNhbXBsZUJ1ZmZlciwg
UlBTYW1wbGVCdWZmZXJUeXBlIGJ1ZmZlclR5cGUsIE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3Ip
IHsKKworICAgICAgICBpZiAoYnVmZmVyVHlwZSAhPSBSUFNhbXBsZUJ1ZmZlclR5cGVWaWRlbykK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBFUlJPUl9MT0dfSUYoZXJyb3IgJiYgbG9n
Z2VyUHRyKCksIGlkZW50aWZpZXIsICJzdGFydENhcHR1cmVXaXRoSGFuZGxlciBmYWlsZWQgIiwg
W2Vycm9yIGxvY2FsaXplZERlc2NyaXB0aW9uXS5VVEY4U3RyaW5nKTsKKworICAgICAgICArK21f
ZnJhbWVDb3VudDsKKworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlz
LCBzYW1wbGVCdWZmZXIgPSByZXRhaW5QdHIoc2FtcGxlQnVmZmVyKV0oKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgICAgICB3ZWFrVGhpcy0+c2NyZWVuUmVjb3JkZXJEaWRPdXRwdXRWaWRlb1NhbXBsZShXVEZN
b3ZlKHNhbXBsZUJ1ZmZlcikpOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGF1dG8gY29t
cGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7
ICp0aGlzIH0sIGlkZW50aWZpZXJdKE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IpIHsKKyAgICAg
ICAgLy8gRklYTUU6IEl0IHNob3VsZCBiZSBzYWZlIHRvIGNhbGwgYHZpZGVvU2FtcGxlQXZhaWxh
YmxlYCBmcm9tIGFueSB0aHJlYWQuIFRlc3QgdGhpcyBhbmQgZ2V0IHJpZCBvZiB0aGlzIG1haW4g
dGhyZWFkIGhvcC4KKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCB3ZWFr
VGhpcywgZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpLCBpZGVudGlmaWVyXSgpIG11dGFibGUgewor
ICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhZXJyb3IpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgICAgICBFUlJPUl9MT0dfSUYobG9nZ2VyUHRyKCksIGlkZW50aWZpZXIs
ICJjb21wbGV0aW9uSGFuZGxlciBmYWlsZWQgIiwgW2Vycm9yIGxvY2FsaXplZERlc2NyaXB0aW9u
XS5VVEY4U3RyaW5nKTsKKyAgICAgICAgICAgIHdlYWtUaGlzLT5zdG9wKCk7CisgICAgICAgIH0p
OworICAgIH0pOworCisgICAgW3NjcmVlblJlY29yZGVyIHN0YXJ0Q2FwdHVyZVdpdGhIYW5kbGVy
OmNhcHR1cmVIYW5kbGVyLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVy
LmdldCgpXTsKKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFJlcGxheUtpdENhcHR1cmVT
b3VyY2U6OnNjcmVlblJlY29yZGVyRGlkT3V0cHV0VmlkZW9TYW1wbGUoUmV0YWluUHRyPENNU2Ft
cGxlQnVmZmVyUmVmPiYmIHNhbXBsZUJ1ZmZlcikKK3sKKyAgICBtX2N1cnJlbnRGcmFtZSA9IHNh
bXBsZUJ1ZmZlci5nZXQoKTsKKyAgICBtX2ludHJpbnNpY1NpemUgPSBJbnRTaXplKFBBTDo6Q01W
aWRlb0Zvcm1hdERlc2NyaXB0aW9uR2V0UHJlc2VudGF0aW9uRGltZW5zaW9ucyhQQUw6OkNNU2Ft
cGxlQnVmZmVyR2V0Rm9ybWF0RGVzY3JpcHRpb24obV9jdXJyZW50RnJhbWUuZ2V0KCkpLCB0cnVl
LCB0cnVlKSk7Cit9CisKK3ZvaWQgUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZTo6Y2FwdHVyZVN0YXRl
RGlkQ2hhbmdlKCkKK3sKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHdlYWtU
aGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGlkZW50aWZpZXIgPSBMT0dJREVOVElGSUVSXSgpIG11
dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIGJvb2wgaXNSZWNvcmRpbmcgPSAhIVtbUEFMOjpnZXRSUFNjcmVlblJlY29yZGVyQ2xh
c3MoKSBzaGFyZWRSZWNvcmRlcl0gaXNSZWNvcmRpbmddOworICAgICAgICBpZiAobV9pc1J1bm5p
bmcgPT0gKGlzUmVjb3JkaW5nICYmICFtX2ludGVycnVwdGVkKSkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBtX2lzUnVubmluZyA9IGlzUmVjb3JkaW5nICYmICFtX2ludGVycnVwdGVk
OworICAgICAgICBBTFdBWVNfTE9HX0lGKGxvZ2dlclB0cigpLCBpZGVudGlmaWVyLCBtX2lzUnVu
bmluZyk7CisgICAgICAgIGNhcHR1cmVySXNSdW5uaW5nQ2hhbmdlZChtX2lzUnVubmluZyk7Cisg
ICAgfSk7Cit9CisKK3ZvaWQgUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZTo6c3RvcCgpCit7CisgICAg
YXV0byBpZGVudGlmaWVyID0gTE9HSURFTlRJRklFUjsKKyAgICBBTFdBWVNfTE9HX0lGKGxvZ2dl
clB0cigpLCBpZGVudGlmaWVyKTsKKyAgICBtX2NhcHR1cmVXYXRjaGRvZ1RpbWVyLnN0b3AoKTsK
KyAgICBtX2ludGVycnVwdGVkID0gZmFsc2U7CisgICAgbV9pc1J1bm5pbmcgPSBmYWxzZTsKKwor
ICAgIGF1dG8gKnNjcmVlblJlY29yZGVyID0gW1BBTDo6Z2V0UlBTY3JlZW5SZWNvcmRlckNsYXNz
KCkgc2hhcmVkUmVjb3JkZXJdOworICAgIGlmIChzY3JlZW5SZWNvcmRlci5yZWNvcmRpbmcpIHsK
KyAgICAgICAgW3NjcmVlblJlY29yZGVyIHN0b3BDYXB0dXJlV2l0aEhhbmRsZXI6XihOU0Vycm9y
ICogX051bGxhYmxlIGVycm9yKSB7CisgICAgICAgICAgICBFUlJPUl9MT0dfSUYoZXJyb3IgJiYg
bG9nZ2VyUHRyKCksIGlkZW50aWZpZXIsICJzdGFydENhcHR1cmVXaXRoSGFuZGxlciBmYWlsZWQg
IiwgW2Vycm9yIGxvY2FsaXplZERlc2NyaXB0aW9uXS5VVEY4U3RyaW5nKTsKKyAgICAgICAgfV07
CisgICAgfQorfQorCitEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpEaXNwbGF5RnJhbWVUeXBl
IFJlcGxheUtpdENhcHR1cmVTb3VyY2U6OmdlbmVyYXRlRnJhbWUoKQoreworICAgIHJldHVybiBt
X2N1cnJlbnRGcmFtZTsKK30KKwordm9pZCBSZXBsYXlLaXRDYXB0dXJlU291cmNlOjp2ZXJpZnlD
YXB0dXJlSXNBY3RpdmUoKQoreworICAgIEFTU0VSVChtX2lzUnVubmluZyB8fCBtX2ludGVycnVw
dGVkKTsKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBMT0dJREVOVElGSUVSOworICAgIGlmIChtX2xh
c3RGcmFtZUNvdW50ICE9IG1fZnJhbWVDb3VudCkgeworICAgICAgICBtX2xhc3RGcmFtZUNvdW50
ID0gbV9mcmFtZUNvdW50OworICAgICAgICBpZiAobV9pbnRlcnJ1cHRlZCkgeworICAgICAgICAg
ICAgQUxXQVlTX0xPR19JRihsb2dnZXJQdHIoKSwgaWRlbnRpZmllciwgImZyYW1lIHJlY2VpdmVk
IGFmdGVyIGludGVycnVwdGlvbiwgdW5tdXRpbmciKTsKKyAgICAgICAgICAgIG1faW50ZXJydXB0
ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIGNhcHR1cmVTdGF0ZURpZENoYW5nZSgpOworICAgICAg
ICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBTFdBWVNfTE9HX0lGKGxvZ2dlclB0
cigpLCBpZGVudGlmaWVyLCAibm8gZnJhbWUgcmVjZWl2ZWQgaW4gIiwgc3RhdGljX2Nhc3Q8aW50
PihtX2NhcHR1cmVXYXRjaGRvZ1RpbWVyLnJlcGVhdEludGVydmFsKCkudmFsdWUoKSksICIgc2Vj
b25kcywgbXV0aW5nIik7CisgICAgbV9pbnRlcnJ1cHRlZCA9IHRydWU7CisgICAgY2FwdHVyZVN0
YXRlRGlkQ2hhbmdlKCk7Cit9CisKK3ZvaWQgUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZTo6c3RhcnRD
YXB0dXJlV2F0Y2hkb2dUaW1lcigpCit7CisgICAgc3RhdGljIGNvbnN0ZXhwciBTZWNvbmRzIHZl
cmlmeUNhcHR1cmVJbnRlcnZhbCA9IDJfczsKKyAgICBpZiAobV9jYXB0dXJlV2F0Y2hkb2dUaW1l
ci5pc0FjdGl2ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NhcHR1cmVXYXRjaGRvZ1Rp
bWVyLnN0YXJ0UmVwZWF0aW5nKHZlcmlmeUNhcHR1cmVJbnRlcnZhbCk7CisgICAgbV9sYXN0RnJh
bWVDb3VudCA9IG1fZnJhbWVDb3VudDsKK30KKworc3RhdGljIFN0cmluZyBzY3JlZW5EZXZpY2VV
VUlEKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzY3JlZW5JRCA9IGNy
ZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKKyAgICByZXR1cm4gc2NyZWVuSUQ7Cit9CisKK3N0
YXRpYyBDYXB0dXJlRGV2aWNlJiBzY3JlZW5EZXZpY2UoKQoreworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxDYXB0dXJlRGV2aWNlPiBkZXZpY2UgPSB7IHNjcmVlbkRldmljZVVVSUQoKSwgQ2Fw
dHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuLCBtYWtlU3RyaW5nKCJTY3JlZW4gMSIpLCBl
bXB0eVN0cmluZygpLCB0cnVlIH07CisgICAgcmV0dXJuIGRldmljZTsKK30KKworc3RkOjpvcHRp
b25hbDxDYXB0dXJlRGV2aWNlPiBSZXBsYXlLaXRDYXB0dXJlU291cmNlOjpzY3JlZW5DYXB0dXJl
RGV2aWNlV2l0aFBlcnNpc3RlbnRJRChjb25zdCBTdHJpbmcmIGRpc3BsYXlJRCkKK3sKKyAgICBp
ZiAoIWlzQXZhaWxhYmxlKCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAi
UmVwbGF5S2l0Q2FwdHVyZVNvdXJjZTo6c2NyZWVuQ2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50
SUQ6IHNjcmVlbiBjYXB0dXJlIHVuYXZhaWxhYmxlIik7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisgICAgfQorCisgICAgaWYgKGRpc3BsYXlJRCAhPSBzY3JlZW5EZXZpY2VVVUlEKCkp
IHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAiUmVwbGF5S2l0Q2FwdHVyZVNv
dXJjZTo6c2NyZWVuQ2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQ6IGludmFsaWQgZGlzcGxh
eSBJRCIpOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKworICAgIHJldHVy
biBzY3JlZW5EZXZpY2UoKTsKK30KKwordm9pZCBSZXBsYXlLaXRDYXB0dXJlU291cmNlOjpzY3Jl
ZW5DYXB0dXJlRGV2aWNlcyhWZWN0b3I8Q2FwdHVyZURldmljZT4mIGRpc3BsYXlzKQoreworICAg
IGlmIChpc0F2YWlsYWJsZSgpKQorICAgICAgICBkaXNwbGF5cy5hcHBlbmQoc2NyZWVuRGV2aWNl
KCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVE
SUFfU1RSRUFNKSAmJiBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFt
Q2FwdHVyZVNvdXJjZS5jcHAKaW5kZXggNWJlYjlmYTIxOTk1N2FmZmRiZTNiZWY3YjA2NzA1ZTI1
YTM3ZGE4Ni4uZjNiYmI3YzU4YjNmM2ZlNTQwOGFmMGEyMTM4ZDJkMGY4MjAyMWU1NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NHRGlzcGxheVN0
cmVhbUNhcHR1cmVTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9DR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlLmNwcApAQCAtNzEsOSArNzEs
OSBAQCB2b2lkIENHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2U6OnN0b3AoKQogICAgIG1faXNS
dW5uaW5nID0gZmFsc2U7CiB9CiAKLURpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpEaXNwbGF5RnJh
bWVUeXBlIENHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2U6OmdlbmVyYXRlRnJhbWUoKQorRGlz
cGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6RGlzcGxheUZyYW1lVHlwZSBDR0Rpc3BsYXlTdHJlYW1D
YXB0dXJlU291cmNlOjpnZW5lcmF0ZUZyYW1lKCkKIHsKLSAgICByZXR1cm4gUmV0YWluUHRyIHsg
bV9jdXJyZW50RnJhbWUuaW9TdXJmYWNlKCkgfTsKKyAgICByZXR1cm4gbV9jdXJyZW50RnJhbWU7
CiB9CiAKIGJvb2wgQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6c3RhcnREaXNwbGF5U3Ry
ZWFtKCkKQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIENHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3Vy
Y2U6OmRpc3BsYXlSZWNvbmZpZ3VyYXRpb25DYWxsQmFjayhDR0RpcmVjdERpc3BsYQogICAgICAg
ICByZWludGVycHJldF9jYXN0PENHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2UgKj4odXNlcklu
Zm8pLT5kaXNwbGF5V2FzUmVjb25maWd1cmVkKGRpc3BsYXksIGZsYWdzKTsKIH0KIAotdm9pZCBD
R0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlOjpuZXdGcmFtZShDR0Rpc3BsYXlTdHJlYW1GcmFt
ZVN0YXR1cyBzdGF0dXMsIERpc3BsYXlTdXJmYWNlJiYgbmV3RnJhbWUpCit2b2lkIENHRGlzcGxh
eVN0cmVhbUNhcHR1cmVTb3VyY2U6Om5ld0ZyYW1lKENHRGlzcGxheVN0cmVhbUZyYW1lU3RhdHVz
IHN0YXR1cywgUmV0YWluUHRyPElPU3VyZmFjZVJlZj4mJiBuZXdGcmFtZSkKIHsKICAgICBzd2l0
Y2ggKHN0YXR1cykgewogICAgIGNhc2Uga0NHRGlzcGxheVN0cmVhbUZyYW1lU3RhdHVzRnJhbWVD
b21wbGV0ZToKQEAgLTE3MSw3ICsxNzEsNyBAQCBDR0Rpc3BsYXlTdHJlYW1GcmFtZUF2YWlsYWJs
ZUhhbmRsZXIgQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6ZnJhbWVBdmFpbGFibAogICAg
ICAgICBpZiAoIXJlY3RzIHx8ICFjb3VudCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzLCBzdGF0dXMsIGZyYW1lID0gRGlz
cGxheVN1cmZhY2UgeyBmcmFtZVN1cmZhY2UgfV0oKSBtdXRhYmxlIHsKKyAgICAgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcywgc3RhdHVzLCBmcmFtZSA9IHJldGFpblB0cihm
cmFtZVN1cmZhY2UpXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB3ZWFrVGhpcy0+bmV3RnJhbWUoc3Rh
dHVzLCBXVEZNb3ZlKGZyYW1lKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NHRGlzcGxheVN0cmVhbUNhcHR1cmVT
b3VyY2UuaAppbmRleCBhMTkwMzhkY2FhZDRhMWZiODMyNTc4MDY5NTZhZDA0NTExY2YyYzY0Li41
YTEzMTY2YmE0ZjNlY2FmYThiZTc1ZTQ3MzM1ODAwYjQ5ZTFlMzg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtQ2FwdHVy
ZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9D
R0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlLmgKQEAgLTI3LDggKzI3LDcgQEAKIAogI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKE1BQykKIAotI2luY2x1ZGUgIkRpc3BsYXlD
YXB0dXJlU291cmNlTWFjLmgiCi0jaW5jbHVkZSAiSU9TdXJmYWNlLmgiCisjaW5jbHVkZSAiRGlz
cGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oIgogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR0Rpc3Bs
YXlDb25maWd1cmF0aW9uLmg+CiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHRGlzcGxheVN0cmVh
bS5oPgogI2luY2x1ZGUgPHd0Zi9CbG9ja1B0ci5oPgpAQCAtNDAsMTAgKzM5LDEwIEBAIHR5cGVk
ZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlIDog
cHVibGljIERpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpDYXB0dXJlciwgcHVibGljIENhbk1ha2VX
ZWFrUHRyPENHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2U+IHsKK2NsYXNzIENHRGlzcGxheVN0
cmVhbUNhcHR1cmVTb3VyY2UgOiBwdWJsaWMgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Q2Fw
dHVyZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNl
PiB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZSgp
ID0gZGVmYXVsdDsKLSAgICB+Q0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZSgpOworICAgIHZp
cnR1YWwgfkNHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2UoKTsKIAogcHJvdGVjdGVkOgogICAg
IHVzaW5nIEZyYW1lQXZhaWxhYmxlQ2FsbGJhY2sgPSB2b2lkICheKShDR0Rpc3BsYXlTdHJlYW1G
cmFtZVN0YXR1cywgdWludDY0X3QsIElPU3VyZmFjZVJlZiwgQ0dEaXNwbGF5U3RyZWFtVXBkYXRl
UmVmKTsKQEAgLTYwLDUxICs1OSwxOSBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIHN0YXRp
YyB2b2lkIGRpc3BsYXlSZWNvbmZpZ3VyYXRpb25DYWxsQmFjayhDR0RpcmVjdERpc3BsYXlJRCwg
Q0dEaXNwbGF5Q2hhbmdlU3VtbWFyeUZsYWdzLCB2b2lkKik7CiAKLSAgICAvLyBEaXNwbGF5Q2Fw
dHVyZVNvdXJjZU1hYzo6Q2FwdHVyZXIKKyAgICAvLyBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29h
OjpDYXB0dXJlcgogICAgIGJvb2wgc3RhcnQoKSBmaW5hbDsKICAgICB2b2lkIHN0b3AoKSBmaW5h
bDsKLSAgICBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6RGlzcGxheUZyYW1lVHlwZSBnZW5lcmF0
ZUZyYW1lKCkgZmluYWw7CisgICAgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6RGlzcGxheUZy
YW1lVHlwZSBnZW5lcmF0ZUZyYW1lKCkgZmluYWw7CiAgICAgdm9pZCBjb21taXRDb25maWd1cmF0
aW9uKGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYpIGZpbmFsOwogCiAgICAgdm9p
ZCBkaXNwbGF5V2FzUmVjb25maWd1cmVkKENHRGlyZWN0RGlzcGxheUlELCBDR0Rpc3BsYXlDaGFu
Z2VTdW1tYXJ5RmxhZ3MpOwogICAgIGJvb2wgc3RhcnREaXNwbGF5U3RyZWFtKCk7CiAgICAgRnJh
bWVBdmFpbGFibGVDYWxsYmFjayBmcmFtZUF2YWlsYWJsZUhhbmRsZXIoKTsKIAotICAgIGNsYXNz
IERpc3BsYXlTdXJmYWNlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIERpc3BsYXlTdXJmYWNlKCkg
PSBkZWZhdWx0OwotICAgICAgICBleHBsaWNpdCBEaXNwbGF5U3VyZmFjZShJT1N1cmZhY2VSZWYg
c3VyZmFjZSkKLSAgICAgICAgICAgIDogbV9zdXJmYWNlKHN1cmZhY2UpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGlmIChtX3N1cmZhY2UpCi0gICAgICAgICAgICAgICAgSU9TdXJmYWNlSW5jcmVt
ZW50VXNlQ291bnQobV9zdXJmYWNlLmdldCgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIH5EaXNw
bGF5U3VyZmFjZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX3N1cmZhY2UpCi0gICAg
ICAgICAgICAgICAgSU9TdXJmYWNlRGVjcmVtZW50VXNlQ291bnQobV9zdXJmYWNlLmdldCgpKTsK
LSAgICAgICAgfQotCi0gICAgICAgIERpc3BsYXlTdXJmYWNlJiBvcGVyYXRvcj0oSU9TdXJmYWNl
UmVmIHN1cmZhY2UpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX3N1cmZhY2UpCi0gICAg
ICAgICAgICAgICAgSU9TdXJmYWNlRGVjcmVtZW50VXNlQ291bnQobV9zdXJmYWNlLmdldCgpKTsK
LSAgICAgICAgICAgIGlmIChzdXJmYWNlKQotICAgICAgICAgICAgICAgIElPU3VyZmFjZUluY3Jl
bWVudFVzZUNvdW50KHN1cmZhY2UpOwotICAgICAgICAgICAgbV9zdXJmYWNlID0gc3VyZmFjZTsK
LSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgfQotCi0gICAgICAgIElPU3VyZmFj
ZVJlZiBpb1N1cmZhY2UoKSBjb25zdCB7IHJldHVybiBtX3N1cmZhY2UuZ2V0KCk7IH0KLQotICAg
IHByaXZhdGU6Ci0gICAgICAgIFJldGFpblB0cjxJT1N1cmZhY2VSZWY+IG1fc3VyZmFjZTsKLSAg
ICB9OwotCi0gICAgdm9pZCBuZXdGcmFtZShDR0Rpc3BsYXlTdHJlYW1GcmFtZVN0YXR1cywgRGlz
cGxheVN1cmZhY2UmJik7Ci0KLSAgICBEaXNwbGF5U3VyZmFjZSBtX2N1cnJlbnRGcmFtZTsKKyAg
ICB2b2lkIG5ld0ZyYW1lKENHRGlzcGxheVN0cmVhbUZyYW1lU3RhdHVzLCBSZXRhaW5QdHI8SU9T
dXJmYWNlUmVmPiYmKTsKKworICAgIFJldGFpblB0cjxJT1N1cmZhY2VSZWY+IG1fY3VycmVudEZy
YW1lOwogICAgIFJldGFpblB0cjxDR0Rpc3BsYXlTdHJlYW1SZWY+IG1fZGlzcGxheVN0cmVhbTsK
ICAgICBPU09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiBtX2NhcHR1cmVRdWV1ZTsKICAgICBC
bG9ja1B0cjx2b2lkKENHRGlzcGxheVN0cmVhbUZyYW1lU3RhdHVzLCB1aW50NjRfdCwgSU9TdXJm
YWNlUmVmLCBDR0Rpc3BsYXlTdHJlYW1VcGRhdGVSZWYpPiBtX2ZyYW1lQXZhaWxhYmxlSGFuZGxl
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9D
R0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZS5o
CmluZGV4IGUxNjA0NDA3NWRiNDI5YzdjMDY1MTgzNWNhODMzZjU5YjNkYmNiNDYuLmViMWJmNzkz
ZGExM2IwZjZlNWZmMGFiMTVmMjIyNjAzN2M1ODVjMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJl
U291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NH
RGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2UuaApAQCAtNDEsNyArNDEsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3Vy
Y2UgZmluYWwgOiBwdWJsaWMgQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZSB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIEV4cGVjdGVkPFVuaXF1ZVJlZjxEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6
Q2FwdHVyZXI+LCBTdHJpbmc+IGNyZWF0ZShjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgRXhw
ZWN0ZWQ8VW5pcXVlUmVmPERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OkNhcHR1cmVyPiwgU3Ry
aW5nPiBjcmVhdGUoY29uc3QgU3RyaW5nJik7CiAKICAgICBleHBsaWNpdCBDR0Rpc3BsYXlTdHJl
YW1TY3JlZW5DYXB0dXJlU291cmNlKHVpbnQzMl90KTsKICAgICB+Q0dEaXNwbGF5U3RyZWFtU2Ny
ZWVuQ2FwdHVyZVNvdXJjZSgpID0gZGVmYXVsdDsKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgog
CiBwcml2YXRlOgogCi0gICAgLy8gRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OkNhcHR1cmVyCisg
ICAgLy8gRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Q2FwdHVyZXIKICAgICBDYXB0dXJlRGV2
aWNlOjpEZXZpY2VUeXBlIGRldmljZVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBDYXB0dXJl
RGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW47IH0KICAgICBSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3M6OkRpc3BsYXlTdXJmYWNlVHlwZSBzdXJmYWNlVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RGlzcGxheVN1cmZhY2VUeXBlOjpNb25p
dG9yOyB9CiAgICAgSW50U2l6ZSBpbnRyaW5zaWNTaXplKCkgY29uc3QgZmluYWw7CkBAIC02Mywz
OCArNjMsNiBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxDR0Rpc3BsYXlTdHJlYW1SZWY+IGNy
ZWF0ZURpc3BsYXlTdHJlYW0oRnJhbWVBdmFpbGFibGVDYWxsYmFjaywgZGlzcGF0Y2hfcXVldWVf
dCkgZmluYWw7CiAgICAgYm9vbCBjaGVja0Rpc3BsYXlTdHJlYW0oKSBmaW5hbDsKIAotICAgIGNs
YXNzIERpc3BsYXlTdXJmYWNlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIERpc3BsYXlTdXJmYWNl
KCkgPSBkZWZhdWx0OwotICAgICAgICBleHBsaWNpdCBEaXNwbGF5U3VyZmFjZShJT1N1cmZhY2VS
ZWYgc3VyZmFjZSkKLSAgICAgICAgICAgIDogbV9zdXJmYWNlKHN1cmZhY2UpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGlmIChtX3N1cmZhY2UpCi0gICAgICAgICAgICAgICAgSU9TdXJmYWNlSW5j
cmVtZW50VXNlQ291bnQobV9zdXJmYWNlLmdldCgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIH5E
aXNwbGF5U3VyZmFjZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX3N1cmZhY2UpCi0g
ICAgICAgICAgICAgICAgSU9TdXJmYWNlRGVjcmVtZW50VXNlQ291bnQobV9zdXJmYWNlLmdldCgp
KTsKLSAgICAgICAgfQotCi0gICAgICAgIERpc3BsYXlTdXJmYWNlJiBvcGVyYXRvcj0oSU9TdXJm
YWNlUmVmIHN1cmZhY2UpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX3N1cmZhY2UpCi0g
ICAgICAgICAgICAgICAgSU9TdXJmYWNlRGVjcmVtZW50VXNlQ291bnQobV9zdXJmYWNlLmdldCgp
KTsKLSAgICAgICAgICAgIGlmIChzdXJmYWNlKQotICAgICAgICAgICAgICAgIElPU3VyZmFjZUlu
Y3JlbWVudFVzZUNvdW50KHN1cmZhY2UpOwotICAgICAgICAgICAgbV9zdXJmYWNlID0gc3VyZmFj
ZTsKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgfQotCi0gICAgICAgIElPU3Vy
ZmFjZVJlZiBpb1N1cmZhY2UoKSBjb25zdCB7IHJldHVybiBtX3N1cmZhY2UuZ2V0KCk7IH0KLQot
ICAgIHByaXZhdGU6Ci0gICAgICAgIFJldGFpblB0cjxJT1N1cmZhY2VSZWY+IG1fc3VyZmFjZTsK
LSAgICB9OwotCiAgICAgUmV0YWluUHRyPENHRGlzcGxheVN0cmVhbVJlZj4gbV9kaXNwbGF5U3Ry
ZWFtOwogCiAgICAgdWludDMyX3QgbV9kaXNwbGF5SUQgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtU2NyZWVu
Q2FwdHVyZVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9DR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlLm1tCmluZGV4IGI3Yzc0NWRkZGYx
M2Q1YjdmNjM2YWU5ZWViNGI1YzgyNDg0NDBlMzYuLjliZGE3MjRkNTM2OTllN2JlZTg0NDE3YmVh
OTkxOTkwNzk1Yjk5NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9DR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR0Rpc3BsYXlTdHJlYW1TY3Jl
ZW5DYXB0dXJlU291cmNlLm1tCkBAIC03NSw3ICs3NSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PENHRGlyZWN0RGlzcGxheUlEPiB1cGRhdGVEaXNwbGF5SUQoQ0dEaXJlY3REaXNwbGF5SUQgZGlz
cGxhCiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotRXhwZWN0ZWQ8VW5pcXVlUmVmPERp
c3BsYXlDYXB0dXJlU291cmNlTWFjOjpDYXB0dXJlcj4sIFN0cmluZz4gQ0dEaXNwbGF5U3RyZWFt
U2NyZWVuQ2FwdHVyZVNvdXJjZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgZGV2aWNlSUQpCitFeHBl
Y3RlZDxVbmlxdWVSZWY8RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Q2FwdHVyZXI+LCBTdHJp
bmc+IENHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2U6OmNyZWF0ZShjb25zdCBTdHJp
bmcmIGRldmljZUlEKQogewogICAgIGF1dG8gZGlzcGxheUlEID0gcGFyc2VJbnRlZ2VyPHVpbnQz
Ml90PihkZXZpY2VJRCk7CiAgICAgaWYgKCFkaXNwbGF5SUQpCkBAIC04NSw3ICs4NSw3IEBAIEV4
cGVjdGVkPFVuaXF1ZVJlZjxEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6Q2FwdHVyZXI+LCBTdHJp
bmc+IENHRGlzcGxheVN0cmVhbVNjCiAgICAgaWYgKCFhY3R1YWxEaXNwbGF5SUQpCiAgICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZCgiSW52YWxpZCBkaXNwbGF5IElEIl9zKTsKIAotICAgIHJl
dHVybiBVbmlxdWVSZWY8RGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OkNhcHR1cmVyPihtYWtlVW5p
cXVlUmVmPENHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2U+KGFjdHVhbERpc3BsYXlJ
RC52YWx1ZSgpKSk7CisgICAgcmV0dXJuIFVuaXF1ZVJlZjxEaXNwbGF5Q2FwdHVyZVNvdXJjZUNv
Y29hOjpDYXB0dXJlcj4obWFrZVVuaXF1ZVJlZjxDR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJl
U291cmNlPihhY3R1YWxEaXNwbGF5SUQudmFsdWUoKSkpOwogfQogCiBDR0Rpc3BsYXlTdHJlYW1T
Y3JlZW5DYXB0dXJlU291cmNlOjpDR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlKHVp
bnQzMl90IGRpc3BsYXlJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZU1hbmFnZXJDb2NvYS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVNYW5hZ2VyQ29jb2Eu
Y3BwCmluZGV4IDg4NTU0YmFiNGMyMDFiNDIzZjI1MTFjMjI1NWQyM2Q4OTQ5YjJiZWMuLjE5N2M2
NmY2OTcxNDk4Mjk0OGQ2YjRmZjBmYzM0OWNjMmM5NGYzN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZU1hbmFnZXJDb2Nv
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3Bs
YXlDYXB0dXJlTWFuYWdlckNvY29hLmNwcApAQCAtMzQsMTAgKzM0LDExIEBACiAKICNpZiBQTEFU
Rk9STShNQUMpCiAjaW5jbHVkZSAiQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZS5o
IgotI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR0RpcmVjdERpc3BsYXkuaD4KICNlbmRpZgogCi0j
aW5jbHVkZSAiQ29yZVZpZGVvU29mdExpbmsuaCIKKyNpZiBQTEFURk9STShJT1MpCisjaW5jbHVk
ZSAiUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZS5oIgorI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtNjEsNiArNjIsOCBAQCB2b2lkIERpc3BsYXlDYXB0dXJlTWFuYWdlckNvY29hOjp1
cGRhdGVEaXNwbGF5Q2FwdHVyZURldmljZXMoKQogewogI2lmIFBMQVRGT1JNKE1BQykKICAgICBD
R0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlOjpzY3JlZW5DYXB0dXJlRGV2aWNlcyht
X2RldmljZXMpOworI2VsaWYgUExBVEZPUk0oSU9TKQorICAgIFJlcGxheUtpdENhcHR1cmVTb3Vy
Y2U6OnNjcmVlbkNhcHR1cmVEZXZpY2VzKG1fZGV2aWNlcyk7CiAjZW5kaWYKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0
dXJlU291cmNlTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGUyNTY2ZTEzZjc3OThmNGJjMjdhMjU2ODA0ODlmMzJmMDU4ODhkZGEuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlTWFjLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDI3NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRGlzcGxheUNh
cHR1cmVTb3VyY2VNYWMuaCIKLQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JN
KE1BQykKLQotI2luY2x1ZGUgIkNHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2UuaCIK
LSNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiTWVkaWFTYW1wbGVBVkZPYmpDLmgiCi0j
aW5jbHVkZSAiUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oIgotI2luY2x1ZGUgIlJlYWx0aW1lTWVk
aWFTb3VyY2UuaCIKLSNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgiCi0jaW5j
bHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmgiCi0jaW5jbHVkZSAiUmVhbHRpbWVW
aWRlb1V0aWxpdGllcy5oIgotI2luY2x1ZGUgIlJlbW90ZVZpZGVvU2FtcGxlLmgiCi0jaW5jbHVk
ZSAiVGltZXIuaCIKLSNpbmNsdWRlIDxDb3JlTWVkaWEvQ01TeW5jLmg+Ci0jaW5jbHVkZSA8bWFj
aC9tYWNoX3RpbWUuaD4KLSNpbmNsdWRlIDxwYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91
bmRhdGlvbi5oPgotI2luY2x1ZGUgPHBhbC9zcGkvY2YvQ29yZUF1ZGlvU1BJLmg+Ci0jaW5jbHVk
ZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KLSNpbmNsdWRlIDxwYWwvc3BpL2NvY29h
L0lPU3VyZmFjZVNQSS5oPgotI2luY2x1ZGUgPHN5cy90aW1lLmg+Ci0jaW5jbHVkZSA8d3RmL01h
aW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLQotI2luY2x1ZGUg
IkNvcmVWaWRlb1NvZnRMaW5rLmgiCi0jaW5jbHVkZSA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5r
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotQ2FwdHVyZVNvdXJjZU9yRXJyb3IgRGlzcGxh
eUNhcHR1cmVTb3VyY2VNYWM6OmNyZWF0ZShjb25zdCBDYXB0dXJlRGV2aWNlJiBkZXZpY2UsIGNv
bnN0IE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzKQotewotICAgIHN3aXRjaCAoZGV2aWNl
LnR5cGUoKSkgewotICAgIGNhc2UgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuOgot
ICAgICAgICByZXR1cm4gY3JlYXRlKENHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2U6
OmNyZWF0ZShkZXZpY2UucGVyc2lzdGVudElkKCkpLCBkZXZpY2UsIGNvbnN0cmFpbnRzKTsKLSAg
ICBjYXNlIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OldpbmRvdzoKLSAgICBjYXNlIENhcHR1
cmVEZXZpY2U6OkRldmljZVR5cGU6Ok1pY3JvcGhvbmU6Ci0gICAgY2FzZSBDYXB0dXJlRGV2aWNl
OjpEZXZpY2VUeXBlOjpTcGVha2VyOgotICAgIGNhc2UgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlw
ZTo6Q2FtZXJhOgotICAgIGNhc2UgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6VW5rbm93bjoK
LSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQot
ICAgIHJldHVybiB7IH07Ci19Ci0KLUNhcHR1cmVTb3VyY2VPckVycm9yIERpc3BsYXlDYXB0dXJl
U291cmNlTWFjOjpjcmVhdGUoRXhwZWN0ZWQ8VW5pcXVlUmVmPENhcHR1cmVyPiwgU3RyaW5nPiYm
IGNhcHR1cmVyLCBjb25zdCBDYXB0dXJlRGV2aWNlJiBkZXZpY2UsIGNvbnN0IE1lZGlhQ29uc3Ry
YWludHMqIGNvbnN0cmFpbnRzKQotewotICAgIGlmICghY2FwdHVyZXIuaGFzX3ZhbHVlKCkpCi0g
ICAgICAgIHJldHVybiBDYXB0dXJlU291cmNlT3JFcnJvciB7IFdURk1vdmUoY2FwdHVyZXIuZXJy
b3IoKSkgfTsKLQotICAgIGF1dG8gc291cmNlID0gYWRvcHRSZWYoKm5ldyBEaXNwbGF5Q2FwdHVy
ZVNvdXJjZU1hYyhXVEZNb3ZlKGNhcHR1cmVyLnZhbHVlKCkpLCBTdHJpbmcgeyBkZXZpY2UubGFi
ZWwoKSB9KSk7Ci0gICAgaWYgKGNvbnN0cmFpbnRzKSB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0g
c291cmNlLT5hcHBseUNvbnN0cmFpbnRzKCpjb25zdHJhaW50cyk7Ci0gICAgICAgIGlmIChyZXN1
bHQpCi0gICAgICAgICAgICByZXR1cm4gV1RGTW92ZShyZXN1bHQudmFsdWUoKS5iYWRDb25zdHJh
aW50KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gQ2FwdHVyZVNvdXJjZU9yRXJyb3IoV1RGTW92ZShz
b3VyY2UpKTsKLX0KLQotRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OkRpc3BsYXlDYXB0dXJlU291
cmNlTWFjKFVuaXF1ZVJlZjxDYXB0dXJlcj4mJiBjYXB0dXJlciwgU3RyaW5nJiYgbmFtZSkKLSAg
ICA6IFJlYWx0aW1lTWVkaWFTb3VyY2UoVHlwZTo6VmlkZW8sIFdURk1vdmUobmFtZSkpCi0gICAg
LCBtX2NhcHR1cmVyKFdURk1vdmUoY2FwdHVyZXIpKQotICAgICwgbV90aW1lcihSdW5Mb29wOjpj
dXJyZW50KCksIHRoaXMsICZEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6ZW1pdEZyYW1lKQotewot
fQotCi1EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6fkRpc3BsYXlDYXB0dXJlU291cmNlTWFjKCkK
LXsKLX0KLQotY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgRGlzcGxheUNh
cHR1cmVTb3VyY2VNYWM6OmNhcGFiaWxpdGllcygpCi17Ci0gICAgaWYgKCFtX2NhcGFiaWxpdGll
cykgewotICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzIGNhcGFiaWxpdGll
cyhzZXR0aW5ncygpLnN1cHBvcnRlZENvbnN0cmFpbnRzKCkpOwotCi0gICAgICAgIGF1dG8gaW50
cmluc2ljU2l6ZSA9IG1fY2FwdHVyZXItPmludHJpbnNpY1NpemUoKTsKLSAgICAgICAgY2FwYWJp
bGl0aWVzLnNldFdpZHRoKENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UoMSwgaW50cmluc2ljU2l6ZS53
aWR0aCgpKSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5zZXRIZWlnaHQoQ2FwYWJpbGl0eVZhbHVl
T3JSYW5nZSgxLCBpbnRyaW5zaWNTaXplLmhlaWdodCgpKSk7Ci0gICAgICAgIGNhcGFiaWxpdGll
cy5zZXRGcmFtZVJhdGUoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSguMDEsIDMwLjApKTsKLQotICAg
ICAgICBtX2NhcGFiaWxpdGllcyA9IFdURk1vdmUoY2FwYWJpbGl0aWVzKTsKLSAgICB9Ci0gICAg
cmV0dXJuIG1fY2FwYWJpbGl0aWVzLnZhbHVlKCk7Ci19Ci0KLWNvbnN0IFJlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5ncyYgRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OnNldHRpbmdzKCkKLXsKLSAg
ICBpZiAoIW1fY3VycmVudFNldHRpbmdzKSB7Ci0gICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5ncyBzZXR0aW5nczsKLSAgICAgICAgc2V0dGluZ3Muc2V0RnJhbWVSYXRlKGZyYW1lUmF0
ZSgpKTsKLQotICAgICAgICBhdXRvIHNpemUgPSB0aGlzLT5zaXplKCk7Ci0gICAgICAgIHNldHRp
bmdzLnNldFdpZHRoKHNpemUud2lkdGgoKSk7Ci0gICAgICAgIHNldHRpbmdzLnNldEhlaWdodChz
aXplLmhlaWdodCgpKTsKLQotICAgICAgICBzZXR0aW5ncy5zZXREaXNwbGF5U3VyZmFjZShtX2Nh
cHR1cmVyLT5zdXJmYWNlVHlwZSgpKTsKLSAgICAgICAgc2V0dGluZ3Muc2V0TG9naWNhbFN1cmZh
Y2UoZmFsc2UpOwotCi0gICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJh
aW50cyBzdXBwb3J0ZWRDb25zdHJhaW50czsKLSAgICAgICAgc3VwcG9ydGVkQ29uc3RyYWludHMu
c2V0U3VwcG9ydHNGcmFtZVJhdGUodHJ1ZSk7Ci0gICAgICAgIHN1cHBvcnRlZENvbnN0cmFpbnRz
LnNldFN1cHBvcnRzV2lkdGgodHJ1ZSk7Ci0gICAgICAgIHN1cHBvcnRlZENvbnN0cmFpbnRzLnNl
dFN1cHBvcnRzSGVpZ2h0KHRydWUpOwotICAgICAgICBzdXBwb3J0ZWRDb25zdHJhaW50cy5zZXRT
dXBwb3J0c0Rpc3BsYXlTdXJmYWNlKHRydWUpOwotICAgICAgICBzdXBwb3J0ZWRDb25zdHJhaW50
cy5zZXRTdXBwb3J0c0xvZ2ljYWxTdXJmYWNlKHRydWUpOwotCi0gICAgICAgIHNldHRpbmdzLnNl
dFN1cHBvcnRlZENvbnN0cmFpbnRzKHN1cHBvcnRlZENvbnN0cmFpbnRzKTsKLQotICAgICAgICBt
X2N1cnJlbnRTZXR0aW5ncyA9IFdURk1vdmUoc2V0dGluZ3MpOwotICAgIH0KLSAgICByZXR1cm4g
bV9jdXJyZW50U2V0dGluZ3MudmFsdWUoKTsKLX0KLQotdm9pZCBEaXNwbGF5Q2FwdHVyZVNvdXJj
ZU1hYzo6c2V0dGluZ3NEaWRDaGFuZ2UoT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5nczo6RmxhZz4gc2V0dGluZ3MpCi17Ci0gICAgaWYgKHNldHRpbmdzLmNvbnRhaW5zKFJlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6RnJhbWVSYXRlKSAmJiBtX3RpbWVyLmlzQWN0
aXZlKCkpCi0gICAgICAgIG1fdGltZXIuc3RhcnRSZXBlYXRpbmcoMV9zIC8gZnJhbWVSYXRlKCkp
OwotCi0gICAgbV9jdXJyZW50U2V0dGluZ3MgPSB7IH07Ci19Ci0KLXZvaWQgRGlzcGxheUNhcHR1
cmVTb3VyY2VNYWM6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCi17Ci0gICAgbV9zdGFydFRpbWUgPSBN
b25vdG9uaWNUaW1lOjpub3coKTsKLSAgICBtX3RpbWVyLnN0YXJ0UmVwZWF0aW5nKDFfcyAvIGZy
YW1lUmF0ZSgpKTsKLQotICAgIGNvbW1pdENvbmZpZ3VyYXRpb24oKTsKLSAgICBpZiAoIW1fY2Fw
dHVyZXItPnN0YXJ0KCkpCi0gICAgICAgIGNhcHR1cmVGYWlsZWQoKTsKLX0KLQotdm9pZCBEaXNw
bGF5Q2FwdHVyZVNvdXJjZU1hYzo6c3RvcFByb2R1Y2luZ0RhdGEoKQotewotICAgIG1fdGltZXIu
c3RvcCgpOwotICAgIG1fZWxhcHNlZFRpbWUgKz0gTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX3N0
YXJ0VGltZTsKLSAgICBtX3N0YXJ0VGltZSA9IE1vbm90b25pY1RpbWU6Om5hbigpOwotCi0gICAg
bV9jYXB0dXJlci0+c3RvcCgpOwotfQotCi1TZWNvbmRzIERpc3BsYXlDYXB0dXJlU291cmNlTWFj
OjplbGFwc2VkVGltZSgpCi17Ci0gICAgaWYgKHN0ZDo6aXNuYW4obV9zdGFydFRpbWUpKQotICAg
ICAgICByZXR1cm4gbV9lbGFwc2VkVGltZTsKLQotICAgIHJldHVybiBtX2VsYXBzZWRUaW1lICsg
KE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV9zdGFydFRpbWUpOwotfQotCi0vLyBXZSBrZWVwIHRo
ZSBhc3BlY3QgcmF0aW8gb2YgdGhlIGludHJpbnNpYyBzaXplIGZvciB0aGUgZnJhbWUgc2l6ZSBh
cyBnZXREaXNwbGF5TWVkaWEgYWxsb3dzIG1heCBjb25zdHJhaW50cyBvbmx5Lgotdm9pZCBEaXNw
bGF5Q2FwdHVyZVNvdXJjZU1hYzo6dXBkYXRlRnJhbWVTaXplKCkKLXsKLSAgICBhdXRvIGludHJp
bnNpY1NpemUgPSB0aGlzLT5pbnRyaW5zaWNTaXplKCk7Ci0KLSAgICBhdXRvIGZyYW1lU2l6ZSA9
IHNpemUoKTsKLSAgICBpZiAoIWZyYW1lU2l6ZS5oZWlnaHQoKSkKLSAgICAgICAgZnJhbWVTaXpl
LnNldEhlaWdodChpbnRyaW5zaWNTaXplLmhlaWdodCgpKTsKLSAgICBpZiAoIWZyYW1lU2l6ZS53
aWR0aCgpKQotICAgICAgICBmcmFtZVNpemUuc2V0V2lkdGgoaW50cmluc2ljU2l6ZS53aWR0aCgp
KTsKLQotICAgIGF1dG8gbWF4SGVpZ2h0ID0gc3RkOjptaW4oZnJhbWVTaXplLmhlaWdodCgpLCBp
bnRyaW5zaWNTaXplLmhlaWdodCgpKTsKLSAgICBhdXRvIG1heFdpZHRoID0gc3RkOjptaW4oZnJh
bWVTaXplLndpZHRoKCksIGludHJpbnNpY1NpemUud2lkdGgoKSk7Ci0KLSAgICBhdXRvIGhlaWdo
dEZvck1heFdpZHRoID0gbWF4V2lkdGggKiBpbnRyaW5zaWNTaXplLmhlaWdodCgpIC8gaW50cmlu
c2ljU2l6ZS53aWR0aCgpOwotICAgIGF1dG8gd2lkdGhGb3JNYXhIZWlnaHQgPSBtYXhIZWlnaHQg
KiBpbnRyaW5zaWNTaXplLndpZHRoKCkgLyBpbnRyaW5zaWNTaXplLmhlaWdodCgpOwotCi0gICAg
aWYgKGhlaWdodEZvck1heFdpZHRoIDw9IG1heEhlaWdodCkgewotICAgICAgICBzZXRTaXplKHsg
bWF4V2lkdGgsIGhlaWdodEZvck1heFdpZHRoIH0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIGlmICh3aWR0aEZvck1heEhlaWdodCA8PSBtYXhXaWR0aCkgewotICAgICAgICBzZXRTaXpl
KHsgd2lkdGhGb3JNYXhIZWlnaHQsIG1heEhlaWdodCB9KTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBzZXRTaXplKGludHJpbnNpY1NpemUpOwotfQotCi12b2lkIERpc3BsYXlDYXB0dXJl
U291cmNlTWFjOjplbWl0RnJhbWUoKQotewotICAgIGlmIChtdXRlZCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBpZiAoIW1faW1hZ2VUcmFuc2ZlclNlc3Npb24pCi0gICAgICAgIG1faW1hZ2VU
cmFuc2ZlclNlc3Npb24gPSBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpjcmVhdGUocHJlZmVyZWRQ
aXhlbEJ1ZmZlckZvcm1hdCgpKTsKLQotICAgIGF1dG8gc2FtcGxlVGltZSA9IE1lZGlhVGltZTo6
Y3JlYXRlV2l0aERvdWJsZSgoZWxhcHNlZFRpbWUoKSArIDEwMF9tcykuc2Vjb25kcygpKTsKLQot
ICAgIGF1dG8gZnJhbWUgPSBtX2NhcHR1cmVyLT5nZW5lcmF0ZUZyYW1lKCk7Ci0gICAgYXV0byBp
bWFnZVNpemUgPSBXVEY6OnN3aXRjaE9uKGZyYW1lLAotICAgICAgICBbXShSZXRhaW5QdHI8SU9T
dXJmYWNlUmVmPiBzdXJmYWNlKSAtPiBJbnRTaXplIHsKLSAgICAgICAgICAgIGlmICghc3VyZmFj
ZSkKLSAgICAgICAgICAgICAgICByZXR1cm4geyB9OwotCi0gICAgICAgICAgICByZXR1cm4gSW50
U2l6ZShJT1N1cmZhY2VHZXRXaWR0aChzdXJmYWNlLmdldCgpKSwgSU9TdXJmYWNlR2V0SGVpZ2h0
KHN1cmZhY2UuZ2V0KCkpKTsKLSAgICAgICAgfSwKLSAgICAgICAgW10oUmVmUHRyPE5hdGl2ZUlt
YWdlPiBpbWFnZSkgLT4gSW50U2l6ZSB7Ci0gICAgICAgICAgICBpZiAoIWltYWdlKQotICAgICAg
ICAgICAgICAgIHJldHVybiB7IH07Ci0KLSAgICAgICAgICAgIHJldHVybiBpbWFnZS0+c2l6ZSgp
OwotICAgICAgICB9Ci0gICAgKTsKLQotICAgIGlmIChpbWFnZVNpemUuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBpZiAoaW50cmluc2ljU2l6ZSgpICE9IGltYWdlU2l6ZSkgewot
ICAgICAgICBzZXRJbnRyaW5zaWNTaXplKGltYWdlU2l6ZSk7Ci0gICAgICAgIHVwZGF0ZUZyYW1l
U2l6ZSgpOwotICAgIH0KLQotICAgIGF1dG8gc2FtcGxlID0gV1RGOjpzd2l0Y2hPbihmcmFtZSwK
LSAgICAgICAgW3RoaXMsIHNhbXBsZVRpbWVdKFJldGFpblB0cjxJT1N1cmZhY2VSZWY+IHN1cmZh
Y2UpIC0+IFJlZlB0cjxNZWRpYVNhbXBsZT4gewotICAgICAgICAgICAgaWYgKCFzdXJmYWNlKQot
ICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgICAgICAgICByZXR1cm4gbV9p
bWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3JlYXRlTWVkaWFTYW1wbGUoc3VyZmFjZS5nZXQoKSwgc2Ft
cGxlVGltZSwgc2l6ZSgpKTsKLSAgICAgICAgfSwKLSAgICAgICAgW3RoaXMsIHNhbXBsZVRpbWVd
KFJlZlB0cjxOYXRpdmVJbWFnZT4gaW1hZ2UpIC0+IFJlZlB0cjxNZWRpYVNhbXBsZT4gewotICAg
ICAgICAgICAgaWYgKCFpbWFnZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQot
ICAgICAgICAgICAgcmV0dXJuIG1faW1hZ2VUcmFuc2ZlclNlc3Npb24tPmNyZWF0ZU1lZGlhU2Ft
cGxlKGltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIHNhbXBsZVRpbWUsIHNpemUoKSk7Ci0g
ICAgICAgIH0KLSAgICApOwotCi0gICAgaWYgKCFzYW1wbGUpIHsKLSAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB2aWRlb1NhbXBsZUF2
YWlsYWJsZSgqc2FtcGxlLmdldCgpKTsKLX0KLQotdm9pZCBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1h
Yzo6Q2FwdHVyZXI6OnNldExvZ2dlcihjb25zdCBMb2dnZXImIG5ld0xvZ2dlciwgY29uc3Qgdm9p
ZCogbmV3TG9nSWRlbnRpZmllcikKLXsKLSAgICBtX2xvZ2dlciA9ICZuZXdMb2dnZXI7Ci0gICAg
bV9sb2dJZGVudGlmaWVyID0gbmV3TG9nSWRlbnRpZmllcjsKLX0KLQotV1RGTG9nQ2hhbm5lbCYg
RGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OkNhcHR1cmVyOjpsb2dDaGFubmVsKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gTG9nV2ViUlRDOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVT
b3VyY2VNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNw
bGF5Q2FwdHVyZVNvdXJjZU1hYy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOTNl
NzgzOGI5YzQ3NzM5MmZiNzM4YTE0YjhkNTE0YTc4NmVhMTBjLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5oCisrKyAvZGV2L251bGwKQEAgLTEs
MTE5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZP
Uk0oTUFDKQotCi0jaW5jbHVkZSAiQ2FwdHVyZURldmljZS5oIgotI2luY2x1ZGUgIkltYWdlVHJh
bnNmZXJTZXNzaW9uVlQuaCIKLSNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlLmgiCi0jaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVk
ZSA8d3RmL1J1bkxvb3AuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0jaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLXR5cGVkZWYgc3RydWN0IENHSW1hZ2UgKkNHSW1hZ2VS
ZWY7Ci10eXBlZGVmIHN0cnVjdCBfX0NWQnVmZmVyICpDVlBpeGVsQnVmZmVyUmVmOwotdHlwZWRl
ZiBzdHJ1Y3QgX19JT1N1cmZhY2UgKklPU3VyZmFjZVJlZjsKLQotbmFtZXNwYWNlIFdURiB7Ci1j
bGFzcyBNZWRpYVRpbWU7Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQ2FwdHVy
ZURldmljZUluZm87Ci1jbGFzcyBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOwotY2xhc3MgUGl4ZWxC
dWZmZXJDb25mb3JtZXJDVjsKLQotY2xhc3MgRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMgZmluYWwg
OiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZSB7Ci1wdWJsaWM6Ci0gICAgdXNpbmcgRGlzcGxh
eUZyYW1lVHlwZSA9IHN0ZDo6dmFyaWFudDxSZWZQdHI8TmF0aXZlSW1hZ2U+LCBSZXRhaW5QdHI8
SU9TdXJmYWNlUmVmPj47Ci0KLSAgICBjbGFzcyBDYXB0dXJlciA6IHB1YmxpYyBMb2dnZXJIZWxw
ZXIgewotICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICBwdWJsaWM6Ci0gICAg
ICAgIHZpcnR1YWwgfkNhcHR1cmVyKCkgPSBkZWZhdWx0OwotCi0gICAgICAgIHZpcnR1YWwgYm9v
bCBzdGFydCgpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHN0b3AoKSA9IDA7Ci0gICAgICAg
IHZpcnR1YWwgRGlzcGxheUZyYW1lVHlwZSBnZW5lcmF0ZUZyYW1lKCkgPSAwOwotICAgICAgICB2
aXJ0dWFsIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgZGV2aWNlVHlwZSgpIGNvbnN0ID0gMDsK
LSAgICAgICAgdmlydHVhbCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkRpc3BsYXlTdXJm
YWNlVHlwZSBzdXJmYWNlVHlwZSgpIGNvbnN0ID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGNv
bW1pdENvbmZpZ3VyYXRpb24oY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJikgPSAw
OwotICAgICAgICB2aXJ0dWFsIEludFNpemUgaW50cmluc2ljU2l6ZSgpIGNvbnN0ID0gMDsKLQot
ICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0TG9nZ2VyKGNvbnN0IExvZ2dlciYsIGNvbnN0IHZvaWQq
KTsKLSAgICAgICAgY29uc3QgTG9nZ2VyKiBsb2dnZXJQdHIoKSBjb25zdCB7IHJldHVybiBtX2xv
Z2dlci5nZXQoKTsgfQotICAgICAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFs
IHsgQVNTRVJUKG1fbG9nZ2VyKTsgcmV0dXJuICptX2xvZ2dlci5nZXQoKTsgfQotICAgICAgICBj
b25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dJZGVu
dGlmaWVyOyB9Ci0gICAgICAgIFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSBjb25zdCBmaW5h
bDsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZlB0cjxjb25zdCBMb2dnZXI+IG1fbG9nZ2Vy
OwotICAgICAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7Ci0gICAgfTsKLQotICAgIHN0
YXRpYyBDYXB0dXJlU291cmNlT3JFcnJvciBjcmVhdGUoY29uc3QgQ2FwdHVyZURldmljZSYsIGNv
bnN0IE1lZGlhQ29uc3RyYWludHMqKTsKLSAgICBzdGF0aWMgQ2FwdHVyZVNvdXJjZU9yRXJyb3Ig
Y3JlYXRlKEV4cGVjdGVkPFVuaXF1ZVJlZjxDYXB0dXJlcj4sIFN0cmluZz4mJiwgY29uc3QgQ2Fw
dHVyZURldmljZSYsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqKTsKLQotICAgIFNlY29uZHMgZWxh
cHNlZFRpbWUoKTsKLSAgICB2b2lkIHVwZGF0ZUZyYW1lU2l6ZSgpOwotCi1wcml2YXRlOgotICAg
IERpc3BsYXlDYXB0dXJlU291cmNlTWFjKFVuaXF1ZVJlZjxDYXB0dXJlcj4mJiwgU3RyaW5nJiYg
bmFtZSk7Ci0gICAgfkRpc3BsYXlDYXB0dXJlU291cmNlTWFjKCk7Ci0KLSAgICB2b2lkIHN0YXJ0
UHJvZHVjaW5nRGF0YSgpIGZpbmFsOwotICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSBmaW5h
bDsKLSAgICB2b2lkIHNldHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNldDxSZWFsdGltZU1lZGlhU291
cmNlU2V0dGluZ3M6OkZsYWc+KSBmaW5hbDsKLSAgICBib29sIGlzQ2FwdHVyZVNvdXJjZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNl
Q2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBmaW5hbDsKLSAgICBjb25zdCBSZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgZmluYWw7Ci0gICAgQ2FwdHVyZURldmljZTo6
RGV2aWNlVHlwZSBkZXZpY2VUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9jYXB0dXJlci0+ZGV2aWNl
VHlwZSgpOyB9Ci0gICAgdm9pZCBjb21taXRDb25maWd1cmF0aW9uKCkgZmluYWwgeyBtX2NhcHR1
cmVyLT5jb21taXRDb25maWd1cmF0aW9uKHNldHRpbmdzKCkpOyB9Ci0KLSAgICBjb25zdCBjaGFy
KiBsb2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiRGlzcGxheUNhcHR1cmVTb3Vy
Y2VNYWMiOyB9Ci0KLSAgICB2b2lkIGVtaXRGcmFtZSgpOwotCi0gICAgVW5pcXVlUmVmPENhcHR1
cmVyPiBtX2NhcHR1cmVyOwotICAgIHN0ZDo6b3B0aW9uYWw8UmVhbHRpbWVNZWRpYVNvdXJjZUNh
cGFiaWxpdGllcz4gbV9jYXBhYmlsaXRpZXM7Ci0gICAgc3RkOjpvcHRpb25hbDxSZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3M+IG1fY3VycmVudFNldHRpbmdzOwotICAgIFJlYWx0aW1lTWVkaWFT
b3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyBtX3N1cHBvcnRlZENvbnN0cmFpbnRzOwotCi0gICAg
TW9ub3RvbmljVGltZSBtX3N0YXJ0VGltZSB7IE1vbm90b25pY1RpbWU6Om5hbigpIH07Ci0gICAg
U2Vjb25kcyBtX2VsYXBzZWRUaW1lIHsgMF9zIH07Ci0KLSAgICBSdW5Mb29wOjpUaW1lcjxEaXNw
bGF5Q2FwdHVyZVNvdXJjZU1hYz4gbV90aW1lcjsKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZVRyYW5zZmVyU2Vzc2lvblZUPiBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExB
VEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3Bw
CmluZGV4IGNlNDkwOTEwM2U2Y2NjOGNhMjQ0YWU3YmY1ODljOTUzMjU0MTlhOTkuLmE0MThhNjA1
MDJiN2NmYTdmMzczNDlmMTExOWM3YTFlMjY0NWIxYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFj
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJB
VlZpZGVvQ2FwdHVyZVNvdXJjZS5oIgogI2luY2x1ZGUgIkNvcmVBdWRpb0NhcHR1cmVTb3VyY2Uu
aCIKICNpbmNsdWRlICJEaXNwbGF5Q2FwdHVyZU1hbmFnZXJDb2NvYS5oIgotI2luY2x1ZGUgIkRp
c3BsYXlDYXB0dXJlU291cmNlTWFjLmgiCisjaW5jbHVkZSAiRGlzcGxheUNhcHR1cmVTb3VyY2VD
b2NvYS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVByaXZh
dGUuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAtNTksMTUgKzU5LDcgQEAgY2xh
c3MgRGlzcGxheUNhcHR1cmVTb3VyY2VGYWN0b3J5TWFjIGZpbmFsIDogcHVibGljIERpc3BsYXlD
YXB0dXJlRmFjdG9yeSB7CiBwdWJsaWM6CiAgICAgQ2FwdHVyZVNvdXJjZU9yRXJyb3IgY3JlYXRl
RGlzcGxheUNhcHR1cmVTb3VyY2UoY29uc3QgQ2FwdHVyZURldmljZSYgZGV2aWNlLCBjb25zdCBN
ZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cykgZmluYWwKICAgICB7Ci0jaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKLSAgICAgICAgVU5VU0VEX1BBUkFNKGRldmljZSk7Ci0gICAgICAgIFVOVVNF
RF9QQVJBTShjb25zdHJhaW50cyk7Ci0jZW5kaWYKLSNpZiBQTEFURk9STShNQUMpCi0gICAgICAg
IHJldHVybiBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6Y3JlYXRlKGRldmljZSwgY29uc3RyYWlu
dHMpOwotI2Vsc2UKLSAgICAgICAgcmV0dXJuIHsgfTsKLSNlbmRpZgorICAgICAgICByZXR1cm4g
RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Y3JlYXRlKGRldmljZSwgY29uc3RyYWludHMpOwog
ICAgIH0KIHByaXZhdGU6CiAgICAgQ2FwdHVyZURldmljZU1hbmFnZXImIGRpc3BsYXlDYXB0dXJl
RGV2aWNlTWFuYWdlcigpIHsgcmV0dXJuIERpc3BsYXlDYXB0dXJlTWFuYWdlckNvY29hOjpzaW5n
bGV0b24oKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAppbmRleCAzMWQ5MjE0ODgwZGYz
NDI4OWZmYTllNmFiNmNkYWYxYzMwMGExZGY0Li4xNjY4NGExM2Q0NmRlZGE3YTIzMTliOGU1M2M4
YTAxMTNiMDhhNTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01v
Y2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcApAQCAtNDMsNyArNDMs
NyBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAiQ29yZUF1ZGlvQ2FwdHVyZVNv
dXJjZS5oIgotI2luY2x1ZGUgIkRpc3BsYXlDYXB0dXJlU291cmNlTWFjLmgiCisjaW5jbHVkZSAi
RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oIgogI2luY2x1ZGUgIk1vY2tSZWFsdGltZVZpZGVv
U291cmNlTWFjLmgiCiAjZW5kaWYKIApAQCAtMTE1LDE0ICsxMTUsMTQgQEAgcHJpdmF0ZToKIH07
CiAKICNpZiBQTEFURk9STShNQUMpCi1jbGFzcyBNb2NrRGlzcGxheUNhcHR1cmVyIGZpbmFsIDog
cHVibGljIERpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpDYXB0dXJlciB7CitjbGFzcyBNb2NrRGlz
cGxheUNhcHR1cmVyIGZpbmFsIDogcHVibGljIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OkNh
cHR1cmVyIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBNb2NrRGlzcGxheUNhcHR1cmVyKGNvbnN0
IENhcHR1cmVEZXZpY2UmKTsKIAogcHJpdmF0ZToKICAgICBib29sIHN0YXJ0KCkgZmluYWw7CiAg
ICAgdm9pZCBzdG9wKCkgZmluYWwgIHsgbV9zb3VyY2UtPnN0b3AoKTsgfQotICAgIERpc3BsYXlD
YXB0dXJlU291cmNlTWFjOjpEaXNwbGF5RnJhbWVUeXBlIGdlbmVyYXRlRnJhbWUoKSBmaW5hbDsK
KyAgICBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpEaXNwbGF5RnJhbWVUeXBlIGdlbmVyYXRl
RnJhbWUoKSBmaW5hbDsKICAgICBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkRpc3BsYXlT
dXJmYWNlVHlwZSBzdXJmYWNlVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5nczo6RGlzcGxheVN1cmZhY2VUeXBlOjpNb25pdG9yOyB9CiAgICAgdm9p
ZCBjb21taXRDb25maWd1cmF0aW9uKGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYp
IGZpbmFsOwogICAgIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgZGV2aWNlVHlwZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNjcmVlbjsgfQpAQCAt
MTUyLDcgKzE1Miw3IEBAIHZvaWQgTW9ja0Rpc3BsYXlDYXB0dXJlcjo6Y29tbWl0Q29uZmlndXJh
dGlvbihjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmCiAgICAgbV9zZXR0aW5ncyA9
IHNldHRpbmdzOwogfQogCi1EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6RGlzcGxheUZyYW1lVHlw
ZSBNb2NrRGlzcGxheUNhcHR1cmVyOjpnZW5lcmF0ZUZyYW1lKCkKK0Rpc3BsYXlDYXB0dXJlU291
cmNlQ29jb2E6OkRpc3BsYXlGcmFtZVR5cGUgTW9ja0Rpc3BsYXlDYXB0dXJlcjo6Z2VuZXJhdGVG
cmFtZSgpCiB7CiAgICAgaWYgKGF1dG8qIGltYWdlQnVmZmVyID0gbV9zb3VyY2UtPmltYWdlQnVm
ZmVyKCkpCiAgICAgICAgIHJldHVybiBpbWFnZUJ1ZmZlci0+Y29weU5hdGl2ZUltYWdlKCk7CkBA
IC0xODYsNyArMTg2LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIENhcHR1cmVEZXZpY2U6OkRl
dmljZVR5cGU6OlNjcmVlbjoKICAgICAgICAgY2FzZSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBl
OjpXaW5kb3c6CiAjaWYgUExBVEZPUk0oTUFDKQotICAgICAgICAgICAgcmV0dXJuIERpc3BsYXlD
YXB0dXJlU291cmNlTWFjOjpjcmVhdGUoVW5pcXVlUmVmPERpc3BsYXlDYXB0dXJlU291cmNlTWFj
OjpDYXB0dXJlcj4obWFrZVVuaXF1ZVJlZjxNb2NrRGlzcGxheUNhcHR1cmVyPihkZXZpY2UpKSwg
ZGV2aWNlLCBjb25zdHJhaW50cyk7CisgICAgICAgICAgICByZXR1cm4gRGlzcGxheUNhcHR1cmVT
b3VyY2VDb2NvYTo6Y3JlYXRlKFVuaXF1ZVJlZjxEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpD
YXB0dXJlcj4obWFrZVVuaXF1ZVJlZjxNb2NrRGlzcGxheUNhcHR1cmVyPihkZXZpY2UpKSwgZGV2
aWNlLCBjb25zdHJhaW50cyk7CiAjZWxpZiBVU0UoR1NUUkVBTUVSKQogICAgICAgICAgICAgcmV0
dXJuIE1vY2tEaXNwbGF5Q2FwdHVyZVNvdXJjZUdTdHJlYW1lcjo6Y3JlYXRlKGRldmljZSwgY29u
c3RyYWludHMpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbQppbmRleCAxZDc2YTg4MDZkMDE5OWJl
ODExN2U1ODc5NzIwOTRmMzE4NWQyYWRlLi4wYmMxN2ZmZmZhN2E0OGVjN2FiYTQ5MGNmM2FmMjNi
MmI1ZjZiOGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9NZWRp
YVBlcm1pc3Npb25VdGlsaXRpZXMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLm1tCkBAIC0xNDEsNiArMTQxLDggQEAgc3RhdGlj
IE5TU3RyaW5nICphbGVydE1lc3NhZ2VUZXh0KE1lZGlhUGVybWlzc2lvblJlYXNvbiByZWFzb24s
IGNvbnN0IFdlYkNvcmU6OlMKICAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9y
bWF0OldFQl9VSV9OU1NUUklORyhAIkFsbG93IOKAnCVA4oCdIHRvIHVzZSB5b3VyIGNhbWVyYSBh
bmQgbWljcm9waG9uZT8iLCBAIk1lc3NhZ2UgZm9yIHVzZXIgbWVkaWEgcHJvbXB0IiksIHZpc2li
bGVPcmlnaW5dOwogICAgIGNhc2UgTWVkaWFQZXJtaXNzaW9uUmVhc29uOjpNaWNyb3Bob25lOgog
ICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6V0VCX1VJX05TU1RSSU5H
KEAiQWxsb3cg4oCcJUDigJ0gdG8gdXNlIHlvdXIgbWljcm9waG9uZT8iLCBAIk1lc3NhZ2UgZm9y
IHVzZXIgbWljcm9waG9uZSBhY2Nlc3MgcHJvbXB0IiksIHZpc2libGVPcmlnaW5dOworICAgIGNh
c2UgTWVkaWFQZXJtaXNzaW9uUmVhc29uOjpTY3JlZW5DYXB0dXJlOgorICAgICAgICByZXR1cm4g
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6V0VCX1VJX05TU1RSSU5HKEAiQWxsb3cg4oCcJUDi
gJ0gdG8gb2JzZXJ2ZSB5b3VyIHNjcmVlbj8iLCBAIk1lc3NhZ2UgZm9yIHNjcmVlbiBzaGFyaW5n
IHByb21wdCIpLCB2aXNpYmxlT3JpZ2luXTsKICAgICBjYXNlIE1lZGlhUGVybWlzc2lvblJlYXNv
bjo6RGV2aWNlT3JpZW50YXRpb246CiAgICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpXRUJfVUlfTlNTVFJJTkcoQCLigJwlQOKAnSBXb3VsZCBMaWtlIHRvIEFjY2VzcyBN
b3Rpb24gYW5kIE9yaWVudGF0aW9uIiwgQCJNZXNzYWdlIGZvciByZXF1ZXN0aW5nIGFjY2VzcyB0
byB0aGUgZGV2aWNlIG1vdGlvbiBhbmQgb3JpZW50YXRpb24iKSwgdmlzaWJsZU9yaWdpbl07CiAg
ICAgY2FzZSBNZWRpYVBlcm1pc3Npb25SZWFzb246Okdlb2xvY2F0aW9uOgpAQCAtMTU3LDYgKzE1
OSw4IEBAIHN0YXRpYyBOU1N0cmluZyAqYWxsb3dCdXR0b25UZXh0KE1lZGlhUGVybWlzc2lvblJl
YXNvbiByZWFzb24pCiAgICAgY2FzZSBNZWRpYVBlcm1pc3Npb25SZWFzb246OkNhbWVyYUFuZE1p
Y3JvcGhvbmU6CiAgICAgY2FzZSBNZWRpYVBlcm1pc3Npb25SZWFzb246Ok1pY3JvcGhvbmU6CiAg
ICAgICAgIHJldHVybiBXRUJfVUlfU1RSSU5HX0tFWShAIkFsbG93IiwgIkFsbG93ICh1c2VybWVk
aWEpIiwgQCJBbGxvdyBidXR0b24gdGl0bGUgaW4gdXNlciBtZWRpYSBwcm9tcHQiKTsKKyAgICBj
YXNlIE1lZGlhUGVybWlzc2lvblJlYXNvbjo6U2NyZWVuQ2FwdHVyZToKKyAgICAgICAgcmV0dXJu
IFdFQl9VSV9TVFJJTkdfS0VZKEAiQWxsb3ciLCAiQWxsb3cgKHNjcmVlbnNoYXJpbmcpIiwgQCJB
bGxvdyBidXR0b24gdGl0bGUgaW4gc2NyZWVuIHNoYXJpbmcgcHJvbXB0Iik7CiAgICAgY2FzZSBN
ZWRpYVBlcm1pc3Npb25SZWFzb246OkRldmljZU9yaWVudGF0aW9uOgogICAgICAgICByZXR1cm4g
V0VCX1VJX1NUUklOR19LRVkoQCJBbGxvdyIsICJBbGxvdyAoZGV2aWNlIG1vdGlvbiBhbmQgb3Jp
ZW50YXRpb24gYWNjZXNzKSIsIEAiQnV0dG9uIHRpdGxlIGluIERldmljZSBPcmllbnRhdGlvbiBQ
ZXJtaXNzaW9uIEFQSSBwcm9tcHQiKTsKICAgICBjYXNlIE1lZGlhUGVybWlzc2lvblJlYXNvbjo6
R2VvbG9jYXRpb246CkBAIC0xNzMsNiArMTc3LDggQEAgc3RhdGljIE5TU3RyaW5nICpkb05vdEFs
bG93QnV0dG9uVGV4dChNZWRpYVBlcm1pc3Npb25SZWFzb24gcmVhc29uKQogICAgIGNhc2UgTWVk
aWFQZXJtaXNzaW9uUmVhc29uOjpDYW1lcmFBbmRNaWNyb3Bob25lOgogICAgIGNhc2UgTWVkaWFQ
ZXJtaXNzaW9uUmVhc29uOjpNaWNyb3Bob25lOgogICAgICAgICByZXR1cm4gV0VCX1VJX1NUUklO
R19LRVkoQCJEb27igJl0IEFsbG93IiwgIkRvbuKAmXQgQWxsb3cgKHVzZXJtZWRpYSkiLCBAIkRp
c2FsbG93IGJ1dHRvbiB0aXRsZSBpbiB1c2VyIG1lZGlhIHByb21wdCIpOworICAgIGNhc2UgTWVk
aWFQZXJtaXNzaW9uUmVhc29uOjpTY3JlZW5DYXB0dXJlOgorICAgICAgICByZXR1cm4gV0VCX1VJ
X1NUUklOR19LRVkoQCJEb27igJl0IEFsbG93IiwgIkRvbuKAmXQgQWxsb3cgKHNjcmVlbnNoYXJp
bmcpIiwgQCJEaXNhbGxvdyBidXR0b24gdGl0bGUgaW4gc2NyZWVuIHNoYXJpbmcgcHJvbXB0Iik7
CiAgICAgY2FzZSBNZWRpYVBlcm1pc3Npb25SZWFzb246OkRldmljZU9yaWVudGF0aW9uOgogICAg
ICAgICByZXR1cm4gV0VCX1VJX1NUUklOR19LRVkoQCJDYW5jZWwiLCAiQ2FuY2VsIChkZXZpY2Ug
bW90aW9uIGFuZCBvcmllbnRhdGlvbiBhY2Nlc3MpIiwgQCJCdXR0b24gdGl0bGUgaW4gRGV2aWNl
IE9yaWVudGF0aW9uIFBlcm1pc3Npb24gQVBJIHByb21wdCIpOwogICAgIGNhc2UgTWVkaWFQZXJt
aXNzaW9uUmVhc29uOjpHZW9sb2NhdGlvbjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9VSURlbGVnYXRlLm1tCmluZGV4IGQ3OGY0Y2MwZDU2NTU5NGMwZTg4MWE0NThiZmQyMzgyNzUx
MjI0NWEuLjlhZjRhN2E5NGZhOTczMjA0YzE1ZDU2MGRiZjZiN2QzNDI0MjhhMzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQpAQCAtMTExNyw2ICsxMTE3
LDExIEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvclVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0KFdlYlBhZ2VQcm94CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
KyAgICBpZiAocmVxdWVzdC5yZXF1aXJlc0Rpc3BsYXlDYXB0dXJlKCkgJiYgcmVxdWVzdC5jYW5Q
cm9tcHRGb3JHZXREaXNwbGF5TWVkaWEoKSkgeworICAgICAgICByZXF1ZXN0LnByb21wdEZvckdl
dERpc3BsYXlNZWRpYSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgLy8gRklYTUU6
IFByb3ZpZGUgYSBzcGVjaWZpYyBkZWxlZ2F0ZSBmb3IgZGlzcGxheSBjYXB0dXJlLgogICAgIGlm
ICghcmVxdWVzdC5yZXF1aXJlc0Rpc3BsYXlDYXB0dXJlKCkgJiYgcmVzcG9uZHNUb1JlcXVlc3RN
ZWRpYUNhcHR1cmVQZXJtaXNzaW9uKSB7CiAgICAgICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRp
b25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZSwgQHNlbGVjdG9yKHdlYlZpZXc6
cmVxdWVzdE1lZGlhQ2FwdHVyZVBlcm1pc3Npb25Gb3JPcmlnaW46aW5pdGlhdGVkQnlGcmFtZTp0
eXBlOmRlY2lzaW9uSGFuZGxlcjopKTsKQEAgLTExMjcsNyArMTEzMiw3IEBAIHZvaWQgVUlEZWxl
Z2F0ZTo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
KFdlYlBhZ2VQcm94CiAKICAgICAgICAgICAgIHN3aXRjaCAoZGVjaXNpb24pIHsKICAgICAgICAg
ICAgIGNhc2UgV0tQZXJtaXNzaW9uRGVjaXNpb25Qcm9tcHQ6Ci0gICAgICAgICAgICAgICAgcHJv
dGVjdGVkUmVxdWVzdC0+cHJvbXB0KCk7CisgICAgICAgICAgICAgICAgcHJvdGVjdGVkUmVxdWVz
dC0+cHJvbXB0Rm9yR2V0VXNlck1lZGlhKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBjYXNlIFdLUGVybWlzc2lvbkRlY2lzaW9uR3JhbnQ6IHsKICAgICAgICAgICAgICAg
ICBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlVUlEID0gcHJvdGVjdGVkUmVxdWVzdC0+cmVxdWly
ZXNWaWRlb0NhcHR1cmUoKSA/IHByb3RlY3RlZFJlcXVlc3QtPnZpZGVvRGV2aWNlVUlEcygpLmZp
cnN0KCkgOiBTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL01l
ZGlhUGVybWlzc2lvblV0aWxpdGllcy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWFQ
ZXJtaXNzaW9uVXRpbGl0aWVzLmgKaW5kZXggNDFlYTQxZGZkNDc0NmFmY2I3ZmIzMjc0NWQ4M2Zk
N2VmODQyZWMwMy4uMTc1YzI1YzA0NDkzMmZhNWI2YWE2NTcxMjk5MzM5YTEyYTE2MTE5ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVz
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVz
LmgKQEAgLTU0LDcgKzU0LDggQEAgZW51bSBjbGFzcyBNZWRpYVBlcm1pc3Npb25SZWFzb24gewog
ICAgIE1pY3JvcGhvbmUsCiAgICAgRGV2aWNlT3JpZW50YXRpb24sCiAgICAgR2VvbG9jYXRpb24s
Ci0gICAgU3BlZWNoUmVjb2duaXRpb24KKyAgICBTcGVlY2hSZWNvZ25pdGlvbiwKKyAgICBTY3Jl
ZW5DYXB0dXJlCiB9OwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuY3Bw
CmluZGV4IDJjZmNhZTc0ODVkNTlmZDFjYWU5MzRhZTQ1ODYwN2VkMDdmNzM0ODMuLjc1YmJkYzFk
MDIxYWU2NTk2MTIwZmY1NjY0NWQ3ZmViYjg0ZDhmMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuY3Bw
CkBAIC0xNDAsMTcgKzE0MCwyOSBAQCBTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmco
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhQWNjZQogICAgIHJldHVy
biB2YWx1ZXNbc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKV07CiB9CiAKLXZv
aWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6cHJvbXB0KCkKK3ZvaWQgVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6cHJvbXB0Rm9yR2V0RGlzcGxheU1lZGlhKCkKIHsK
ICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShDT0NPQSkKLSAgICBBU1NFUlQo
bV9tYW5hZ2VyKTsKLSAgICBpZiAoIW1fbWFuYWdlcikgeworICAgIEFTU0VSVChtX21hbmFnZXIg
JiYgY2FuUHJvbXB0Rm9yR2V0RGlzcGxheU1lZGlhKCkpOworICAgIGlmICghbV9tYW5hZ2VyIHx8
ICFjYW5Qcm9tcHRGb3JHZXREaXNwbGF5TWVkaWEoKSkgewogICAgICAgICBkZW55KFVzZXJNZWRp
YUFjY2Vzc0RlbmlhbFJlYXNvbjo6UGVybWlzc2lvbkRlbmllZCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBpZiAocmVxdWlyZXNEaXNwbGF5Q2FwdHVyZSgpKSB7Ci0gICAgICAgIC8v
IEZJWE1FOiBJbXBsZW1lbnQgZ2V0RGlzcGxheU1lZGlhIHByb21wdCwgZm9yIG5vdyBkZW55Lgor
ICAgIGFsZXJ0Rm9yUGVybWlzc2lvbihtX21hbmFnZXItPnBhZ2UoKSwgTWVkaWFQZXJtaXNzaW9u
UmVhc29uOjpTY3JlZW5DYXB0dXJlLCB0b3BMZXZlbERvY3VtZW50U2VjdXJpdHlPcmlnaW4oKS5k
YXRhKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oYm9vbCBncmFudGVk
KSB7CisgICAgICAgIGlmICghZ3JhbnRlZCkKKyAgICAgICAgICAgIGRlbnkoVXNlck1lZGlhQWNj
ZXNzRGVuaWFsUmVhc29uOjpQZXJtaXNzaW9uRGVuaWVkKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgYWxsb3coKTsKKyAgICB9KTsKKyNlbmRpZgorfQorCit2b2lkIFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0UHJveHk6OnByb21wdEZvckdldFVzZXJNZWRpYSgpCit7CisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oQ09DT0EpCisgICAgQVNTRVJUKG1fbWFuYWdlcik7
CisgICAgaWYgKCFtX21hbmFnZXIpIHsKICAgICAgICAgZGVueShVc2VyTWVkaWFBY2Nlc3NEZW5p
YWxSZWFzb246OlBlcm1pc3Npb25EZW5pZWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
MTU4LDE1ICsxNzAsNDAgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5Ojpw
cm9tcHQoKQogICAgIE1lZGlhUGVybWlzc2lvblJlYXNvbiByZWFzb24gPSBNZWRpYVBlcm1pc3Np
b25SZWFzb246OkNhbWVyYTsKICAgICBpZiAocmVxdWlyZXNBdWRpb0NhcHR1cmUoKSkKICAgICAg
ICAgcmVhc29uID0gcmVxdWlyZXNWaWRlb0NhcHR1cmUoKSA/IE1lZGlhUGVybWlzc2lvblJlYXNv
bjo6Q2FtZXJhQW5kTWljcm9waG9uZSA6IE1lZGlhUGVybWlzc2lvblJlYXNvbjo6TWljcm9waG9u
ZTsKKwogICAgIGFsZXJ0Rm9yUGVybWlzc2lvbihtX21hbmFnZXItPnBhZ2UoKSwgcmVhc29uLCB0
b3BMZXZlbERvY3VtZW50U2VjdXJpdHlPcmlnaW4oKS5kYXRhKCksIFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gUmVmIHsgKnRoaXMgfV0oYm9vbCBncmFudGVkKSB7CiAgICAgICAgIGlmICghZ3JhbnRl
ZCkKICAgICAgICAgICAgIGRlbnkoVXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uOjpQZXJtaXNz
aW9uRGVuaWVkKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgYWxsb3coKTsKICAgICB9KTsK
KyNlbmRpZgorfQorCit2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OmRvRGVm
YXVsdEFjdGlvbigpCit7CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oQ09D
T0EpCisgICAgaWYgKHJlcXVpcmVzRGlzcGxheUNhcHR1cmUoKSkgeworICAgICAgICBpZiAoIWNh
blByb21wdEZvckdldERpc3BsYXlNZWRpYSgpKSB7CisgICAgICAgICAgICBkZW55KFVzZXJNZWRp
YUFjY2Vzc0RlbmlhbFJlYXNvbjo6UGVybWlzc2lvbkRlbmllZCk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICBwcm9tcHRGb3JHZXREaXNwbGF5TWVkaWEoKTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgcHJvbXB0Rm9yR2V0VXNlck1lZGlhKCk7CiAjZWxzZQogICAgIGRl
bnkoKTsKICNlbmRpZgogfQogCitib29sIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6
OmNhblByb21wdEZvckdldERpc3BsYXlNZWRpYSgpCit7CisjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkgJiYgUExBVEZPUk0oSU9TKQorICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgICByZXR1cm4g
ZmFsc2U7CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5
LmgKaW5kZXggMjRjZWUzOGY5YmMxZDhhMmE2YWU3NGQyNGFhYzQ2ZmNiODFmNWMxZS4uZGY0MTJh
YjY1ZWMzN2RkNDczMGVhZmM3Y2I0ZTNkNTUxNjM0OWRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuaApA
QCAtNDUsOCArNDUsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBhbGxvdyhjb25zdCBTdHJpbmcm
IGF1ZGlvRGV2aWNlVUlELCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlVUlEKTsKICAgICB2b2lk
IGFsbG93KCk7Ci0gICAgdm9pZCBwcm9tcHQoKTsKLSAgICB2b2lkIGRvRGVmYXVsdEFjdGlvbigp
IHsgcHJvbXB0KCk7IH0KKyAgICB2b2lkIHByb21wdEZvckdldFVzZXJNZWRpYSgpOworICAgIHZv
aWQgcHJvbXB0Rm9yR2V0RGlzcGxheU1lZGlhKCk7CisgICAgYm9vbCBjYW5Qcm9tcHRGb3JHZXRE
aXNwbGF5TWVkaWEoKTsKKyAgICB2b2lkIGRvRGVmYXVsdEFjdGlvbigpOwogICAgIGVudW0gY2xh
c3MgVXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uIHsgTm9Db25zdHJhaW50cywgVXNlck1lZGlh
RGlzYWJsZWQsIE5vQ2FwdHVyZURldmljZXMsIEludmFsaWRDb25zdHJhaW50LCBIYXJkd2FyZUVy
cm9yLCBQZXJtaXNzaW9uRGVuaWVkLCBPdGhlckZhaWx1cmUgfTsKICAgICB2b2lkIGRlbnkoVXNl
ck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uID0gVXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uOjpV
c2VyTWVkaWFEaXNhYmxlZCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441379</attachid>
            <date>2021-10-15 08:21:06 -0700</date>
            <delta_ts>2021-10-15 15:49:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231455-20211015082106.patch</filename>
            <type>text/plain</type>
            <size>103713</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2M2MWNjNWYyZjlmMWJl
MDFlMWQxYWQyNjAxNjA4MTVlMTAwMGZjOS4uMDU5NjFkMGJhMWY0MDQzOTkyMDE1ZTk4MmEzYmFj
ZGZjZTRjZjFjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAyMS0xMC0xMyAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBTdXBw
b3J0IGdldERpc3BsYXlNZWRpYQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMxNDU1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NDA0NDQ5NT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQg
c2NyZWVuIGNhcHR1cmUgZm9yIGlPUyB1c2luZyBSZXBsYXlLaXQuIFJlcGxheUtpdCBvbmx5IGNh
cHR1cmVzIHdoZW4gdGhlIAorICAgICAgICBob3N0IGFwcGxpY2F0aW9uIGlzIGluIHRoZSBmb3Jl
Z3JvdW5kLCBzbyB0aGUgTWVkaWFTdHJlYW0gdHJhY2sgaXMgbXV0ZWQgd2hlbiB0aGUKKyAgICAg
ICAgYXBwIGlzIGJhY2tncm91bmRlZC4KKworICAgICAgICBnZXREaXNwbGF5TWVkaWEgYXZhaWxh
YmlsaXR5IHRvIEphdmFTY3JpcHQgaXMgY29udHJvbGxlZCBieSB0aGUgYFNjcmVlbkNhcHR1cmVF
bmFibGVkYAorICAgICAgICBzZXR0aW5nLCB3aGljaCBpcyBkaXNhYmxlZCBieSBkZWZhdWx0IG9u
IGlPUy4KKworICAgICAgICBJIGhhdmVuJ3QgZmlndXJlZCBvdXQgaG93IHRvIHRlc3QgdGhpcyBh
dXRvbWF0aWNhbGx5IHlldCBiZWNhdXNlIFJlcGxheUtpdCBhbHdheXMKKyAgICAgICAgc2hvd3Mg
aXRzIG93biBtb2RhbCB1c2VyIHByb21wdCBiZWZvcmUgaXQgYWxsb3dzIGNhcHR1cmUgdG8gYmVn
aW4uCisKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OiBBZGQgUmVwbGF5S2l0Q2FwdHVyZVNv
dXJjZS5tbS4gUmVuYW1lIERpc3BsYXlDYXB0dXJlU291cmNlTWFjLmNwcAorICAgICAgICB0byBE
aXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmNwcC4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajogQWRkIG5ldyBmaWxlcy4KKworICAgICAgICAqIGVuLmxwcm9q
L0xvY2FsaXphYmxlLnN0cmluZ3M6IEFkZCBsb2NhbGl6YWJsZSBzdHJpbmdzIGZvciBnZXREaXNw
bGF5TWVkaWEgcHJvbXB0LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VU
cmFuc2ZlclNlc3Npb25WVC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdl
VHJhbnNmZXJTZXNzaW9uVlQubW06CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVRyYW5zZmVyU2Vz
c2lvblZUOjpjb252ZXJ0Q01TYW1wbGVCdWZmZXIpOiBBZGQgYW4gb3B0aW9uYWwgTWVkaWFUaW1l
IHBhcmFtZXRlci4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNy
ZWF0ZU1lZGlhU2FtcGxlKTogQWRkIGEgTWVkaWFUaW1lIHBhcmFtZXRlci4KKworICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9SZXBsYXlLaXRDYXB0dXJlU291cmNlLmg6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9SZXBsYXlLaXRDYXB0dXJlU291
cmNlLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV2ViQ29yZVJlcGxheUtpdFNjcmVlblJlY29yZGVy
SGVscGVyIGluaXRXaXRoQ2FsbGJhY2s6XSk6CisgICAgICAgICgtW1dlYkNvcmVSZXBsYXlLaXRT
Y3JlZW5SZWNvcmRlckhlbHBlciBkaXNjb25uZWN0XSk6CisgICAgICAgICgtW1dlYkNvcmVSZXBs
YXlLaXRTY3JlZW5SZWNvcmRlckhlbHBlciBvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOm9mT2JqZWN0
OmNoYW5nZTpjb250ZXh0Ol0pOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGF5S2l0Q2FwdHVyZVNv
dXJjZTo6aXNBdmFpbGFibGUpOiBDaGVjayBSZXBsYXlLaXQgYXZhaWxhYmlsaXR5LgorICAgICAg
ICAoV2ViQ29yZTo6UmVwbGF5S2l0Q2FwdHVyZVNvdXJjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlcGxheUtpdENhcHR1cmVTb3VyY2U6OlJlcGxheUtpdENhcHR1cmVTb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVwbGF5S2l0Q2FwdHVyZVNvdXJjZTo6flJlcGxheUtpdENhcHR1
cmVTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGF5S2l0Q2FwdHVyZVNvdXJjZTo6c3Rh
cnQpOiBTdGFydCBzY3JlZW4gY2FwdHVyZSBvbmx5LgorICAgICAgICAoV2ViQ29yZTo6UmVwbGF5
S2l0Q2FwdHVyZVNvdXJjZTo6c2NyZWVuUmVjb3JkZXJEaWRPdXRwdXRWaWRlb1NhbXBsZSk6IFJl
dGFpbiB0aGUKKyAgICAgICAgdGhlIG5ldyBmcmFtZSwgc2V0IGludHJpbnNpYyBzaXplIHRvIHRo
ZSBpbWFnZSBzaXplLgorICAgICAgICAoV2ViQ29yZTo6UmVwbGF5S2l0Q2FwdHVyZVNvdXJjZTo6
Y2FwdHVyZVN0YXRlRGlkQ2hhbmdlKTogVXBkYXRlIG9ic2VydmVyIGlmIGludGVycnVwdGlvbgor
ICAgICAgICBzdGF0ZSBvciByZWNvcmRlciBzdGF0ZSBjaGFuZ2VzIHNvIGl0IGNhbiB1cGRhdGUg
dGhlIHRyYWNrJ3MgJ211dGVkJyBzdGF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlcGxheUtpdENh
cHR1cmVTb3VyY2U6OnN0b3ApOiBTdG9wIGNhcHR1cmUuCisgICAgICAgIChXZWJDb3JlOjpSZXBs
YXlLaXRDYXB0dXJlU291cmNlOjpnZW5lcmF0ZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
cGxheUtpdENhcHR1cmVTb3VyY2U6OnZlcmlmeUNhcHR1cmVJc0FjdGl2ZSk6IFJlcGxheUtpdCBk
b2Vzbid0IG5vdGlmeSAKKyAgICAgICAgd2hlbiBjYXB0dXJlIGlzIHBhdXNlZCwgc28gd2F0Y2gg
Zm9yIGNoYW5nZXMgYnkgbW9uaXRvcmluZyB0aGUgZnJhbWUgY291bnQuCisgICAgICAgIChXZWJD
b3JlOjpSZXBsYXlLaXRDYXB0dXJlU291cmNlOjpzdGFydENhcHR1cmVXYXRjaGRvZ1RpbWVyKTog
U3RhcnQgdGhlIHRpbWVyIHRoYXQKKyAgICAgICAgd2lsbCBtb25pdG9yIGZvciBjYXB0dXJlIHBh
dXNpbmcvcmVzdW1pbmcuCisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5EZXZpY2VVVUlEKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNjcmVlbkRldmljZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYXlL
aXRDYXB0dXJlU291cmNlOjpzY3JlZW5DYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXBsYXlLaXRDYXB0dXJlU291cmNlOjpzY3JlZW5DYXB0dXJlRGV2
aWNlcyk6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3Ry
ZWFtQ2FwdHVyZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDR0Rpc3BsYXlTdHJlYW1D
YXB0dXJlU291cmNlOjpnZW5lcmF0ZUZyYW1lKTogRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMgd2Fz
CisgICAgICAgIHJlbmFtZWQgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS4KKyAgICAgICAgKFdl
YkNvcmU6OkNHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2U6Om5ld0ZyYW1lKTogVGFrZSBhIFJl
dGFpblB0cjxJT1N1cmZhY2VSZWY+CisgICAgICAgIGluc3RlYWQgb2YgYSBEaXNwbGF5U3VyZmFj
ZS4KKyAgICAgICAgKFdlYkNvcmU6OkNHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2U6OmZyYW1l
QXZhaWxhYmxlSGFuZGxlcik6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9DR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpD
R0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlOjpEaXNwbGF5U3VyZmFjZTo6RGlzcGxheVN1cmZh
Y2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNv
dXJjZTo6RGlzcGxheVN1cmZhY2U6On5EaXNwbGF5U3VyZmFjZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpDR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlOjpEaXNwbGF5U3VyZmFjZTo6
b3BlcmF0b3I9KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNHRGlzcGxheVN0cmVhbUNh
cHR1cmVTb3VyY2U6OkRpc3BsYXlTdXJmYWNlOjppb1N1cmZhY2UgY29uc3QpOiBEZWxldGVkLgor
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NHRGlzcGxheVN0cmVhbVNjcmVl
bkNhcHR1cmVTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dE
aXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNH
RGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2U6OmNyZWF0ZSk6IERpc3BsYXlDYXB0dXJl
U291cmNlTWFjIHdhcworICAgICAgICByZW5hbWVkIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2Eu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVNYW5h
Z2VyQ29jb2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUNhcHR1cmVNYW5hZ2VyQ29j
b2E6OnVwZGF0ZURpc3BsYXlDYXB0dXJlRGV2aWNlcyk6IFVzZSAKKyAgICAgICAgUmVwbGF5S2l0
Q2FwdHVyZVNvdXJjZSBvbiBpT1MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMuY3Bw
LgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OkRpc3BsYXlDYXB0
dXJlU291cmNlQ29jb2EpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUNhcHR1cmVTb3VyY2VD
b2NvYTo6fkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Y2FwYWJpbGl0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OnNldHRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OnNldHRpbmdzRGlkQ2hhbmdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OnN0YXJ0UHJvZHVjaW5nRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpzdG9wUHJvZHVj
aW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpl
bGFwc2VkVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29h
Ojp1cGRhdGVGcmFtZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUNhcHR1cmVTb3Vy
Y2VDb2NvYTo6ZW1pdEZyYW1lKTogU3VwcG9ydCBjYXB0dXJlciByZXR1cm5pbmcgYSBDTVNhbXBs
ZUJ1ZmZlci4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OnNl
dExvZ2dlcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpD
YXB0dXJlcjo6c2V0TG9nZ2VyKTogU2V0IHRoZSBjYXB0dXJlcidzIGxvZ2dlci4KKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OkNhcHR1cmVyOjpsb2dDaGFubmVs
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OkNh
cHR1cmVyOjpPYnNlcnZlcjo6fk9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlD
YXB0dXJlU291cmNlQ29jb2E6OkNhcHR1cmVyOjpzZXRPYnNlcnZlcik6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpDYXB0dXJlcjo6Y2FwdHVyZXJJc1J1bm5p
bmdDaGFuZ2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNh
cHR1cmVTb3VyY2VDb2NvYS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlTWFjLmguCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Q2FwdHVyZVNvdXJjZUZhY3RvcnlNYWM6OmNyZWF0
ZURpc3BsYXlDYXB0dXJlU291cmNlKTogRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMKKyAgICAgICAg
cmVuYW1lZCB0byBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLgorCisgICAgICAgICogcGxhdGZv
cm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrRGlzcGxheUNhcHR1cmVyOjpnZW5lcmF0ZUZyYW1lKTogRGl0dG8uCisKIDIwMjEt
MTAtMTMgIEdhYnJpZWwgTmF2YSBNYXJpbm8gIDxnbmF2YW1hcmlub0BhcHBsZS5jb20+CiAKICAg
ICAgICAgU2tpcCBmYWxsYmFja0ZvbnRzRm9yUnVuV2l0aEl0ZXJhdG9yIGZvciBlbXB0eSBydW5z
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZwppbmRleCA1ZTkxMDJmYWNhMjI2MGNjMTk4OWM3YWIzMjQzOTZkYjEw
MWZjNmFmLi5jMTIyNWVkYTY1NjJkY2NlZDVhZDU4YzIwZGZhZDdiOTc1MjkyMTg2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0xMC0xMyAgRXJpYyBDYXJsc29uICA8
ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBTdXBwb3J0IGdldERpc3Bs
YXlNZWRpYQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjMxNDU1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NDA0NDQ5NT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBBTC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIHBhbC9pb3MvUmVwbGF5S2l0U29mdExpbmsuaDogQWRkZWQu
CisgICAgICAgICogcGFsL2lvcy9SZXBsYXlLaXRTb2Z0TGluay5tbTogQWRkZWQuCisKIDIwMjEt
MTAtMTMgIEFkaXR5YSBLZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtt
YWNPU10gQWRkIHN1cHBvcnQgZm9yIGFjY2VudC1jb2xvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlMGVjOWI0Yzcz
NTc1YTU5MmYwMTM2NjNlZDM5ZWM5ZWNiNmFjMWZjLi40NWNjYTJlYzkyZmI2ZmEyZDdkMjAxMDc3
MzYzZDcwOTFjY2UyMWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIxLTEwLTEzICBF
cmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFN1
cHBvcnQgZ2V0RGlzcGxheU1lZGlhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzE0NTUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg0MDQ0NDk1Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbToKKyAgICAgICAgKFdlYktpdDo6
YWxlcnRNZXNzYWdlVGV4dCk6IEFkZCB0ZXh0IGZvciBkZWZhdWx0IHNjcmVlbiBjYXB0dXJlIHBy
b21wdC4KKyAgICAgICAgKFdlYktpdDo6YWxsb3dCdXR0b25UZXh0KTogRGl0dG8uCisgICAgICAg
IChXZWJLaXQ6OmRvTm90QWxsb3dCdXR0b25UZXh0KTogRGl0dG8uCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6
VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KTogQ2Fs
bAorICAgICAgICBkZWZhdWx0IGdldERpc3BsYXlNZWRpYSBwcm9tcHQgaWYgdGhlIGRlbGVnYXRl
IGRvZXNuJ3QgaW1wbGVtZW50IHRoZSBwcml2YXRlCisgICAgICAgIHByb21wdCBzZWxlY3Rvci4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OnByb21wdEZvckdl
dERpc3BsYXlNZWRpYSk6IE5ldyBkZWZhdWx0CisgICAgICAgIGdldERpc3BsYXlNZWRpYSBwcm9t
cHQuCisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OnBy
b21wdEZvckdldFVzZXJNZWRpYSk6IAorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdFByb3h5Ojpkb0RlZmF1bHRBY3Rpb24pOiBDYWxsIHByb21wdEZvckdldERpc3Bs
YXlNZWRpYQorICAgICAgICBvciBwcm9tcHRGb3JHZXRVc2VyTWVkaWEgYWNjb3JkaW5nIHRvIHRo
ZSByZXF1ZXN0IHR5cGUuCisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0UHJveHk6OmNhblByb21wdEZvckdldERpc3BsYXlNZWRpYSk6CisgICAgICAgIChXZWJLaXQ6
OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OnByb21wdCk6IERlbGV0ZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuaDoKKyAgICAg
ICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6ZG9EZWZhdWx0QWN0
aW9uKTogRGVsZXRlZC4KKwogMjAyMS0xMC0xMyAgUGVyIEFybmUgIDxwdm9sbGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXN0cmljdCAiZGFyd2luLW5vdGlmaWNhdGlvbi1wb3N0IiB0byBhIG1p
bmltYWwgc2V0IGluIHRoZSBXUCBzYW5kYm94CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFM
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggM2U5MDUzZTRjOGMyNzIwZTY3ZWMyNzcz
YTVhMzIwNTlmZTAyNzA2Ni4uYTU1MWM2NzAzMzQ3MTc1NGRhZmJhOTU0ZmUwOTcwOTkxNDUyZjJl
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMjEsNiArMjEsOCBAQAogLyogRW5kIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0aW9u
ICovCiAKIC8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCisJCTA3MUMwMDM3MjcwN0VE
RjAwMEQwMjdDNyAvKiBSZXBsYXlLaXRTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MUMwMDM1MjcwN0VERjAwMEQwMjdDNyAvKiBSZXBs
YXlLaXRTb2Z0TGluay5tbSAqLzsgfTsKKwkJMDcxQzAwMzgyNzA3RURGMDAwRDAyN0M3IC8qIFJl
cGxheUtpdFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwNzFDMDAzNjI3MDdFREYwMDBEMDI3QzcgLyogUmVwbGF5S2l0U29mdExpbmsuaCAq
LzsgfTsKIAkJMDc2MTFEQjYyNDNGQTVCRjAwRDgwNzA0IC8qIFVzYWdlVHJhY2tpbmdTb2Z0TGlu
ay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2MTFE
QjQyNDNGQTVCRTAwRDgwNzA0IC8qIFVzYWdlVHJhY2tpbmdTb2Z0TGluay5oICovOyB9OwogCQkw
NzYxMURCNzI0M0ZBNUJGMDBEODA3MDQgLyogVXNhZ2VUcmFja2luZ1NvZnRMaW5rLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2MTFEQjUyNDNGQTVC
RjAwRDgwNzA0IC8qIFVzYWdlVHJhY2tpbmdTb2Z0TGluay5tbSAqLzsgfTsKIAkJMDc3RTg3QjEy
MjZBNDYwMjAwQTJBRkYwIC8qIEFWRm91bmRhdGlvblNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc3RTg3QUYyMjZBNDYwMjAwQTJBRkYw
IC8qIEFWRm91bmRhdGlvblNvZnRMaW5rLm1tICovOyB9OwpAQCAtMjM1LDYgKzIzNyw4IEBACiAv
KiBFbmQgUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRmls
ZVJlZmVyZW5jZSBzZWN0aW9uICovCisJCTA3MUMwMDM1MjcwN0VERjAwMEQwMjdDNyAvKiBSZXBs
YXlLaXRTb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFJlcGxheUtpdFNvZnRMaW5rLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzFD
MDAzNjI3MDdFREYwMDBEMDI3QzcgLyogUmVwbGF5S2l0U29mdExpbmsuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVwbGF5S2l0U29mdExpbmsuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMDc2MTFEQjQyNDNGQTVCRTAwRDgwNzA0IC8qIFVzYWdlVHJhY2tpbmdT
b2Z0TGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2FnZVRyYWNraW5n
U29mdExpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2MTFEQjUyNDNGQTVC
RjAwRDgwNzA0IC8qIFVzYWdlVHJhY2tpbmdTb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVzYWdlVHJhY2tpbmdTb2Z0TGluay5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc3RTg3QUYyMjZBNDYwMjAwQTJBRkYwIC8qIEFWRm91bmRh
dGlvblNvZnRMaW5rLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
QVZGb3VuZGF0aW9uU29mdExpbmsubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03
NzEsNiArNzc1LDggQEAKIAkJCQk1QzdDNzg3MjIzQUMzRTc3MDA2NUY0N0UgLyogTWFuYWdlZENv
bmZpZ3VyYXRpb25Tb2Z0TGluay5tbSAqLywKIAkJCQk0NDUwRkM5RTIxRjVGNjAyMDA0REZBNTYg
LyogUXVpY2tMb29rU29mdExpbmsuaCAqLywKIAkJCQk0NDUwRkM5RDIxRjVGNjAyMDA0REZBNTYg
LyogUXVpY2tMb29rU29mdExpbmsubW0gKi8sCisJCQkJMDcxQzAwMzYyNzA3RURGMDAwRDAyN0M3
IC8qIFJlcGxheUtpdFNvZnRMaW5rLmggKi8sCisJCQkJMDcxQzAwMzUyNzA3RURGMDAwRDAyN0M3
IC8qIFJlcGxheUtpdFNvZnRMaW5rLm1tICovLAogCQkJCTA3OUQxRDk1MjY5NTBERDcwMDg4MzU3
NyAvKiBTeXN0ZW1TdGF0dXNTb2Z0TGluay5oICovLAogCQkJCTA3OUQxRDk2MjY5NTBERDcwMDg4
MzU3NyAvKiBTeXN0ZW1TdGF0dXNTb2Z0TGluay5tbSAqLywKIAkJCQkyRTEzNDJDQTIxNUFBMTBB
MDA3MTk5RDIgLyogVUlLaXRTb2Z0TGluay5oICovLApAQCAtOTkyLDYgKzk5OCw3IEBACiAJCQkJ
NDQ1MEZDQTAyMUY1RjYwMjAwNERGQTU2IC8qIFF1aWNrTG9va1NvZnRMaW5rLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwQzVBRjkyMDFGNDNBNEM3MDAyRUFDMDIgLyogUXVpY2tMb29rU1BJLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGNEM4NUE0RjI2NTg1NTFBMDA1Qjg5Q0MgLyogUXVpY2tMb29rVUlT
b2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDcxQzAwMzgyNzA3RURGMDAwRDAyN0M3IC8q
IFJlcGxheUtpdFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDk3NEVBMzI2NUVFQTIy
MDBCNDlCOEMgLyogUmV2ZWFsU29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ0Mjk1NkNE
MjE4QTcyREYwMDgwREI1NCAvKiBSZXZlYWxTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MEFC
OEYxMjBBRTJFOEQwMEI4QkU4NyAvKiBTZWNLZXlQcm94eVNQSS5oIGluIEhlYWRlcnMgKi8sCkBA
IC0xMTM2LDYgKzExNDMsNyBAQAogCQkJCUExMTc1QjRGMUY2QjMzNzMwMEM0QjlGMCAvKiBQb3B1
cE1lbnUubW0gaW4gU291cmNlcyAqLywKIAkJCQk0NDUwRkM5RjIxRjVGNjAyMDA0REZBNTYgLyog
UXVpY2tMb29rU29mdExpbmsubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNEM4NUE0RTI2NTg1NTFB
MDA1Qjg5Q0MgLyogUXVpY2tMb29rVUlTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAorCQkJCTA3
MUMwMDM3MjcwN0VERjAwMEQwMjdDNyAvKiBSZXBsYXlLaXRTb2Z0TGluay5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUY0OTc0RUE0MjY1RUVBMjIwMEI0OUI4QyAvKiBSZXZlYWxTb2Z0TGluay5tbSBp
biBTb3VyY2VzICovLAogCQkJCUEzQzY2Q0RDMUY0NjJENkEwMDlFNkVFOSAvKiBTZXNzaW9uSUQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTNBQjZFNTIxRjNEMURDNTAwOUMxNEIxIC8qIFNsZWVw
RGlzYWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2lvcy9SZXBsYXlLaXRTb2Z0TGluay5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9p
b3MvUmVwbGF5S2l0U29mdExpbmsuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZjI3MDY3MjY4NzhkYTFiZGVmYjA1
YWJkNDQ4OWU2MjgzNGE0ZGRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9pb3MvUmVwbGF5S2l0U29mdExpbmsuaApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
CisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgUExBVEZPUk0oSU9TKQorCisjaW1wb3J0IDxSZXBsYXlL
aXQvUmVwbGF5S2l0Lmg+CisjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKworU09GVF9MSU5L
X0ZSQU1FV09SS19GT1JfSEVBREVSKFBBTCwgUmVwbGF5S2l0KQorCitTT0ZUX0xJTktfQ0xBU1Nf
Rk9SX0hFQURFUihQQUwsIFJQU2NyZWVuUmVjb3JkZXIpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9pb3MvUmVwbGF5S2l0U29mdExpbmsubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2lvcy9SZXBsYXlLaXRTb2Z0TGluay5tbQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOGUw
ZDY2NjRkYjI4MzI2MTJiMTgxMDBiYmEwZTQ3ZTcxY2Q1YzU0Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9pb3MvUmVwbGF5S2l0U29mdExpbmsubW0KQEAgLTAsMCAr
MSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2lmIFBMQVRGT1JN
KElPUykKKworI2ltcG9ydCA8UmVwbGF5S2l0L1JlcGxheUtpdC5oPgorI2ltcG9ydCA8d3RmL1Nv
ZnRMaW5raW5nLmg+CisKK1NPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJDRShQQUwsIFJlcGxh
eUtpdCkKKworU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBSZXBs
YXlLaXQsIFJQU2NyZWVuUmVjb3JkZXIsIFBBTF9FWFBPUlQpCisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ29yZUF1ZGlvU1BJLmggYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9Db3JlQXVkaW9TUEkuaAppbmRleCBkNWU5ZGEzZjNjNjc1
YzEzMjg4YTU2ZTYyNTExN2QwMjM0YTM3ZjBkLi40M2U2YzBhZTg1MDg4NDFkNmQ4NmJkNDJiYWM3
ZjJlY2M1MzM2MDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9D
b3JlQXVkaW9TUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9Db3JlQXVk
aW9TUEkuaApAQCAtMjcsNiArMjcsOCBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAKKyNpbmNs
dWRlIDxDb3JlQXVkaW8vQ29yZUF1ZGlvVHlwZXMuaD4KKwogI2lmIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCiAjaW5jbHVkZSA8Q29yZUF1ZGlvL0F1ZGlvSGFyZHdhcmVQcml2Lmg+CiAjZWxzZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggYTRjMGE3NjI3YzM3ODFkZmNkMDQ5MDZmYzUyMzMw
OWM5MDczMGMyYy4uYWU5M2NjNmFlZDEzYzRkZDJiNDFhMmQxYTJjNzE4MzI3N2U3MzE1NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC01MjIsOSArNTIyLDExIEBAIHBsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9jb2NvYS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLmNwcAog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJ
bnRlcm5hbFVuaXQuY3BwCiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9BdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlclVuaXQuY3BwCitwbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9EaXNw
bGF5Q2FwdHVyZVNvdXJjZUNvY29hLmNwcAogcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVk
aW9TZXNzaW9uQ2FwdHVyZURldmljZS5tbQogcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVk
aW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9pb3MvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZUlPUy5tbQorcGxhdGZvcm0vbWVkaWFz
dHJlYW0vaW9zL1JlcGxheUtpdENhcHR1cmVTb3VyY2UubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJDb2NvYS5jcHAKIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0KQEAgLTUzNSw3ICs1MzcsNiBAQCBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZS5jcHAKIHBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKIHBs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcAogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlTWFuYWdlckNvY29hLmNwcAotcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlTWFjLmNwcAogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL01lZGlhU3RyZWFtVHJhY2tBdWRpb1NvdXJjZVByb3ZpZGVyQ29jb2Eu
Y3BwCiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja0F1ZGlvU2hhcmVkVW5pdC5tbQogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
NzUxOTc0YTJiN2ZmMzc2ZTA1ZmMxMTNiZTdkMzY3MTdlN2M5MWE3NS4uZDU3NGI3YTZhMDRiMDc4
OWUzZmFjMjJhNDM3MWE1MTRlNzQyZWQ4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTgsNiArOTgsOCBAQAogCQkwNzBFODFE
MTFCRjI3NjU2MDAxRkRBNDggLyogVmlkZW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwRTgxRDAxQkYyNzY1
NjAwMUZEQTQ4IC8qIFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uaCAqLzsgfTsKIAkJMDcw
RjU0OTgxN0YxMkY2QjAwMTY5RTA0IC8qIE1lZGlhU3RyZWFtQ29uc3RyYWludHNWYWxpZGF0aW9u
Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzBGNTQ5NzE3RjEyRjZCMDAxNjlFMDQgLyogTWVkaWFTdHJlYW1Db25zdHJhaW50c1ZhbGlkYXRp
b25DbGllbnQuaCAqLzsgfTsKIAkJMDcxQTlFQzMxNjhGQkM1NTAwMjYyOUY5IC8qIFRleHRUcmFj
a0N1ZUdlbmVyaWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA3MUE5RUMxMTY4RkI1NkMwMDI2MjlGOSAvKiBUZXh0VHJhY2tDdWVHZW5lcmljLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMDcxQzAwMzQy
NzA3RDk1NTAwRDAyN0M3IC8qIFJlcGxheUtpdENhcHR1cmVTb3VyY2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MUMwMDMzMjcwN0Q5NDQwMEQwMjdD
NyAvKiBSZXBsYXlLaXRDYXB0dXJlU291cmNlLmggKi87IH07CisJCTA3MUMwMDRCMjcwQjg2NDkw
MEQwMjdDNyAvKiBSZXBsYXlLaXRDYXB0dXJlU291cmNlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcxQzAwMzIyNzA3RDk0MzAwRDAyN0M3IC8qIFJl
cGxheUtpdENhcHR1cmVTb3VyY2UubW0gKi87IH07CiAJCTA3MUU0OTcwMUFENUFCNUUwMDhBNTBC
NCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MUU0OTZGMUFENUFCNUUwMDhBNTBCNCAvKiBNZWRpYVBs
YXliYWNrVGFyZ2V0Q29jb2EuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwNzI1RUZBOTIzOUFENzkzMDBBNTM4QTkgLyogTWVkaWFQbGF5ZXJQcml2
YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzlG
NUU0QjBGM0JFQkVBMDA1RTA3ODIgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDcyNzdFNEQxN0QwMThDQzAw
MTU1MzREIC8qIEpTTWVkaWFTdHJlYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3Mjc3RTQxMTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFt
LmggKi87IH07CkBAIC0yMDcsNiArMjA5LDcgQEAKIAkJMDdCNzExNkQxRDg5OUU2MzAwOUYwRkZC
IC8qIENhcHR1cmVEZXZpY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3QjcxMTZBMUQ4OTlFNjMwMDlGMEZGQiAvKiBDYXB0dXJlRGV2aWNlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDdCNzExNkYx
RDg5OUU2MzAwOUYwRkZCIC8qIENhcHR1cmVEZXZpY2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0I3MTE2QzFEODk5RTYzMDA5RjBGRkIg
LyogQ2FwdHVyZURldmljZU1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwN0I5M0ZGQzIzQjk0RUM3MDAzNkY4RUEgLyogTUlNRVR5cGVD
YWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdC
OTNGRjkyM0I5MkFBQTAwMzZGOEVBIC8qIE1JTUVUeXBlQ2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwN0JCMUU3MDI3MTc2Q0Q5MDAxREYy
ODkgLyogRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdCQjFFNkYyNzE3NkNDQTAwMURGMjg5IC8qIERpc3Bs
YXlDYXB0dXJlU291cmNlQ29jb2EuaCAqLzsgfTsKIAkJMDdDMDQ2QzQxRTQyNTA4QjAwNzIwMUU3
IC8qIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDczQjg3NTgxRTQwRENGRDAwNzFDMEVDIC8qIENBQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTA3QzA0NkNCMUU0MjY0MTMwMDcyMDFFNyAvKiBBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzNCODc1NjFFNDBEQ0U1MDA3MUMwRUMgLyogQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3QzE0ODJFMjYx
MkEyMUYwMDc3NTgyOCAvKiBNZWRpYVNlc3Npb25Db29yZGluYXRvclN0YXRlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzdCQTU4ODI2MTI2RDY2MDA3
MkYxOUYgLyogTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC01ODUyLDYgKzU4NTUsOCBAQAogCQkw
NzE3NzY1RjI2QzMwM0I3MDBBNjMyOTkgLyogQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNv
dXJjZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1
cmVTb3VyY2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MUE5RUMwMTY4RkI1
NkMwMDI2MjlGOSAvKiBUZXh0VHJhY2tDdWVHZW5lcmljLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRUcmFja0N1ZUdlbmVyaWMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwNzFBOUVDMTE2OEZCNTZDMDAyNjI5RjkgLyogVGV4dFRyYWNrQ3Vl
R2VuZXJpYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0VHJhY2tDdWVH
ZW5lcmljLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MUMwMDMyMjcwN0Q5NDMw
MEQwMjdDNyAvKiBSZXBsYXlLaXRDYXB0dXJlU291cmNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMDcxQzAwMzMyNzA3RDk0NDAwRDAyN0M3IC8qIFJlcGxheUtpdENhcHR1cmVTb3VyY2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwNzFFNDk2RDFBRDVBQTBEMDA4QTUwQjQgLyogTWVkaWFQbGF5YmFja1Rh
cmdldENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVk
aWFQbGF5YmFja1RhcmdldENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
NzFFNDk2RjFBRDVBQjVFMDA4QTUwQjQgLyogTWVkaWFQbGF5YmFja1RhcmdldENvY29hLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzIyMUI0QzE3Q0VDMzI3MDA4NDhFNTEg
LyogTWVkaWFTdHJlYW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TWVkaWFTdHJlYW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjA0MCwxMCAr
NjA0NSw4IEBACiAJCTA3OUY1RTRCMEYzQkVCRUEwMDVFMDc4MiAvKiBNZWRpYVBsYXllclByaXZh
dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5ZXJQcml2YXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QTZEMUU5MTQ5MTEzNzcwMDA1MUQw
QyAvKiBNZWRpYUZyYWdtZW50VVJJUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE1lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwN0E2RDFFQTE0OTExMzc3MDAwNTFEMEMgLyogTWVkaWFGcmFnbWVudFVS
SVBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYUZyYWdtZW50
VVJJUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3QTZEODQ3MUZFQjcw
MEIwMDY0NDFERSAvKiBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QTZEODQ4MUZFQjcwMEIwMDY0NDFERSAvKiBEaXNw
bGF5Q2FwdHVyZU1hbmFnZXJDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBEaXNwbGF5Q2FwdHVyZU1hbmFnZXJDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTA3QTZEODQ5MUZFQjcwMEMwMDY0NDFERSAvKiBEaXNwbGF5Q2FwdHVyZU1h
bmFnZXJDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5Q2Fw
dHVyZU1hbmFnZXJDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwN0E2RDg0
QTFGRUI3MDBEMDA2NDQxREUgLyogRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdBQTZCNjkxNjZEMDE5NTAwRDQ1NjcxIC8qIEluYmFu
ZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTA3QUE2QjZBMTY2RDAxOTUwMEQ0NTY3MSAvKiBJbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZGT2JqQy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IElu
YmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwN0FCOTk2NTE4REEzQzAxMDAxODc3MUUgLyogUlRDQ29uZmlndXJhdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MDYzLDYgKzYwNjYsOCBAQAogCQkwN0I3MTE2QzFEODk5
RTYzMDA5RjBGRkIgLyogQ2FwdHVyZURldmljZU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ2FwdHVyZURldmljZU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDdCOTNGRjkyM0I5MkFBQTAwMzZGOEVBIC8qIE1JTUVUeXBlQ2FjaGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTUlNRVR5cGVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwN0I5M0ZGQjIzQjkyQUFCMDAzNkY4RUEgLyogTUlNRVR5cGVDYWNoZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBNSU1FVHlwZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMDdCQjFFNkUyNzE3NkNDQTAwMURGMjg5IC8qIERpc3BsYXlDYXB0dXJlU291cmNlQ29j
b2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3QkIxRTZGMjcxNzZDQ0EwMDFERjI4OSAv
KiBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlDYXB0
dXJlU291cmNlQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdDMTQ4Mjky
NjEyOTU1QzAwNzc1ODI4IC8qIEpTTWVkaWFTZXNzaW9uUmVhZHlTdGF0ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU01lZGlhU2Vzc2lvblJlYWR5U3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMDdDMTQ4MkIyNjEyOTU1RDAwNzc1ODI4IC8qIEpTTWVkaWFTZXNzaW9uUmVhZHlTdGF0
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhU2Vzc2lvblJlYWR5U3RhdGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0MxNDgyQzI2MTI5NTVFMDA3NzU4MjggLyog
SlNNZWRpYVNlc3Npb25Db29yZGluYXRvclN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNzc5MSw4ICsxNzc5Niw2IEBACiAJCQkJM0YzQkI1ODMxRTcwOUVFNDAwQzcwMUYy
IC8qIENvcmVBdWRpb0NhcHR1cmVTb3VyY2UuaCAqLywKIAkJCQkwN0E2RDg0ODFGRUI3MDBCMDA2
NDQxREUgLyogRGlzcGxheUNhcHR1cmVNYW5hZ2VyQ29jb2EuY3BwICovLAogCQkJCTA3QTZEODQ5
MUZFQjcwMEMwMDY0NDFERSAvKiBEaXNwbGF5Q2FwdHVyZU1hbmFnZXJDb2NvYS5oICovLAotCQkJ
CTA3QTZEODQ3MUZFQjcwMEIwMDY0NDFERSAvKiBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5jcHAg
Ki8sCi0JCQkJMDdBNkQ4NEExRkVCNzAwRDAwNjQ0MURFIC8qIERpc3BsYXlDYXB0dXJlU291cmNl
TWFjLmggKi8sCiAJCQkJNDE3NEU5MjAyNTM1RENERDAwRkU0MjAyIC8qIE1lZGlhU3RyZWFtVHJh
Y2tBdWRpb1NvdXJjZVByb3ZpZGVyQ29jb2EuY3BwICovLAogCQkJCTQxNzRFOTFFMjUzNURDRDYw
MEZFNDIwMiAvKiBNZWRpYVN0cmVhbVRyYWNrQXVkaW9Tb3VyY2VQcm92aWRlckNvY29hLmggKi8s
CiAJCQkJMDc0NEVDRUIxRTBDNEFFNTAwMEQwOTQ0IC8qIE1vY2tBdWRpb1NoYXJlZFVuaXQuaCAq
LywKQEAgLTIwMTA4LDYgKzIwMTExLDggQEAKIAkJCQk0MUMzQjg5RjI2NDlCMUI3MDA0RUQ0REUg
LyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQuaCAqLywKIAkJCQk0
MUMzQjhBMDI2NDlCMUI3MDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJV
bml0LmNwcCAqLywKIAkJCQk0MUMzQjg5QjI2NDlCMUI2MDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJVbml0LmggKi8sCisJCQkJMDdCQjFFNkUyNzE3NkNDQTAwMURGMjg5
IC8qIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuY3BwICovLAorCQkJCTA3QkIxRTZGMjcxNzZD
Q0EwMDFERjI4OSAvKiBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmggKi8sCiAJCQkpOwogCQkJ
cGF0aCA9IGNvY29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI4ODAyLDYgKzI4
ODA3LDggQEAKIAkJCQlDREM2NzUyMDFFQUVBOUI3MDA3MjdDODQgLyogQVZBdWRpb1Nlc3Npb25D
YXB0dXJlRGV2aWNlTWFuYWdlci5tbSAqLywKIAkJCQkwN0FGRjQyMDFFRkIxNDQ3MDBCNTQ1QjMg
LyogQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZUlPUy5oICovLAogCQkJCTA3QUZGNDIxMUVGQjE0NDcw
MEI1NDVCMyAvKiBDb3JlQXVkaW9DYXB0dXJlU291cmNlSU9TLm1tICovLAorCQkJCTA3MUMwMDMz
MjcwN0Q5NDQwMEQwMjdDNyAvKiBSZXBsYXlLaXRDYXB0dXJlU291cmNlLmggKi8sCisJCQkJMDcx
QzAwMzIyNzA3RDk0MzAwRDAyN0M3IC8qIFJlcGxheUtpdENhcHR1cmVTb3VyY2UubW0gKi8sCiAJ
CQkpOwogCQkJcGF0aCA9IGlvczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zMjQ1
Niw2ICszMjQ2Myw3IEBACiAJCQkJODM1RDU0QzUxRjRERTUzODAwRTYwNjcxIC8qIERpcmVjdG9y
eUZpbGVMaXN0Q3JlYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQ3QTA5RDEyMEE5M0E5NzAw
MjQwRkFFIC8qIERpc2FibGVkQWRhcHRhdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdFREFB
RkM5MTlBMkNDREMwMDM0REZEMSAvKiBEaXNrQ2FjaGVNb25pdG9yQ29jb2EuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTA3QkIxRTcwMjcxNzZDRDkwMDFERjI4OSAvKiBEaXNwbGF5Q2FwdHVyZVNvdXJj
ZUNvY29hLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkU1RkJEMzFDM0RENTFFMDAwN0EyQ0EgLyog
RGlzcGxheUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTU1QUQwOTQwMjQwODk2NDAwMERFNEQy
RiAvKiBEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1NUFE
MDkzRTI0MDg5NjM1MDBERTREMkYgLyogRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oIGluIEhlYWRl
cnMgKi8sCkBAIC0zNTA4OCw2ICszNTA5Niw3IEBACiAJCQkJQTg5Q0NDNTMwRjQ0RTk4MTAwQjVE
QTEwIC8qIFJlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQky
REY1MTJDRTFEODczRTQ3MDAxRDY3ODAgLyogUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUwQTA5OUU2NDkyMDA1NkU1ODEgLyogUmVwbGFjZVNl
bGVjdGlvbkNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3MUMwMDM0MjcwN0Q5NTUwMEQw
MjdDNyAvKiBSZXBsYXlLaXRDYXB0dXJlU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkRE
NkUxRjI2RTdEQkU3MDA4QzFGNEMgLyogUmVwb3J0aW5nRW5kcG9pbnRzQ2FjaGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQ5OThBRUM2MTNGOUQwRUEwMDkwQjFBQSAvKiBSZXF1ZXN0QW5pbWF0aW9u
RnJhbWVDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNERDAxMjUxRjEyRDAwM0VG
MjY5IC8qIFJlc2V0SW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTM2ODEwLDYgKzM2ODE5
LDcgQEAKIAkJCQlDREEyOUEzMDFDQkY3NEQ0MDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlQVZLaXQubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREEyOUExNjFDQkRBNTZDMDA5MDFD
Q0YgLyogUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NDE5MjQyNDkyMTI3QjkzRTAwNjM0RkNGIC8qIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNv
Y29hLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMDcxQzAwNEIyNzBCODY0OTAwRDAyN0M3IC8qIFJl
cGxheUtpdENhcHR1cmVTb3VyY2UubW0gaW4gU291cmNlcyAqLywKIAkJCQk1QzJCMUFFQzIyMzk3
RUJDMDBCOTFDRjcgLyogUmVzb3VyY2VSZXNwb25zZUNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQkM1MTE1NkUxMkIxNzQ5QzAwQzk2NzU0IC8qIFNjcm9sbEFuaW1hdG9yTWFjLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZFRTM3MTEyNkYxOTUyOTAwMUI1MTg0IC8qIFNjcm9sbGJhcnNDb250
cm9sbGVyTWFjLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
bi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzIGIvU291cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9j
YWxpemFibGUuc3RyaW5ncwppbmRleCBlMTI5Y2NhOTgzYjllZmQ0ZjgzZTc0YjIyYjRiZjM2NzQ5
OGExNWQzLi5hMDU5ZDdiYjJlMGJhZjNiMjAwZjk0ZmY3MTIzMDI5YzgwOWRiNjQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKQEAgLTE2Myw2ICsxNjMs
OSBAQAogLyogQWxsb3cgYnV0dG9uIHRpdGxlIGluIHVzZXIgbWVkaWEgcHJvbXB0ICovCiAiQWxs
b3cgKHVzZXJtZWRpYSkiID0gIkFsbG93IjsKIAorLyogQWxsb3cgYnV0dG9uIHRpdGxlIGluIHNj
cmVlbiBzaGFyaW5nIHByb21wdCAqLworIkFsbG93IChzY3JlZW5zaGFyaW5nKSIgPSAiQWxsb3ci
OworCiAvKiBNZXNzYWdlIGZvciByZXF1ZXN0aW5nIGNyb3NzLXNpdGUgY29va2llIGFuZCB3ZWJz
aXRlIGRhdGEgYWNjZXNzLiAqLwogIkFsbG93IOKAnCVA4oCdIGFuZCDigJwlQOKAnSB0byB1c2Ug
Y29va2llcyBhbmQgd2Vic2l0ZSBkYXRhIHdoaWxlIGJyb3dzaW5nIOKAnCVA4oCdPyIgPSAiQWxs
b3cg4oCcJUDigJ0gYW5kIOKAnCVA4oCdIHRvIHVzZSBjb29raWVzIGFuZCB3ZWJzaXRlIGRhdGEg
d2hpbGUgYnJvd3Npbmcg4oCcJUDigJ0/IjsKIApAQCAtMTg0LDYgKzE4Nyw5IEBACiAvKiBNZXNz
YWdlIGZvciB1c2VyIG1pY3JvcGhvbmUgYWNjZXNzIHByb21wdCAqLwogIkFsbG93IOKAnCVA4oCd
IHRvIHVzZSB5b3VyIG1pY3JvcGhvbmU/IiA9ICJBbGxvdyDigJwlQOKAnSB0byB1c2UgeW91ciBt
aWNyb3Bob25lPyI7CiAKKy8qIE1lc3NhZ2UgZm9yIHNjcmVlbiBzaGFyaW5nIHByb21wdC4gKi8K
KyJBbGxvdyDigJwlQOKAnSB0byBvYnNlcnZlIHlvdXIgc2NyZWVuPyIgPSAiQWxsb3cg4oCcJUDi
gJ0gdG8gb2JzZXJ2ZSB5b3VyIHNjcmVlbj8iOworCiAvKiBXS0Vycm9yVW5rbm93biBkZXNjcmlw
dGlvbiAqLwogIkFuIHVua25vd24gZXJyb3Igb2NjdXJyZWQiID0gIkFuIHVua25vd24gZXJyb3Ig
b2NjdXJyZWQiOwogCkBAIC0zOTEsNiArMzk3LDkgQEAKIC8qIERpc2FsbG93IGJ1dHRvbiB0aXRs
ZSBpbiB1c2VyIG1lZGlhIHByb21wdCAqLwogIkRvbuKAmXQgQWxsb3cgKHVzZXJtZWRpYSkiID0g
IkRvbuKAmXQgQWxsb3ciOwogCisvKiBEaXNhbGxvdyBidXR0b24gdGl0bGUgaW4gc2NyZWVuIHNo
YXJpbmcgcHJvbXB0ICovCisiRG9u4oCZdCBBbGxvdyAoc2NyZWVuc2hhcmluZykiID0gIkRvbuKA
mXQgQWxsb3ciOworCiAvKiBEb3dubG9hZCBBdWRpbyBUbyBEaXNrIGNvbnRleHQgbWVudSBpdGVt
ICovCiAiRG93bmxvYWQgQXVkaW8iID0gIkRvd25sb2FkIEF1ZGlvIjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25W
VC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNl
c3Npb25WVC5oCmluZGV4IDRmMjI5ZGU2YWZmOWRmMWExZDQyZDc2MGUyNzA5OTA1Yzg4N2Y0MGQu
LmVjOTViZmI4MzRhZjNjY2UyMjc0YjVkZTVkZTc2YmYzMzMyMzZhY2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVy
U2Vzc2lvblZULmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgUmVmUHRyPE1lZGlh
U2FtcGxlPiBjb252ZXJ0TWVkaWFTYW1wbGUoTWVkaWFTYW1wbGUmLCBjb25zdCBJbnRTaXplJik7
CiAgICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBjcmVhdGVNZWRpYVNhbXBsZShDR0ltYWdlUmVmLCBj
b25zdCBNZWRpYVRpbWUmLCBjb25zdCBJbnRTaXplJiwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRp
b24gPSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSwgYm9vbCBtaXJyb3JlZCA9IGZh
bHNlKTsKLSAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IGNyZWF0ZU1lZGlhU2FtcGxlKENNU2FtcGxl
QnVmZmVyUmVmLCBjb25zdCBJbnRTaXplJiwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gPSBN
ZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSwgYm9vbCBtaXJyb3JlZCA9IGZhbHNlKTsK
KyAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IGNyZWF0ZU1lZGlhU2FtcGxlKENNU2FtcGxlQnVmZmVy
UmVmLCBjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBJbnRTaXplJiwgTWVkaWFTYW1wbGU6OlZpZGVv
Um90YXRpb24gPSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSwgYm9vbCBtaXJyb3Jl
ZCA9IGZhbHNlKTsKIAogI2lmICFQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBXRUJDT1JFX0VY
UE9SVCBSZWZQdHI8TWVkaWFTYW1wbGU+IGNyZWF0ZU1lZGlhU2FtcGxlKElPU3VyZmFjZVJlZiwg
Y29uc3QgTWVkaWFUaW1lJiwgY29uc3QgSW50U2l6ZSYsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0
aW9uID0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUsIGJvb2wgbWlycm9yZWQgPSBm
YWxzZSk7CkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPENNU2FtcGxl
QnVmZmVyUmVmPiBjcmVhdGVDTVNhbXBsZUJ1ZmZlcihJT1N1cmZhY2VSZWYsIGNvbnN0IE1lZGlh
VGltZSYsIGNvbnN0IEludFNpemUmKTsKICNlbmRpZgogCi0gICAgUmV0YWluUHRyPENNU2FtcGxl
QnVmZmVyUmVmPiBjb252ZXJ0Q01TYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYsIGNvbnN0
IEludFNpemUmKTsKKyAgICBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IGNvbnZlcnRDTVNh
bXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZiwgY29uc3QgSW50U2l6ZSYsIGNvbnN0IE1lZGlh
VGltZSogPSBudWxscHRyKTsKICAgICBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IGNyZWF0
ZUNNU2FtcGxlQnVmZmVyKENWUGl4ZWxCdWZmZXJSZWYsIGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0
IEludFNpemUmKTsKICAgICBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IGNyZWF0ZUNNU2Ft
cGxlQnVmZmVyKENHSW1hZ2VSZWYsIGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IEludFNpemUmKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VU
cmFuc2ZlclNlc3Npb25WVC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2
L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQubW0KaW5kZXggZDU3M2I3Zjk1YWFjYThjMjQxZTVhNTFi
OTQwYmIzMDdhMTI3ZjhlZC4uYWJiOTkyMzkzZTU3NTNiMzY5ZTdjNTU0NDZhMTFiZDA3MzdhZDk0
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VU
cmFuc2ZlclNlc3Npb25WVC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tCkBAIC0xMDgsNyArMTA4LDcgQEAgUmV0YWlu
UHRyPENWUGl4ZWxCdWZmZXJSZWY+IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNvbnZlcnRQaXhl
bEJ1ZmZlcihDVlBpeGVsQnUKICAgICByZXR1cm4gb3V0cHV0QnVmZmVyOwogfQogCi1SZXRhaW5Q
dHI8Q01TYW1wbGVCdWZmZXJSZWY+IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNvbnZlcnRDTVNh
bXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZiBzb3VyY2VCdWZmZXIsIGNvbnN0IEludFNpemUm
IHNpemUpCitSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IEltYWdlVHJhbnNmZXJTZXNzaW9u
VlQ6OmNvbnZlcnRDTVNhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZiBzb3VyY2VCdWZmZXIs
IGNvbnN0IEludFNpemUmIHNpemUsIGNvbnN0IE1lZGlhVGltZSogc2FtcGxlVGltZSkKIHsKICAg
ICBpZiAoIXNvdXJjZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNDEsNiAr
MTQxLDE0IEBAIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gSW1hZ2VUcmFuc2ZlclNlc3Np
b25WVDo6Y29udmVydENNU2FtcGxlQnVmZmVyKENNU2FtCiAgICAgICAgICAgICBSRUxFQVNFX0xP
RyhNZWRpYSwgIkltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNvbnZlcnRDTVNhbXBsZUJ1ZmZlcjog
Q01TYW1wbGVCdWZmZXJHZXRTYW1wbGVUaW1pbmdJbmZvQXJyYXkgZmFpbGVkIHdpdGggZXJyb3Ig
Y29kZTogJWQiLCBzdGF0aWNfY2FzdDxpbnQ+KHN0YXR1cykpOwogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgICAgIH0KKworICAgICAgICBpZiAoc2FtcGxlVGltZSkgeworICAgICAg
ICAgICAgYXV0byBjbVRpbWUgPSBQQUw6OnRvQ01UaW1lKCpzYW1wbGVUaW1lKTsKKyAgICAgICAg
ICAgIGZvciAoYXV0byYgdGltaW5nIDogdGltaW5nSW5mb0FycmF5KSB7CisgICAgICAgICAgICAg
ICAgdGltaW5nLnByZXNlbnRhdGlvblRpbWVTdGFtcCA9IGNtVGltZTsKKyAgICAgICAgICAgICAg
ICB0aW1pbmcuZGVjb2RlVGltZVN0YW1wID0gY21UaW1lOworICAgICAgICAgICAgfQorICAgICAg
ICB9CiAgICAgICAgIHRpbWVpbmdJbmZvUHRyID0gdGltaW5nSW5mb0FycmF5LmRhdGEoKTsKICAg
ICB9CiAKQEAgLTI4Nyw5ICsyOTUsOSBAQCBSZWZQdHI8TWVkaWFTYW1wbGU+IEltYWdlVHJhbnNm
ZXJTZXNzaW9uVlQ6OmNyZWF0ZU1lZGlhU2FtcGxlKENHSW1hZ2VSZWYgaW1hZ2UsCiAgICAgcmV0
dXJuIE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlKHNhbXBsZUJ1ZmZlci5nZXQoKSwgcm90YXRp
b24sIG1pcnJvcmVkKTsKIH0KIAotUmVmUHRyPE1lZGlhU2FtcGxlPiBJbWFnZVRyYW5zZmVyU2Vz
c2lvblZUOjpjcmVhdGVNZWRpYVNhbXBsZShDTVNhbXBsZUJ1ZmZlclJlZiBidWZmZXIsIGNvbnN0
IEludFNpemUmIHNpemUsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uLCBib29s
IG1pcnJvcmVkKQorUmVmUHRyPE1lZGlhU2FtcGxlPiBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpj
cmVhdGVNZWRpYVNhbXBsZShDTVNhbXBsZUJ1ZmZlclJlZiBidWZmZXIsIGNvbnN0IE1lZGlhVGlt
ZSYgc2FtcGxlVGltZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgTWVkaWFTYW1wbGU6OlZpZGVvUm90
YXRpb24gcm90YXRpb24sIGJvb2wgbWlycm9yZWQpCiB7Ci0gICAgYXV0byBzYW1wbGVCdWZmZXIg
PSBjb252ZXJ0Q01TYW1wbGVCdWZmZXIoYnVmZmVyLCBzaXplKTsKKyAgICBhdXRvIHNhbXBsZUJ1
ZmZlciA9IGNvbnZlcnRDTVNhbXBsZUJ1ZmZlcihidWZmZXIsIHNpemUsICZzYW1wbGVUaW1lKTsK
ICAgICBpZiAoIXNhbXBsZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0Rpc3BsYXlD
YXB0dXJlU291cmNlQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vY29jb2EvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTg1N2I0
NGNmZDE1YTNhYjQyZTFhZWI0OWM4Y2FhOGZhZDI1MzQ5ZAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0Rpc3BsYXlDYXB0dXJlU291
cmNlQ29jb2EuY3BwCkBAIC0wLDAgKzEsMzIwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkg
JiYgUExBVEZPUk0oQ09DT0EpCisKKyNpbmNsdWRlICJDR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0
dXJlU291cmNlLmgiCisjaW5jbHVkZSAiSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oIgorI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJNZWRpYVNhbXBsZUFWRk9iakMuaCIKKyNpbmNsdWRl
ICJQaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJj
ZS5oIgorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCIKKyNpbmNsdWRlICJS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJSZWFsdGltZVZpZGVvVXRp
bGl0aWVzLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9TYW1wbGUuaCIKKyNpbmNsdWRlICJSZXBs
YXlLaXRDYXB0dXJlU291cmNlLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDxDb3Jl
TWVkaWEvQ01TeW5jLmg+CisjaW5jbHVkZSA8SU9TdXJmYWNlL0lPU3VyZmFjZVJlZi5oPgorI2lu
Y2x1ZGUgPG1hY2gvbWFjaF90aW1lLmg+CisjaW5jbHVkZSA8cGFsL2F2Zm91bmRhdGlvbi9NZWRp
YVRpbWVBVkZvdW5kYXRpb24uaD4KKyNpbmNsdWRlIDxwYWwvc3BpL2NmL0NvcmVBdWRpb1NQSS5o
PgorI2luY2x1ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CisjaW5jbHVkZSA8cGFs
L3NwaS9jb2NvYS9JT1N1cmZhY2VTUEkuaD4KKyNpbmNsdWRlIDxzeXMvdGltZS5oPgorI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisK
KyNpbmNsdWRlICJDb3JlVmlkZW9Tb2Z0TGluay5oIgorI2luY2x1ZGUgPHBhbC9jZi9Db3JlTWVk
aWFTb2Z0TGluay5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NhcHR1cmVTb3VyY2VPckVy
cm9yIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OmNyZWF0ZShjb25zdCBDYXB0dXJlRGV2aWNl
JiBkZXZpY2UsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzKQoreworICAgIHN3
aXRjaCAoZGV2aWNlLnR5cGUoKSkgeworICAgIGNhc2UgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlw
ZTo6U2NyZWVuOgorI2lmIFBMQVRGT1JNKElPUykKKyAgICAgICAgcmV0dXJuIGNyZWF0ZShSZXBs
YXlLaXRDYXB0dXJlU291cmNlOjpjcmVhdGUoZGV2aWNlLnBlcnNpc3RlbnRJZCgpKSwgZGV2aWNl
LCBjb25zdHJhaW50cyk7CisjZWxzZQorICAgICAgICByZXR1cm4gY3JlYXRlKENHRGlzcGxheVN0
cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2U6OmNyZWF0ZShkZXZpY2UucGVyc2lzdGVudElkKCkpLCBk
ZXZpY2UsIGNvbnN0cmFpbnRzKTsKKyNlbmRpZgorICAgIGNhc2UgQ2FwdHVyZURldmljZTo6RGV2
aWNlVHlwZTo6V2luZG93OgorICAgIGNhc2UgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6TWlj
cm9waG9uZToKKyAgICBjYXNlIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNwZWFrZXI6Cisg
ICAgY2FzZSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpDYW1lcmE6CisgICAgY2FzZSBDYXB0
dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpVbmtub3duOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIHsgfTsKK30KKworQ2Fw
dHVyZVNvdXJjZU9yRXJyb3IgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Y3JlYXRlKEV4cGVj
dGVkPFVuaXF1ZVJlZjxDYXB0dXJlcj4sIFN0cmluZz4mJiBjYXB0dXJlciwgY29uc3QgQ2FwdHVy
ZURldmljZSYgZGV2aWNlLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cykKK3sK
KyAgICBpZiAoIWNhcHR1cmVyLmhhc192YWx1ZSgpKQorICAgICAgICByZXR1cm4gQ2FwdHVyZVNv
dXJjZU9yRXJyb3IgeyBXVEZNb3ZlKGNhcHR1cmVyLmVycm9yKCkpIH07CisKKyAgICBhdXRvIHNv
dXJjZSA9IGFkb3B0UmVmKCpuZXcgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYShXVEZNb3ZlKGNh
cHR1cmVyLnZhbHVlKCkpLCBTdHJpbmcgeyBkZXZpY2UubGFiZWwoKSB9KSk7CisgICAgaWYgKGNv
bnN0cmFpbnRzKSB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gc291cmNlLT5hcHBseUNvbnN0cmFp
bnRzKCpjb25zdHJhaW50cyk7CisgICAgICAgIGlmIChyZXN1bHQpCisgICAgICAgICAgICByZXR1
cm4gV1RGTW92ZShyZXN1bHQudmFsdWUoKS5iYWRDb25zdHJhaW50KTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gQ2FwdHVyZVNvdXJjZU9yRXJyb3IoV1RGTW92ZShzb3VyY2UpKTsKK30KKworRGlzcGxh
eUNhcHR1cmVTb3VyY2VDb2NvYTo6RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYShVbmlxdWVSZWY8
Q2FwdHVyZXI+JiYgY2FwdHVyZXIsIFN0cmluZyYmIG5hbWUpCisgICAgOiBSZWFsdGltZU1lZGlh
U291cmNlKFR5cGU6OlZpZGVvLCBXVEZNb3ZlKG5hbWUpKQorICAgICwgbV9jYXB0dXJlcihXVEZN
b3ZlKGNhcHR1cmVyKSkKKyAgICAsIG1fdGltZXIoUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAm
RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6ZW1pdEZyYW1lKQoreworICAgIGlmIChsb2dnZXJQ
dHIoKSkKKyAgICAgICAgbV9jYXB0dXJlci0+c2V0TG9nZ2VyKGxvZ2dlcigpLCBsb2dJZGVudGlm
aWVyKCkpOworfQorCitEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjp+RGlzcGxheUNhcHR1cmVT
b3VyY2VDb2NvYSgpCit7Cit9CisKK2NvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRp
ZXMmIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OmNhcGFiaWxpdGllcygpCit7CisgICAgaWYg
KCFtX2NhcGFiaWxpdGllcykgeworICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0
aWVzIGNhcGFiaWxpdGllcyhzZXR0aW5ncygpLnN1cHBvcnRlZENvbnN0cmFpbnRzKCkpOworCisg
ICAgICAgIGF1dG8gaW50cmluc2ljU2l6ZSA9IG1fY2FwdHVyZXItPmludHJpbnNpY1NpemUoKTsK
KyAgICAgICAgY2FwYWJpbGl0aWVzLnNldFdpZHRoKENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UoMSwg
aW50cmluc2ljU2l6ZS53aWR0aCgpKSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5zZXRIZWlnaHQo
Q2FwYWJpbGl0eVZhbHVlT3JSYW5nZSgxLCBpbnRyaW5zaWNTaXplLmhlaWdodCgpKSk7CisgICAg
ICAgIGNhcGFiaWxpdGllcy5zZXRGcmFtZVJhdGUoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSguMDEs
IDMwLjApKTsKKworICAgICAgICBtX2NhcGFiaWxpdGllcyA9IFdURk1vdmUoY2FwYWJpbGl0aWVz
KTsKKyAgICB9CisgICAgcmV0dXJuIG1fY2FwYWJpbGl0aWVzLnZhbHVlKCk7Cit9CisKK2NvbnN0
IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6
c2V0dGluZ3MoKQoreworICAgIGlmICghbV9jdXJyZW50U2V0dGluZ3MpIHsKKyAgICAgICAgUmVh
bHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzIHNldHRpbmdzOworICAgICAgICBzZXR0aW5ncy5zZXRG
cmFtZVJhdGUoZnJhbWVSYXRlKCkpOworCisgICAgICAgIGF1dG8gc2l6ZSA9IHRoaXMtPnNpemUo
KTsKKyAgICAgICAgc2V0dGluZ3Muc2V0V2lkdGgoc2l6ZS53aWR0aCgpKTsKKyAgICAgICAgc2V0
dGluZ3Muc2V0SGVpZ2h0KHNpemUuaGVpZ2h0KCkpOworCisgICAgICAgIHNldHRpbmdzLnNldERp
c3BsYXlTdXJmYWNlKG1fY2FwdHVyZXItPnN1cmZhY2VUeXBlKCkpOworICAgICAgICBzZXR0aW5n
cy5zZXRMb2dpY2FsU3VyZmFjZShmYWxzZSk7CisKKyAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJj
ZVN1cHBvcnRlZENvbnN0cmFpbnRzIHN1cHBvcnRlZENvbnN0cmFpbnRzOworICAgICAgICBzdXBw
b3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c0ZyYW1lUmF0ZSh0cnVlKTsKKyAgICAgICAgc3Vw
cG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNXaWR0aCh0cnVlKTsKKyAgICAgICAgc3VwcG9y
dGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNIZWlnaHQodHJ1ZSk7CisgICAgICAgIHN1cHBvcnRl
ZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzRGlzcGxheVN1cmZhY2UodHJ1ZSk7CisgICAgICAgIHN1
cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzTG9naWNhbFN1cmZhY2UodHJ1ZSk7CisKKyAg
ICAgICAgc2V0dGluZ3Muc2V0U3VwcG9ydGVkQ29uc3RyYWludHMoc3VwcG9ydGVkQ29uc3RyYWlu
dHMpOworCisgICAgICAgIG1fY3VycmVudFNldHRpbmdzID0gV1RGTW92ZShzZXR0aW5ncyk7Cisg
ICAgfQorICAgIHJldHVybiBtX2N1cnJlbnRTZXR0aW5ncy52YWx1ZSgpOworfQorCit2b2lkIERp
c3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OnNldHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNldDxSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc+IHNldHRpbmdzKQoreworICAgIGlmIChzZXR0
aW5ncy5jb250YWlucyhSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OkZyYW1lUmF0
ZSkgJiYgbV90aW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3RpbWVyLnN0YXJ0UmVwZWF0aW5n
KDFfcyAvIGZyYW1lUmF0ZSgpKTsKKworICAgIG1fY3VycmVudFNldHRpbmdzID0geyB9OworfQor
Cit2b2lkIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCit7
CisgICAgbV9zdGFydFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKKyAgICBtX3RpbWVyLnN0
YXJ0UmVwZWF0aW5nKDFfcyAvIGZyYW1lUmF0ZSgpKTsKKworICAgIGNvbW1pdENvbmZpZ3VyYXRp
b24oKTsKKyAgICBpZiAoIW1fY2FwdHVyZXItPnN0YXJ0KCkpCisgICAgICAgIGNhcHR1cmVGYWls
ZWQoKTsKK30KKwordm9pZCBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpzdG9wUHJvZHVjaW5n
RGF0YSgpCit7CisgICAgbV90aW1lci5zdG9wKCk7CisgICAgbV9lbGFwc2VkVGltZSArPSBNb25v
dG9uaWNUaW1lOjpub3coKSAtIG1fc3RhcnRUaW1lOworICAgIG1fc3RhcnRUaW1lID0gTW9ub3Rv
bmljVGltZTo6bmFuKCk7CisKKyAgICBtX2NhcHR1cmVyLT5zdG9wKCk7Cit9CisKK1NlY29uZHMg
RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6ZWxhcHNlZFRpbWUoKQoreworICAgIGlmIChzdGQ6
OmlzbmFuKG1fc3RhcnRUaW1lKSkKKyAgICAgICAgcmV0dXJuIG1fZWxhcHNlZFRpbWU7CisKKyAg
ICByZXR1cm4gbV9lbGFwc2VkVGltZSArIChNb25vdG9uaWNUaW1lOjpub3coKSAtIG1fc3RhcnRU
aW1lKTsKK30KKworLy8gV2Uga2VlcCB0aGUgYXNwZWN0IHJhdGlvIG9mIHRoZSBpbnRyaW5zaWMg
c2l6ZSBmb3IgdGhlIGZyYW1lIHNpemUgYXMgZ2V0RGlzcGxheU1lZGlhIGFsbG93cyBtYXggY29u
c3RyYWludHMgb25seS4KK3ZvaWQgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6dXBkYXRlRnJh
bWVTaXplKCkKK3sKKyAgICBhdXRvIGludHJpbnNpY1NpemUgPSB0aGlzLT5pbnRyaW5zaWNTaXpl
KCk7CisKKyAgICBhdXRvIGZyYW1lU2l6ZSA9IHNpemUoKTsKKyAgICBpZiAoIWZyYW1lU2l6ZS5o
ZWlnaHQoKSkKKyAgICAgICAgZnJhbWVTaXplLnNldEhlaWdodChpbnRyaW5zaWNTaXplLmhlaWdo
dCgpKTsKKyAgICBpZiAoIWZyYW1lU2l6ZS53aWR0aCgpKQorICAgICAgICBmcmFtZVNpemUuc2V0
V2lkdGgoaW50cmluc2ljU2l6ZS53aWR0aCgpKTsKKworICAgIGF1dG8gbWF4SGVpZ2h0ID0gc3Rk
OjptaW4oZnJhbWVTaXplLmhlaWdodCgpLCBpbnRyaW5zaWNTaXplLmhlaWdodCgpKTsKKyAgICBh
dXRvIG1heFdpZHRoID0gc3RkOjptaW4oZnJhbWVTaXplLndpZHRoKCksIGludHJpbnNpY1NpemUu
d2lkdGgoKSk7CisKKyAgICBhdXRvIGhlaWdodEZvck1heFdpZHRoID0gbWF4V2lkdGggKiBpbnRy
aW5zaWNTaXplLmhlaWdodCgpIC8gaW50cmluc2ljU2l6ZS53aWR0aCgpOworICAgIGF1dG8gd2lk
dGhGb3JNYXhIZWlnaHQgPSBtYXhIZWlnaHQgKiBpbnRyaW5zaWNTaXplLndpZHRoKCkgLyBpbnRy
aW5zaWNTaXplLmhlaWdodCgpOworCisgICAgaWYgKGhlaWdodEZvck1heFdpZHRoIDw9IG1heEhl
aWdodCkgeworICAgICAgICBzZXRTaXplKHsgbWF4V2lkdGgsIGhlaWdodEZvck1heFdpZHRoIH0p
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmICh3aWR0aEZvck1heEhlaWdodCA8PSBt
YXhXaWR0aCkgeworICAgICAgICBzZXRTaXplKHsgd2lkdGhGb3JNYXhIZWlnaHQsIG1heEhlaWdo
dCB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBzZXRTaXplKGludHJpbnNpY1NpemUp
OworfQorCit2b2lkIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OmVtaXRGcmFtZSgpCit7Cisg
ICAgaWYgKG11dGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV9pbWFnZVRyYW5z
ZmVyU2Vzc2lvbikKKyAgICAgICAgbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbiA9IEltYWdlVHJhbnNm
ZXJTZXNzaW9uVlQ6OmNyZWF0ZShwcmVmZXJlZFBpeGVsQnVmZmVyRm9ybWF0KCkpOworCisgICAg
YXV0byBzYW1wbGVUaW1lID0gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKChlbGFwc2VkVGlt
ZSgpICsgMTAwX21zKS5zZWNvbmRzKCkpOworCisgICAgYXV0byBmcmFtZSA9IG1fY2FwdHVyZXIt
PmdlbmVyYXRlRnJhbWUoKTsKKyAgICBhdXRvIGltYWdlU2l6ZSA9IFdURjo6c3dpdGNoT24oZnJh
bWUsCisgICAgICAgIFtdKFJldGFpblB0cjxJT1N1cmZhY2VSZWY+JiBzdXJmYWNlKSAtPiBJbnRT
aXplIHsKKyAgICAgICAgICAgIGlmICghc3VyZmFjZSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
eyB9OworCisgICAgICAgICAgICByZXR1cm4gSW50U2l6ZShJT1N1cmZhY2VHZXRXaWR0aChzdXJm
YWNlLmdldCgpKSwgSU9TdXJmYWNlR2V0SGVpZ2h0KHN1cmZhY2UuZ2V0KCkpKTsKKyAgICAgICAg
fSwKKyAgICAgICAgW10oUmVmUHRyPE5hdGl2ZUltYWdlPiYgaW1hZ2UpIC0+IEludFNpemUgewor
ICAgICAgICAgICAgaWYgKCFpbWFnZSkKKyAgICAgICAgICAgICAgICByZXR1cm4geyB9OworCisg
ICAgICAgICAgICByZXR1cm4gaW1hZ2UtPnNpemUoKTsKKyAgICAgICAgfSwKKyAgICAgICAgW10o
UmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiYgc2FtcGxlKSAtPiBJbnRTaXplIHsKKyAgICAg
ICAgICAgIGlmICghc2FtcGxlKQorICAgICAgICAgICAgICAgIHJldHVybiB7IH07CisKKyAgICAg
ICAgICAgIENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb24gPSBQQUw6OkNN
U2FtcGxlQnVmZmVyR2V0Rm9ybWF0RGVzY3JpcHRpb24oc2FtcGxlLmdldCgpKTsKKyAgICAgICAg
ICAgIGlmIChQQUw6OkNNRm9ybWF0RGVzY3JpcHRpb25HZXRNZWRpYVR5cGUoZm9ybWF0RGVzY3Jp
cHRpb24pICE9IGtDTU1lZGlhVHlwZV9WaWRlbykKKyAgICAgICAgICAgICAgICByZXR1cm4gSW50
U2l6ZSgpOworCisgICAgICAgICAgICByZXR1cm4gSW50U2l6ZShQQUw6OkNNVmlkZW9Gb3JtYXRE
ZXNjcmlwdGlvbkdldFByZXNlbnRhdGlvbkRpbWVuc2lvbnMoZm9ybWF0RGVzY3JpcHRpb24sIHRy
dWUsIHRydWUpKTsKKyAgICAgICAgfQorICAgICk7CisKKyAgICBpZiAoaW1hZ2VTaXplLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGludHJpbnNpY1NpemUoKSAhPSBpbWFn
ZVNpemUpIHsKKyAgICAgICAgc2V0SW50cmluc2ljU2l6ZShpbWFnZVNpemUpOworICAgICAgICB1
cGRhdGVGcmFtZVNpemUoKTsKKyAgICB9CisKKyAgICBhdXRvIHNhbXBsZSA9IFdURjo6c3dpdGNo
T24oZnJhbWUsCisgICAgICAgIFt0aGlzLCBzYW1wbGVUaW1lXShSZXRhaW5QdHI8SU9TdXJmYWNl
UmVmPiYgc3VyZmFjZSkgLT4gUmVmUHRyPE1lZGlhU2FtcGxlPiB7CisgICAgICAgICAgICBpZiAo
IXN1cmZhY2UpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgICAg
IHJldHVybiBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5jcmVhdGVNZWRpYVNhbXBsZShzdXJmYWNl
LmdldCgpLCBzYW1wbGVUaW1lLCBzaXplKCkpOworICAgICAgICB9LAorICAgICAgICBbdGhpcywg
c2FtcGxlVGltZV0oUmVmUHRyPE5hdGl2ZUltYWdlPiYgaW1hZ2UpIC0+IFJlZlB0cjxNZWRpYVNh
bXBsZT4geworICAgICAgICAgICAgaWYgKCFpbWFnZSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgICAgICAgICAgcmV0dXJuIG1faW1hZ2VUcmFuc2ZlclNlc3Npb24tPmNy
ZWF0ZU1lZGlhU2FtcGxlKGltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIHNhbXBsZVRpbWUs
IHNpemUoKSk7CisgICAgICAgIH0sCisgICAgICAgIFt0aGlzLCBzYW1wbGVUaW1lXShSZXRhaW5Q
dHI8Q01TYW1wbGVCdWZmZXJSZWY+JiBzYW1wbGUpIC0+IFJlZlB0cjxNZWRpYVNhbXBsZT4gewor
ICAgICAgICAgICAgaWYgKCFzYW1wbGUpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICAgICAgICAgIHJldHVybiBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5jcmVhdGVNZWRp
YVNhbXBsZShzYW1wbGUuZ2V0KCksIHNhbXBsZVRpbWUsIHNpemUoKSk7CisgICAgICAgIH0KKyAg
ICApOworCisgICAgaWYgKCFzYW1wbGUpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2aWRlb1NhbXBsZUF2YWlsYWJsZSgqc2Ft
cGxlLmdldCgpKTsKK30KKwordm9pZCBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpzZXRMb2dn
ZXIoY29uc3QgTG9nZ2VyJiBsb2dnZXIsIGNvbnN0IHZvaWQqIGlkZW50aWZpZXIpCit7CisgICAg
UmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0TG9nZ2VyKGxvZ2dlciwgaWRlbnRpZmllcik7CisgICAg
bV9jYXB0dXJlci0+c2V0TG9nZ2VyKGxvZ2dlciwgaWRlbnRpZmllcik7Cit9CisKK3ZvaWQgRGlz
cGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Q2FwdHVyZXI6OnNldExvZ2dlcihjb25zdCBMb2dnZXIm
IG5ld0xvZ2dlciwgY29uc3Qgdm9pZCogbmV3TG9nSWRlbnRpZmllcikKK3sKKyAgICBtX2xvZ2dl
ciA9ICZuZXdMb2dnZXI7CisgICAgbV9sb2dJZGVudGlmaWVyID0gbmV3TG9nSWRlbnRpZmllcjsK
K30KKworV1RGTG9nQ2hhbm5lbCYgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Q2FwdHVyZXI6
OmxvZ0NoYW5uZWwoKSBjb25zdAoreworICAgIHJldHVybiBMb2dXZWJSVEM7Cit9CisKK0Rpc3Bs
YXlDYXB0dXJlU291cmNlQ29jb2E6OkNhcHR1cmVyOjpPYnNlcnZlcjo6fk9ic2VydmVyKCkKK3sK
K30KKwordm9pZCBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpDYXB0dXJlcjo6c2V0T2JzZXJ2
ZXIoT2JzZXJ2ZXIqIG9ic2VydmVyKQoreworICAgIG1fb2JzZXJ2ZXIgPSBXZWFrUHRyIHsgb2Jz
ZXJ2ZXIgfTsKK30KKwordm9pZCBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpDYXB0dXJlcjo6
Y2FwdHVyZXJJc1J1bm5pbmdDaGFuZ2VkKGJvb2wgcnVubmluZykKK3sKKyAgICBpZiAobV9vYnNl
cnZlcikKKyAgICAgICAgbV9vYnNlcnZlci0+Y2FwdHVyZXJJc1J1bm5pbmdDaGFuZ2VkKHJ1bm5p
bmcpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVE
SUFfU1RSRUFNKSAmJiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0Rpc3BsYXlDYXB0dXJl
U291cmNlQ29jb2EuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZTZhOTBhOGMwNTc0NzRiY2U3NDk3NmJkOWRiN2Y4
NjQzNWNlMjFmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vY29jb2EvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oCkBAIC0wLDAgKzEsMTM1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKENPQ09B
KQorCisjaW5jbHVkZSAiQ2FwdHVyZURldmljZS5oIgorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFT
b3VyY2UuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworCit0eXBlZGVmIHN0cnVjdCBD
R0ltYWdlICpDR0ltYWdlUmVmOwordHlwZWRlZiBzdHJ1Y3QgX19DVkJ1ZmZlciAqQ1ZQaXhlbEJ1
ZmZlclJlZjsKK3R5cGVkZWYgc3RydWN0IF9fSU9TdXJmYWNlICpJT1N1cmZhY2VSZWY7CisKK25h
bWVzcGFjZSBXVEYgeworY2xhc3MgTWVkaWFUaW1lOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIENhcHR1cmVEZXZpY2VJbmZvOworY2xhc3MgSW1hZ2VUcmFuc2ZlclNlc3Npb25W
VDsKK2NsYXNzIFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y7CisKK2NsYXNzIERpc3BsYXlDYXB0dXJl
U291cmNlQ29jb2EgZmluYWwgOiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZSB7CitwdWJsaWM6
CisgICAgdXNpbmcgRGlzcGxheUZyYW1lVHlwZSA9IHN0ZDo6dmFyaWFudDxSZWZQdHI8TmF0aXZl
SW1hZ2U+LCBSZXRhaW5QdHI8SU9TdXJmYWNlUmVmPiwgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVy
UmVmPj47CisKKyAgICBjbGFzcyBDYXB0dXJlciA6IHB1YmxpYyBMb2dnZXJIZWxwZXIgeworICAg
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6CisKKyAgICAgICAgY2xh
c3MgT2JzZXJ2ZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8T2JzZXJ2ZXI+IHsKKyAgICAgICAg
cHVibGljOgorICAgICAgICAgICAgdmlydHVhbCB+T2JzZXJ2ZXIoKTsKKworICAgICAgICAgICAg
Ly8gQ2FwdHVyZXIgc3RhdGUgY2hhbmdlcy4KKyAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBjYXB0
dXJlcklzUnVubmluZ0NoYW5nZWQoYm9vbCkgeyB9CisgICAgICAgIH07CisKKyAgICAgICAgdmly
dHVhbCB+Q2FwdHVyZXIoKSA9IGRlZmF1bHQ7CisKKyAgICAgICAgdmlydHVhbCBib29sIHN0YXJ0
KCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpID0gMDsKKyAgICAgICAgdmlydHVh
bCBEaXNwbGF5RnJhbWVUeXBlIGdlbmVyYXRlRnJhbWUoKSA9IDA7CisgICAgICAgIHZpcnR1YWwg
Q2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSBkZXZpY2VUeXBlKCkgY29uc3QgPSAwOworICAgICAg
ICB2aXJ0dWFsIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RGlzcGxheVN1cmZhY2VUeXBl
IHN1cmZhY2VUeXBlKCkgY29uc3QgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29u
ZmlndXJhdGlvbihjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmKSA9IDA7CisgICAg
ICAgIHZpcnR1YWwgSW50U2l6ZSBpbnRyaW5zaWNTaXplKCkgY29uc3QgPSAwOworCisgICAgICAg
IHZpcnR1YWwgdm9pZCBzZXRMb2dnZXIoY29uc3QgTG9nZ2VyJiwgY29uc3Qgdm9pZCopOworICAg
ICAgICBjb25zdCBMb2dnZXIqIGxvZ2dlclB0cigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nZ2VyLmdl
dCgpOyB9CisgICAgICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWwgeyBBU1NF
UlQobV9sb2dnZXIpOyByZXR1cm4gKm1fbG9nZ2VyLmdldCgpOyB9CisgICAgICAgIGNvbnN0IHZv
aWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7
IH0KKyAgICAgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0IGZpbmFsOworCisg
ICAgICAgIHZvaWQgc2V0T2JzZXJ2ZXIoT2JzZXJ2ZXIqKTsKKworICAgIHByb3RlY3RlZDoKKyAg
ICAgICAgdm9pZCBjYXB0dXJlcklzUnVubmluZ0NoYW5nZWQoYm9vbCk7CisKKyAgICBwcml2YXRl
OgorICAgICAgICBXZWFrUHRyPE9ic2VydmVyPiBtX29ic2VydmVyOworICAgICAgICBSZWZQdHI8
Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICAgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlm
aWVyOworICAgIH07CisKKyAgICBzdGF0aWMgQ2FwdHVyZVNvdXJjZU9yRXJyb3IgY3JlYXRlKGNv
bnN0IENhcHR1cmVEZXZpY2UmLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKik7CisgICAgc3RhdGlj
IENhcHR1cmVTb3VyY2VPckVycm9yIGNyZWF0ZShFeHBlY3RlZDxVbmlxdWVSZWY8Q2FwdHVyZXI+
LCBTdHJpbmc+JiYsIGNvbnN0IENhcHR1cmVEZXZpY2UmLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRz
Kik7CisKKyAgICBTZWNvbmRzIGVsYXBzZWRUaW1lKCk7CisgICAgdm9pZCB1cGRhdGVGcmFtZVNp
emUoKTsKKworcHJpdmF0ZToKKyAgICBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hKFVuaXF1ZVJl
ZjxDYXB0dXJlcj4mJiwgU3RyaW5nJiYgbmFtZSk7CisgICAgdmlydHVhbCB+RGlzcGxheUNhcHR1
cmVTb3VyY2VDb2NvYSgpOworCisgICAgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsK
KyAgICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkgZmluYWw7CisgICAgdm9pZCBzZXR0aW5nc0Rp
ZENoYW5nZShPcHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnPikgZmlu
YWw7CisgICAgYm9vbCBpc0NhcHR1cmVTb3VyY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVl
OyB9CisgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0
aWVzKCkgZmluYWw7CisgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0
aW5ncygpIGZpbmFsOworICAgIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgZGV2aWNlVHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY2FwdHVyZXItPmRldmljZVR5cGUoKTsgfQorICAgIHZvaWQgY29t
bWl0Q29uZmlndXJhdGlvbigpIGZpbmFsIHsgbV9jYXB0dXJlci0+Y29tbWl0Q29uZmlndXJhdGlv
bihzZXR0aW5ncygpKTsgfQorCisgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gIkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EiOyB9CisgICAgdm9pZCBz
ZXRMb2dnZXIoY29uc3QgTG9nZ2VyJiwgY29uc3Qgdm9pZCopIGZpbmFsOworCisgICAgdm9pZCBl
bWl0RnJhbWUoKTsKKworICAgIFVuaXF1ZVJlZjxDYXB0dXJlcj4gbV9jYXB0dXJlcjsKKyAgICBz
dGQ6Om9wdGlvbmFsPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IG1fY2FwYWJpbGl0
aWVzOworICAgIHN0ZDo6b3B0aW9uYWw8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzPiBtX2N1
cnJlbnRTZXR0aW5nczsKKyAgICBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWlu
dHMgbV9zdXBwb3J0ZWRDb25zdHJhaW50czsKKworICAgIE1vbm90b25pY1RpbWUgbV9zdGFydFRp
bWUgeyBNb25vdG9uaWNUaW1lOjpuYW4oKSB9OworICAgIFNlY29uZHMgbV9lbGFwc2VkVGltZSB7
IDBfcyB9OworCisgICAgUnVuTG9vcDo6VGltZXI8RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYT4g
bV90aW1lcjsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZVRyYW5zZmVyU2Vzc2lvblZUPiBt
X2ltYWdlVHJhbnNmZXJTZXNzaW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvUmVwbGF5S2l0Q2Fw
dHVyZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL1Jl
cGxheUtpdENhcHR1cmVTb3VyY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZWVlNjYzZDc3ZWRhMWUxYmY3NDBh
ZmZmMjgyZmViOWU2NmUwMTA5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vaW9zL1JlcGxheUtpdENhcHR1cmVTb3VyY2UuaApAQCAtMCwwICsx
LDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShJT1MpCisK
KyNpbmNsdWRlICJEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmgiCisjaW5jbHVkZSAiVGltZXIu
aCIKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfQ0xBU1MgUlBTY3JlZW5SZWNv
cmRlcjsKK09CSkNfQ0xBU1MgV2ViQ29yZVJlcGxheUtpdFNjcmVlblJlY29yZGVySGVscGVyOwor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlcGxheUtpdENhcHR1cmVTb3VyY2UgZmlu
YWwgOiBwdWJsaWMgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Q2FwdHVyZXIsIHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxSZXBsYXlLaXRDYXB0dXJlU291cmNlPiB7CitwdWJsaWM6CisgICAgc3Rh
dGljIEV4cGVjdGVkPFVuaXF1ZVJlZjxEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpDYXB0dXJl
cj4sIFN0cmluZz4gY3JlYXRlKGNvbnN0IFN0cmluZyYpOworCisgICAgUmVwbGF5S2l0Q2FwdHVy
ZVNvdXJjZSgpOworICAgIHZpcnR1YWwgflJlcGxheUtpdENhcHR1cmVTb3VyY2UoKTsKKworICAg
IHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7CisKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxD
YXB0dXJlRGV2aWNlPiBzY3JlZW5DYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChjb25zdCBT
dHJpbmcmKTsKKyAgICBzdGF0aWMgdm9pZCBzY3JlZW5DYXB0dXJlRGV2aWNlcyhWZWN0b3I8Q2Fw
dHVyZURldmljZT4mKTsKKworICAgIHZvaWQgY2FwdHVyZVN0YXRlRGlkQ2hhbmdlKCk7CisKK3By
aXZhdGU6CisKKyAgICAvLyBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpDYXB0dXJlcgorICAg
IGJvb2wgc3RhcnQoKSBmaW5hbDsKKyAgICB2b2lkIHN0b3AoKSBmaW5hbDsKKyAgICBEaXNwbGF5
Q2FwdHVyZVNvdXJjZUNvY29hOjpEaXNwbGF5RnJhbWVUeXBlIGdlbmVyYXRlRnJhbWUoKSBmaW5h
bDsKKyAgICBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIGRldmljZVR5cGUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW47IH0KKyAgICBSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkRpc3BsYXlTdXJmYWNlVHlwZSBzdXJmYWNlVHlwZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RGlzcGxh
eVN1cmZhY2VUeXBlOjpNb25pdG9yOyB9CisgICAgdmlydHVhbCB2b2lkIGNvbW1pdENvbmZpZ3Vy
YXRpb24oY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJikgeyB9CisgICAgdmlydHVh
bCBJbnRTaXplIGludHJpbnNpY1NpemUoKSBjb25zdCB7IHJldHVybiBtX2ludHJpbnNpY1NpemU7
IH0KKworICAgIC8vIExvZ2dlckhlbHBlcgorICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuICJSZXBsYXlLaXRDYXB0dXJlU291cmNlIjsgfQorCisgICAg
dm9pZCBzY3JlZW5SZWNvcmRlckRpZE91dHB1dFZpZGVvU2FtcGxlKFJldGFpblB0cjxDTVNhbXBs
ZUJ1ZmZlclJlZj4mJik7CisgICAgdm9pZCBzdGFydENhcHR1cmVXYXRjaGRvZ1RpbWVyKCk7Cisg
ICAgdm9pZCB2ZXJpZnlDYXB0dXJlSXNBY3RpdmUoKTsKKworICAgIFJldGFpblB0cjxDTVNhbXBs
ZUJ1ZmZlclJlZj4gbV9jdXJyZW50RnJhbWU7CisgICAgUmV0YWluUHRyPFJQU2NyZWVuUmVjb3Jk
ZXI+IG1fc2NyZWVuUmVjb3JkZXI7CisgICAgUmV0YWluUHRyPFdlYkNvcmVSZXBsYXlLaXRTY3Jl
ZW5SZWNvcmRlckhlbHBlcj4gbV9yZWNvcmRlckhlbHBlcjsKKworICAgIFRpbWVyIG1fY2FwdHVy
ZVdhdGNoZG9nVGltZXI7CisgICAgdWludDY0X3QgbV9mcmFtZUNvdW50IHsgMCB9OworICAgIHVp
bnQ2NF90IG1fbGFzdEZyYW1lQ291bnQgeyAwIH07CisgICAgSW50U2l6ZSBtX2ludHJpbnNpY1Np
emU7CisgICAgYm9vbCBtX2lzUnVubmluZyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2ludGVycnVw
dGVkIHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9SZXBsYXlLaXRDYXB0dXJlU291cmNl
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL1JlcGxheUtpdENh
cHR1cmVTb3VyY2UubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTVmNjM1YmYyY2Y4ZWE0YzFmYmVmZTFmODJhOTM4
YmI1ZWM4MzI2MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2lvcy9SZXBsYXlLaXRDYXB0dXJlU291cmNlLm1tCkBAIC0wLDAgKzEsMjgxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlcGxheUtpdENhcHR1cmVTb3VyY2UuaCIKKworI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKElPUykKKworI2ltcG9ydCAiTG9nZ2luZy5o
IgorI2ltcG9ydCAiUmVhbHRpbWVWaWRlb1V0aWxpdGllcy5oIgorI2ltcG9ydCA8d3RmL0Jsb2Nr
UHRyLmg+CisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi9VVUlE
Lmg+CisjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CisKKyNp
bXBvcnQgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgorI2ltcG9ydCA8cGFsL2lvcy9SZXBs
YXlLaXRTb2Z0TGluay5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK0BpbnRlcmZhY2Ug
V2ViQ29yZVJlcGxheUtpdFNjcmVlblJlY29yZGVySGVscGVyIDogTlNPYmplY3QgeworICAgIFdl
YWtQdHI8UmVwbGF5S2l0Q2FwdHVyZVNvdXJjZT4gX2NhbGxiYWNrOworfQorCistIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhDYWxsYmFjazooV2Vha1B0cjxSZXBsYXlLaXRDYXB0dXJlU291cmNlPiYm
KWNhbGxiYWNrOworLSAodm9pZClkaXNjb25uZWN0OworLSAodm9pZClvYnNlcnZlVmFsdWVGb3JL
ZXlQYXRoOmtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeSop
Y2hhbmdlIGNvbnRleHQ6KHZvaWQqKWNvbnRleHQ7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBX
ZWJDb3JlUmVwbGF5S2l0U2NyZWVuUmVjb3JkZXJIZWxwZXIKKy0gKGluc3RhbmNldHlwZSlpbml0
V2l0aENhbGxiYWNrOihXZWFrUHRyPFJlcGxheUtpdENhcHR1cmVTb3VyY2U+JiYpY2FsbGJhY2sK
K3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0
dXJuIHNlbGY7CisKKyAgICBfY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsKKyAgICBbW1BB
TDo6Z2V0UlBTY3JlZW5SZWNvcmRlckNsYXNzKCkgc2hhcmVkUmVjb3JkZXJdIGFkZE9ic2VydmVy
OnNlbGYgZm9yS2V5UGF0aDpAInJlY29yZGluZyIgb3B0aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5n
T3B0aW9uTmV3IGNvbnRleHQ6KHZvaWQgKiluaWxdOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisK
Ky0gKHZvaWQpZGlzY29ubmVjdAoreworICAgIF9jYWxsYmFjayA9IG51bGxwdHI7CisgICAgW1tQ
QUw6OmdldFJQU2NyZWVuUmVjb3JkZXJDbGFzcygpIHNoYXJlZFJlY29yZGVyXSByZW1vdmVPYnNl
cnZlcjpzZWxmIGZvcktleVBhdGg6QCJyZWNvcmRpbmciXTsKK30KKworLSAodm9pZClvYnNlcnZl
VmFsdWVGb3JLZXlQYXRoOmtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGlj
dGlvbmFyeSopY2hhbmdlIGNvbnRleHQ6KHZvaWQqKWNvbnRleHQKK3sKKyAgICBVTlVTRURfUEFS
QU0ob2JqZWN0KTsKKyAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CisKKyAgICBpZiAoIV9jYWxs
YmFjaykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWQgbmV3VmFsdWUgPSBbY2hhbmdlIHZhbHVl
Rm9yS2V5Ok5TS2V5VmFsdWVDaGFuZ2VOZXdLZXldOworICAgIGJvb2wgd2lsbENoYW5nZSA9IFtb
Y2hhbmdlIHZhbHVlRm9yS2V5Ok5TS2V5VmFsdWVDaGFuZ2VOb3RpZmljYXRpb25Jc1ByaW9yS2V5
XSBib29sVmFsdWVdOworCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgaWYgKF9jYWxs
YmFjay0+bG9nZ2VyUHRyKCkpIHsKKyAgICAgICAgYXV0byBpZGVudGlmaWVyID0gTG9nZ2VyOjpM
b2dTaXRlSWRlbnRpZmllcigiUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZSIsICJvYnNlcnZlVmFsdWVG
b3JLZXlQYXRoIiwgX2NhbGxiYWNrLT5sb2dJZGVudGlmaWVyKCkpOworICAgICAgICBSZXRhaW5Q
dHI8TlNTdHJpbmc+IHZhbHVlU3RyaW5nID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0
V2l0aEZvcm1hdDpAIiVAIiwgbmV3VmFsdWVdKTsKKyAgICAgICAgX2NhbGxiYWNrLT5sb2dnZXIo
KS5sb2dBbHdheXMoX2NhbGxiYWNrLT5sb2dDaGFubmVsKCksIGlkZW50aWZpZXIsIHdpbGxDaGFu
Z2UgPyAid2lsbCIgOiAiZGlkIiwgIiBjaGFuZ2UgJyIsIFtrZXlQYXRoIFVURjhTdHJpbmddLCAi
JyB0byAiLCBbdmFsdWVTdHJpbmcuZ2V0KCkgVVRGOFN0cmluZ10pOworICAgIH0KKyNlbmRpZgor
CisgICAgaWYgKHdpbGxDaGFuZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChba2V5UGF0
aCBpc0VxdWFsVG9TdHJpbmc6QCJyZWNvcmRpbmciXSkKKyAgICAgICAgX2NhbGxiYWNrLT5jYXB0
dXJlU3RhdGVEaWRDaGFuZ2UoKTsKK30KK0BlbmQKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCiti
b29sIFJlcGxheUtpdENhcHR1cmVTb3VyY2U6OmlzQXZhaWxhYmxlKCkKK3sKKyAgICByZXR1cm4g
W1BBTDo6Z2V0UlBTY3JlZW5SZWNvcmRlckNsYXNzKCkgc2hhcmVkUmVjb3JkZXJdLmlzQXZhaWxh
YmxlOworfQorCitFeHBlY3RlZDxVbmlxdWVSZWY8RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6
Q2FwdHVyZXI+LCBTdHJpbmc+IFJlcGxheUtpdENhcHR1cmVTb3VyY2U6OmNyZWF0ZShjb25zdCBT
dHJpbmcmKQoreworICAgIGlmICghaXNBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKCJTY3JlZW4gY2FwdHVyZSB1bmF2YWlsYWJsZSJfcyk7CisKKyAgICByZXR1cm4g
VW5pcXVlUmVmPERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OkNhcHR1cmVyPihtYWtlVW5pcXVl
UmVmPFJlcGxheUtpdENhcHR1cmVTb3VyY2U+KCkpOworfQorCitSZXBsYXlLaXRDYXB0dXJlU291
cmNlOjpSZXBsYXlLaXRDYXB0dXJlU291cmNlKCkKKyAgICA6IG1fY2FwdHVyZVdhdGNoZG9nVGlt
ZXIoKnRoaXMsICZSZXBsYXlLaXRDYXB0dXJlU291cmNlOjp2ZXJpZnlDYXB0dXJlSXNBY3RpdmUp
Cit7Cit9CisKK1JlcGxheUtpdENhcHR1cmVTb3VyY2U6On5SZXBsYXlLaXRDYXB0dXJlU291cmNl
KCkKK3sKKyAgICBbbV9yZWNvcmRlckhlbHBlciBkaXNjb25uZWN0XTsKKyAgICBzdG9wKCk7Cisg
ICAgbV9jdXJyZW50RnJhbWUgPSBudWxscHRyOworfQorCitib29sIFJlcGxheUtpdENhcHR1cmVT
b3VyY2U6OnN0YXJ0KCkKK3sKKyAgICBBU1NFUlQoaXNBdmFpbGFibGUoKSk7CisKKyAgICBhdXRv
IGlkZW50aWZpZXIgPSBMT0dJREVOVElGSUVSOworICAgIEFMV0FZU19MT0dfSUYobG9nZ2VyUHRy
KCksIGlkZW50aWZpZXIpOworCisgICAgYXV0byAqc2NyZWVuUmVjb3JkZXIgPSBbUEFMOjpnZXRS
UFNjcmVlblJlY29yZGVyQ2xhc3MoKSBzaGFyZWRSZWNvcmRlcl07CisgICAgaWYgKHNjcmVlblJl
Y29yZGVyLnJlY29yZGluZykKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBGSVhNRTog
QWRkIHN1cHBvcnQgZm9yIGNvbmN1cnJlbnQgYXVkaW8gY2FwdHVyZS4KKyAgICBbc2NyZWVuUmVj
b3JkZXIgc2V0TWljcm9waG9uZUVuYWJsZWQ6Tk9dOworCisgICAgaWYgKCFtX3JlY29yZGVySGVs
cGVyKQorICAgICAgICBtX3JlY29yZGVySGVscGVyID0gKFtbV2ViQ29yZVJlcGxheUtpdFNjcmVl
blJlY29yZGVySGVscGVyIGFsbG9jXSBpbml0V2l0aENhbGxiYWNrOnRoaXNdKTsKKworICAgIGF1
dG8gY2FwdHVyZUhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0
ciB7ICp0aGlzIH0sIGlkZW50aWZpZXJdKENNU2FtcGxlQnVmZmVyUmVmIF9Ob25udWxsIHNhbXBs
ZUJ1ZmZlciwgUlBTYW1wbGVCdWZmZXJUeXBlIGJ1ZmZlclR5cGUsIE5TRXJyb3IgKiBfTnVsbGFi
bGUgZXJyb3IpIHsKKworICAgICAgICBpZiAoYnVmZmVyVHlwZSAhPSBSUFNhbXBsZUJ1ZmZlclR5
cGVWaWRlbykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBFUlJPUl9MT0dfSUYoZXJy
b3IgJiYgbG9nZ2VyUHRyKCksIGlkZW50aWZpZXIsICJzdGFydENhcHR1cmVXaXRoSGFuZGxlciBm
YWlsZWQgIiwgW2Vycm9yIGxvY2FsaXplZERlc2NyaXB0aW9uXS5VVEY4U3RyaW5nKTsKKworICAg
ICAgICArK21fZnJhbWVDb3VudDsKKworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W3dlYWtUaGlzLCBzYW1wbGVCdWZmZXIgPSByZXRhaW5QdHIoc2FtcGxlQnVmZmVyKV0oKSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgICAgICB3ZWFrVGhpcy0+c2NyZWVuUmVjb3JkZXJEaWRPdXRwdXRWaWRlb1Nh
bXBsZShXVEZNb3ZlKHNhbXBsZUJ1ZmZlcikpOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAg
IGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoW3RoaXMsIHdlYWtUaGlzID0g
V2Vha1B0ciB7ICp0aGlzIH0sIGlkZW50aWZpZXJdKE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3Ip
IHsKKyAgICAgICAgLy8gRklYTUU6IEl0IHNob3VsZCBiZSBzYWZlIHRvIGNhbGwgYHZpZGVvU2Ft
cGxlQXZhaWxhYmxlYCBmcm9tIGFueSB0aHJlYWQuIFRlc3QgdGhpcyBhbmQgZ2V0IHJpZCBvZiB0
aGlzIG1haW4gdGhyZWFkIGhvcC4KKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0
aGlzLCB3ZWFrVGhpcywgZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpLCBpZGVudGlmaWVyXSgpIG11
dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhZXJyb3IpCisgICAgICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBFUlJPUl9MT0dfSUYobG9nZ2VyUHRyKCksIGlk
ZW50aWZpZXIsICJjb21wbGV0aW9uSGFuZGxlciBmYWlsZWQgIiwgW2Vycm9yIGxvY2FsaXplZERl
c2NyaXB0aW9uXS5VVEY4U3RyaW5nKTsKKyAgICAgICAgICAgIHdlYWtUaGlzLT5zdG9wKCk7Cisg
ICAgICAgIH0pOworICAgIH0pOworCisgICAgW3NjcmVlblJlY29yZGVyIHN0YXJ0Q2FwdHVyZVdp
dGhIYW5kbGVyOmNhcHR1cmVIYW5kbGVyLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRp
b25IYW5kbGVyLmdldCgpXTsKKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFJlcGxheUtp
dENhcHR1cmVTb3VyY2U6OnNjcmVlblJlY29yZGVyRGlkT3V0cHV0VmlkZW9TYW1wbGUoUmV0YWlu
UHRyPENNU2FtcGxlQnVmZmVyUmVmPiYmIHNhbXBsZUJ1ZmZlcikKK3sKKyAgICBtX2N1cnJlbnRG
cmFtZSA9IHNhbXBsZUJ1ZmZlci5nZXQoKTsKKyAgICBtX2ludHJpbnNpY1NpemUgPSBJbnRTaXpl
KFBBTDo6Q01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uR2V0UHJlc2VudGF0aW9uRGltZW5zaW9ucyhQ
QUw6OkNNU2FtcGxlQnVmZmVyR2V0Rm9ybWF0RGVzY3JpcHRpb24obV9jdXJyZW50RnJhbWUuZ2V0
KCkpLCB0cnVlLCB0cnVlKSk7Cit9CisKK3ZvaWQgUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZTo6Y2Fw
dHVyZVN0YXRlRGlkQ2hhbmdlKCkKK3sKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Ro
aXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGlkZW50aWZpZXIgPSBMT0dJREVOVElG
SUVSXSgpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIGJvb2wgaXNSZWNvcmRpbmcgPSAhIVtbUEFMOjpnZXRSUFNjcmVlblJl
Y29yZGVyQ2xhc3MoKSBzaGFyZWRSZWNvcmRlcl0gaXNSZWNvcmRpbmddOworICAgICAgICBpZiAo
bV9pc1J1bm5pbmcgPT0gKGlzUmVjb3JkaW5nICYmICFtX2ludGVycnVwdGVkKSkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBtX2lzUnVubmluZyA9IGlzUmVjb3JkaW5nICYmICFtX2lu
dGVycnVwdGVkOworICAgICAgICBBTFdBWVNfTE9HX0lGKGxvZ2dlclB0cigpLCBpZGVudGlmaWVy
LCBtX2lzUnVubmluZyk7CisgICAgICAgIGNhcHR1cmVySXNSdW5uaW5nQ2hhbmdlZChtX2lzUnVu
bmluZyk7CisgICAgfSk7Cit9CisKK3ZvaWQgUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZTo6c3RvcCgp
Cit7CisgICAgYXV0byBpZGVudGlmaWVyID0gTE9HSURFTlRJRklFUjsKKyAgICBBTFdBWVNfTE9H
X0lGKGxvZ2dlclB0cigpLCBpZGVudGlmaWVyKTsKKyAgICBtX2NhcHR1cmVXYXRjaGRvZ1RpbWVy
LnN0b3AoKTsKKyAgICBtX2ludGVycnVwdGVkID0gZmFsc2U7CisgICAgbV9pc1J1bm5pbmcgPSBm
YWxzZTsKKworICAgIGF1dG8gKnNjcmVlblJlY29yZGVyID0gW1BBTDo6Z2V0UlBTY3JlZW5SZWNv
cmRlckNsYXNzKCkgc2hhcmVkUmVjb3JkZXJdOworICAgIGlmIChzY3JlZW5SZWNvcmRlci5yZWNv
cmRpbmcpIHsKKyAgICAgICAgW3NjcmVlblJlY29yZGVyIHN0b3BDYXB0dXJlV2l0aEhhbmRsZXI6
XihOU0Vycm9yICogX051bGxhYmxlIGVycm9yKSB7CisgICAgICAgICAgICBFUlJPUl9MT0dfSUYo
ZXJyb3IgJiYgbG9nZ2VyUHRyKCksIGlkZW50aWZpZXIsICJzdGFydENhcHR1cmVXaXRoSGFuZGxl
ciBmYWlsZWQgIiwgW2Vycm9yIGxvY2FsaXplZERlc2NyaXB0aW9uXS5VVEY4U3RyaW5nKTsKKyAg
ICAgICAgfV07CisgICAgfQorfQorCitEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpEaXNwbGF5
RnJhbWVUeXBlIFJlcGxheUtpdENhcHR1cmVTb3VyY2U6OmdlbmVyYXRlRnJhbWUoKQoreworICAg
IHJldHVybiBtX2N1cnJlbnRGcmFtZTsKK30KKwordm9pZCBSZXBsYXlLaXRDYXB0dXJlU291cmNl
Ojp2ZXJpZnlDYXB0dXJlSXNBY3RpdmUoKQoreworICAgIEFTU0VSVChtX2lzUnVubmluZyB8fCBt
X2ludGVycnVwdGVkKTsKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBMT0dJREVOVElGSUVSOworICAg
IGlmIChtX2xhc3RGcmFtZUNvdW50ICE9IG1fZnJhbWVDb3VudCkgeworICAgICAgICBtX2xhc3RG
cmFtZUNvdW50ID0gbV9mcmFtZUNvdW50OworICAgICAgICBpZiAobV9pbnRlcnJ1cHRlZCkgewor
ICAgICAgICAgICAgQUxXQVlTX0xPR19JRihsb2dnZXJQdHIoKSwgaWRlbnRpZmllciwgImZyYW1l
IHJlY2VpdmVkIGFmdGVyIGludGVycnVwdGlvbiwgdW5tdXRpbmciKTsKKyAgICAgICAgICAgIG1f
aW50ZXJydXB0ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIGNhcHR1cmVTdGF0ZURpZENoYW5nZSgp
OworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBTFdBWVNfTE9HX0lG
KGxvZ2dlclB0cigpLCBpZGVudGlmaWVyLCAibm8gZnJhbWUgcmVjZWl2ZWQgaW4gIiwgc3RhdGlj
X2Nhc3Q8aW50PihtX2NhcHR1cmVXYXRjaGRvZ1RpbWVyLnJlcGVhdEludGVydmFsKCkudmFsdWUo
KSksICIgc2Vjb25kcywgbXV0aW5nIik7CisgICAgbV9pbnRlcnJ1cHRlZCA9IHRydWU7CisgICAg
Y2FwdHVyZVN0YXRlRGlkQ2hhbmdlKCk7Cit9CisKK3ZvaWQgUmVwbGF5S2l0Q2FwdHVyZVNvdXJj
ZTo6c3RhcnRDYXB0dXJlV2F0Y2hkb2dUaW1lcigpCit7CisgICAgc3RhdGljIGNvbnN0ZXhwciBT
ZWNvbmRzIHZlcmlmeUNhcHR1cmVJbnRlcnZhbCA9IDJfczsKKyAgICBpZiAobV9jYXB0dXJlV2F0
Y2hkb2dUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NhcHR1cmVX
YXRjaGRvZ1RpbWVyLnN0YXJ0UmVwZWF0aW5nKHZlcmlmeUNhcHR1cmVJbnRlcnZhbCk7CisgICAg
bV9sYXN0RnJhbWVDb3VudCA9IG1fZnJhbWVDb3VudDsKK30KKworc3RhdGljIFN0cmluZyBzY3Jl
ZW5EZXZpY2VVVUlEKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzY3Jl
ZW5JRCA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKKyAgICByZXR1cm4gc2NyZWVuSUQ7
Cit9CisKK3N0YXRpYyBDYXB0dXJlRGV2aWNlJiBzY3JlZW5EZXZpY2UoKQoreworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxDYXB0dXJlRGV2aWNlPiBkZXZpY2UgPSB7IHNjcmVlbkRldmljZVVV
SUQoKSwgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuLCBtYWtlU3RyaW5nKCJTY3Jl
ZW4gMSIpLCBlbXB0eVN0cmluZygpLCB0cnVlIH07CisgICAgcmV0dXJuIGRldmljZTsKK30KKwor
c3RkOjpvcHRpb25hbDxDYXB0dXJlRGV2aWNlPiBSZXBsYXlLaXRDYXB0dXJlU291cmNlOjpzY3Jl
ZW5DYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChjb25zdCBTdHJpbmcmIGRpc3BsYXlJRCkK
K3sKKyAgICBpZiAoIWlzQXZhaWxhYmxlKCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
V2ViUlRDLCAiUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZTo6c2NyZWVuQ2FwdHVyZURldmljZVdpdGhQ
ZXJzaXN0ZW50SUQ6IHNjcmVlbiBjYXB0dXJlIHVuYXZhaWxhYmxlIik7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgfQorCisgICAgaWYgKGRpc3BsYXlJRCAhPSBzY3JlZW5EZXZp
Y2VVVUlEKCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAiUmVwbGF5S2l0
Q2FwdHVyZVNvdXJjZTo6c2NyZWVuQ2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQ6IGludmFs
aWQgZGlzcGxheSBJRCIpOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKwor
ICAgIHJldHVybiBzY3JlZW5EZXZpY2UoKTsKK30KKwordm9pZCBSZXBsYXlLaXRDYXB0dXJlU291
cmNlOjpzY3JlZW5DYXB0dXJlRGV2aWNlcyhWZWN0b3I8Q2FwdHVyZURldmljZT4mIGRpc3BsYXlz
KQoreworICAgIGlmIChpc0F2YWlsYWJsZSgpKQorICAgICAgICBkaXNwbGF5cy5hcHBlbmQoc2Ny
ZWVuRGV2aWNlKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNw
bGF5U3RyZWFtQ2FwdHVyZVNvdXJjZS5jcHAKaW5kZXggNWJlYjlmYTIxOTk1N2FmZmRiZTNiZWY3
YjA2NzA1ZTI1YTM3ZGE4Ni4uZjNiYmI3YzU4YjNmM2ZlNTQwOGFmMGEyMTM4ZDJkMGY4MjAyMWU1
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NH
RGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9DR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlLmNwcApAQCAt
NzEsOSArNzEsOSBAQCB2b2lkIENHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2U6OnN0b3AoKQog
ICAgIG1faXNSdW5uaW5nID0gZmFsc2U7CiB9CiAKLURpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpE
aXNwbGF5RnJhbWVUeXBlIENHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2U6OmdlbmVyYXRlRnJh
bWUoKQorRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6RGlzcGxheUZyYW1lVHlwZSBDR0Rpc3Bs
YXlTdHJlYW1DYXB0dXJlU291cmNlOjpnZW5lcmF0ZUZyYW1lKCkKIHsKLSAgICByZXR1cm4gUmV0
YWluUHRyIHsgbV9jdXJyZW50RnJhbWUuaW9TdXJmYWNlKCkgfTsKKyAgICByZXR1cm4gbV9jdXJy
ZW50RnJhbWU7CiB9CiAKIGJvb2wgQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6c3RhcnRE
aXNwbGF5U3RyZWFtKCkKQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIENHRGlzcGxheVN0cmVhbUNh
cHR1cmVTb3VyY2U6OmRpc3BsYXlSZWNvbmZpZ3VyYXRpb25DYWxsQmFjayhDR0RpcmVjdERpc3Bs
YQogICAgICAgICByZWludGVycHJldF9jYXN0PENHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2Ug
Kj4odXNlckluZm8pLT5kaXNwbGF5V2FzUmVjb25maWd1cmVkKGRpc3BsYXksIGZsYWdzKTsKIH0K
IAotdm9pZCBDR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlOjpuZXdGcmFtZShDR0Rpc3BsYXlT
dHJlYW1GcmFtZVN0YXR1cyBzdGF0dXMsIERpc3BsYXlTdXJmYWNlJiYgbmV3RnJhbWUpCit2b2lk
IENHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2U6Om5ld0ZyYW1lKENHRGlzcGxheVN0cmVhbUZy
YW1lU3RhdHVzIHN0YXR1cywgUmV0YWluUHRyPElPU3VyZmFjZVJlZj4mJiBuZXdGcmFtZSkKIHsK
ICAgICBzd2l0Y2ggKHN0YXR1cykgewogICAgIGNhc2Uga0NHRGlzcGxheVN0cmVhbUZyYW1lU3Rh
dHVzRnJhbWVDb21wbGV0ZToKQEAgLTE3MSw3ICsxNzEsNyBAQCBDR0Rpc3BsYXlTdHJlYW1GcmFt
ZUF2YWlsYWJsZUhhbmRsZXIgQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6ZnJhbWVBdmFp
bGFibAogICAgICAgICBpZiAoIXJlY3RzIHx8ICFjb3VudCkKICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzLCBzdGF0dXMsIGZy
YW1lID0gRGlzcGxheVN1cmZhY2UgeyBmcmFtZVN1cmZhY2UgfV0oKSBtdXRhYmxlIHsKKyAgICAg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcywgc3RhdHVzLCBmcmFtZSA9IHJl
dGFpblB0cihmcmFtZVN1cmZhY2UpXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCF3ZWFr
VGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB3ZWFrVGhpcy0+bmV3
RnJhbWUoc3RhdHVzLCBXVEZNb3ZlKGZyYW1lKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NHRGlzcGxheVN0cmVh
bUNhcHR1cmVTb3VyY2UuaAppbmRleCBhMTkwMzhkY2FhZDRhMWZiODMyNTc4MDY5NTZhZDA0NTEx
Y2YyYzY0Li41YTEzMTY2YmE0ZjNlY2FmYThiZTc1ZTQ3MzM1ODAwYjQ5ZTFlMzg3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3Ry
ZWFtQ2FwdHVyZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9DR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlLmgKQEAgLTI3LDggKzI3LDcgQEAK
IAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKE1BQykKIAotI2luY2x1ZGUg
IkRpc3BsYXlDYXB0dXJlU291cmNlTWFjLmgiCi0jaW5jbHVkZSAiSU9TdXJmYWNlLmgiCisjaW5j
bHVkZSAiRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oIgogI2luY2x1ZGUgPENvcmVHcmFwaGlj
cy9DR0Rpc3BsYXlDb25maWd1cmF0aW9uLmg+CiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHRGlz
cGxheVN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9CbG9ja1B0ci5oPgpAQCAtNDAsMTAgKzM5LDEw
IEBAIHR5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyICpDTVNhbXBsZUJ1ZmZlclJl
ZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDR0Rpc3BsYXlTdHJlYW1DYXB0dXJl
U291cmNlIDogcHVibGljIERpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpDYXB0dXJlciwgcHVibGlj
IENhbk1ha2VXZWFrUHRyPENHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2U+IHsKK2NsYXNzIENH
RGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2UgOiBwdWJsaWMgRGlzcGxheUNhcHR1cmVTb3VyY2VD
b2NvYTo6Q2FwdHVyZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDR0Rpc3BsYXlTdHJlYW1DYXB0
dXJlU291cmNlPiB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgQ0dEaXNwbGF5U3RyZWFtQ2FwdHVy
ZVNvdXJjZSgpID0gZGVmYXVsdDsKLSAgICB+Q0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZSgp
OworICAgIHZpcnR1YWwgfkNHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2UoKTsKIAogcHJvdGVj
dGVkOgogICAgIHVzaW5nIEZyYW1lQXZhaWxhYmxlQ2FsbGJhY2sgPSB2b2lkICheKShDR0Rpc3Bs
YXlTdHJlYW1GcmFtZVN0YXR1cywgdWludDY0X3QsIElPU3VyZmFjZVJlZiwgQ0dEaXNwbGF5U3Ry
ZWFtVXBkYXRlUmVmKTsKQEAgLTYwLDUxICs1OSwxOSBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgog
ICAgIHN0YXRpYyB2b2lkIGRpc3BsYXlSZWNvbmZpZ3VyYXRpb25DYWxsQmFjayhDR0RpcmVjdERp
c3BsYXlJRCwgQ0dEaXNwbGF5Q2hhbmdlU3VtbWFyeUZsYWdzLCB2b2lkKik7CiAKLSAgICAvLyBE
aXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6Q2FwdHVyZXIKKyAgICAvLyBEaXNwbGF5Q2FwdHVyZVNv
dXJjZUNvY29hOjpDYXB0dXJlcgogICAgIGJvb2wgc3RhcnQoKSBmaW5hbDsKICAgICB2b2lkIHN0
b3AoKSBmaW5hbDsKLSAgICBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6RGlzcGxheUZyYW1lVHlw
ZSBnZW5lcmF0ZUZyYW1lKCkgZmluYWw7CisgICAgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6
RGlzcGxheUZyYW1lVHlwZSBnZW5lcmF0ZUZyYW1lKCkgZmluYWw7CiAgICAgdm9pZCBjb21taXRD
b25maWd1cmF0aW9uKGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYpIGZpbmFsOwog
CiAgICAgdm9pZCBkaXNwbGF5V2FzUmVjb25maWd1cmVkKENHRGlyZWN0RGlzcGxheUlELCBDR0Rp
c3BsYXlDaGFuZ2VTdW1tYXJ5RmxhZ3MpOwogICAgIGJvb2wgc3RhcnREaXNwbGF5U3RyZWFtKCk7
CiAgICAgRnJhbWVBdmFpbGFibGVDYWxsYmFjayBmcmFtZUF2YWlsYWJsZUhhbmRsZXIoKTsKIAot
ICAgIGNsYXNzIERpc3BsYXlTdXJmYWNlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIERpc3BsYXlT
dXJmYWNlKCkgPSBkZWZhdWx0OwotICAgICAgICBleHBsaWNpdCBEaXNwbGF5U3VyZmFjZShJT1N1
cmZhY2VSZWYgc3VyZmFjZSkKLSAgICAgICAgICAgIDogbV9zdXJmYWNlKHN1cmZhY2UpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGlmIChtX3N1cmZhY2UpCi0gICAgICAgICAgICAgICAgSU9TdXJm
YWNlSW5jcmVtZW50VXNlQ291bnQobV9zdXJmYWNlLmdldCgpKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIH5EaXNwbGF5U3VyZmFjZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX3N1cmZh
Y2UpCi0gICAgICAgICAgICAgICAgSU9TdXJmYWNlRGVjcmVtZW50VXNlQ291bnQobV9zdXJmYWNl
LmdldCgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIERpc3BsYXlTdXJmYWNlJiBvcGVyYXRvcj0o
SU9TdXJmYWNlUmVmIHN1cmZhY2UpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX3N1cmZh
Y2UpCi0gICAgICAgICAgICAgICAgSU9TdXJmYWNlRGVjcmVtZW50VXNlQ291bnQobV9zdXJmYWNl
LmdldCgpKTsKLSAgICAgICAgICAgIGlmIChzdXJmYWNlKQotICAgICAgICAgICAgICAgIElPU3Vy
ZmFjZUluY3JlbWVudFVzZUNvdW50KHN1cmZhY2UpOwotICAgICAgICAgICAgbV9zdXJmYWNlID0g
c3VyZmFjZTsKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgfQotCi0gICAgICAg
IElPU3VyZmFjZVJlZiBpb1N1cmZhY2UoKSBjb25zdCB7IHJldHVybiBtX3N1cmZhY2UuZ2V0KCk7
IH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIFJldGFpblB0cjxJT1N1cmZhY2VSZWY+IG1fc3Vy
ZmFjZTsKLSAgICB9OwotCi0gICAgdm9pZCBuZXdGcmFtZShDR0Rpc3BsYXlTdHJlYW1GcmFtZVN0
YXR1cywgRGlzcGxheVN1cmZhY2UmJik7Ci0KLSAgICBEaXNwbGF5U3VyZmFjZSBtX2N1cnJlbnRG
cmFtZTsKKyAgICB2b2lkIG5ld0ZyYW1lKENHRGlzcGxheVN0cmVhbUZyYW1lU3RhdHVzLCBSZXRh
aW5QdHI8SU9TdXJmYWNlUmVmPiYmKTsKKworICAgIFJldGFpblB0cjxJT1N1cmZhY2VSZWY+IG1f
Y3VycmVudEZyYW1lOwogICAgIFJldGFpblB0cjxDR0Rpc3BsYXlTdHJlYW1SZWY+IG1fZGlzcGxh
eVN0cmVhbTsKICAgICBPU09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiBtX2NhcHR1cmVRdWV1
ZTsKICAgICBCbG9ja1B0cjx2b2lkKENHRGlzcGxheVN0cmVhbUZyYW1lU3RhdHVzLCB1aW50NjRf
dCwgSU9TdXJmYWNlUmVmLCBDR0Rpc3BsYXlTdHJlYW1VcGRhdGVSZWYpPiBtX2ZyYW1lQXZhaWxh
YmxlSGFuZGxlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9DR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVy
ZVNvdXJjZS5oCmluZGV4IGUxNjA0NDA3NWRiNDI5YzdjMDY1MTgzNWNhODMzZjU5YjNkYmNiNDYu
LmViMWJmNzkzZGExM2IwZjZlNWZmMGFiMTVmMjIyNjAzN2M1ODVjMGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR0Rpc3BsYXlTdHJlYW1TY3Jl
ZW5DYXB0dXJlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0NHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2UuaApAQCAtNDEsNyArNDEs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENHRGlzcGxheVN0cmVhbVNjcmVlbkNh
cHR1cmVTb3VyY2UgZmluYWwgOiBwdWJsaWMgQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZSB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIEV4cGVjdGVkPFVuaXF1ZVJlZjxEaXNwbGF5Q2FwdHVyZVNv
dXJjZU1hYzo6Q2FwdHVyZXI+LCBTdHJpbmc+IGNyZWF0ZShjb25zdCBTdHJpbmcmKTsKKyAgICBz
dGF0aWMgRXhwZWN0ZWQ8VW5pcXVlUmVmPERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OkNhcHR1
cmVyPiwgU3RyaW5nPiBjcmVhdGUoY29uc3QgU3RyaW5nJik7CiAKICAgICBleHBsaWNpdCBDR0Rp
c3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlKHVpbnQzMl90KTsKICAgICB+Q0dEaXNwbGF5
U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZSgpID0gZGVmYXVsdDsKQEAgLTUxLDcgKzUxLDcgQEAg
cHVibGljOgogCiBwcml2YXRlOgogCi0gICAgLy8gRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OkNh
cHR1cmVyCisgICAgLy8gRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Q2FwdHVyZXIKICAgICBD
YXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIGRldmljZVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW47IH0KICAgICBSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3M6OkRpc3BsYXlTdXJmYWNlVHlwZSBzdXJmYWNlVHlwZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RGlzcGxheVN1cmZhY2VU
eXBlOjpNb25pdG9yOyB9CiAgICAgSW50U2l6ZSBpbnRyaW5zaWNTaXplKCkgY29uc3QgZmluYWw7
CkBAIC02MywzOCArNjMsNiBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxDR0Rpc3BsYXlTdHJl
YW1SZWY+IGNyZWF0ZURpc3BsYXlTdHJlYW0oRnJhbWVBdmFpbGFibGVDYWxsYmFjaywgZGlzcGF0
Y2hfcXVldWVfdCkgZmluYWw7CiAgICAgYm9vbCBjaGVja0Rpc3BsYXlTdHJlYW0oKSBmaW5hbDsK
IAotICAgIGNsYXNzIERpc3BsYXlTdXJmYWNlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIERpc3Bs
YXlTdXJmYWNlKCkgPSBkZWZhdWx0OwotICAgICAgICBleHBsaWNpdCBEaXNwbGF5U3VyZmFjZShJ
T1N1cmZhY2VSZWYgc3VyZmFjZSkKLSAgICAgICAgICAgIDogbV9zdXJmYWNlKHN1cmZhY2UpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX3N1cmZhY2UpCi0gICAgICAgICAgICAgICAgSU9T
dXJmYWNlSW5jcmVtZW50VXNlQ291bnQobV9zdXJmYWNlLmdldCgpKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIH5EaXNwbGF5U3VyZmFjZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX3N1
cmZhY2UpCi0gICAgICAgICAgICAgICAgSU9TdXJmYWNlRGVjcmVtZW50VXNlQ291bnQobV9zdXJm
YWNlLmdldCgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIERpc3BsYXlTdXJmYWNlJiBvcGVyYXRv
cj0oSU9TdXJmYWNlUmVmIHN1cmZhY2UpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX3N1
cmZhY2UpCi0gICAgICAgICAgICAgICAgSU9TdXJmYWNlRGVjcmVtZW50VXNlQ291bnQobV9zdXJm
YWNlLmdldCgpKTsKLSAgICAgICAgICAgIGlmIChzdXJmYWNlKQotICAgICAgICAgICAgICAgIElP
U3VyZmFjZUluY3JlbWVudFVzZUNvdW50KHN1cmZhY2UpOwotICAgICAgICAgICAgbV9zdXJmYWNl
ID0gc3VyZmFjZTsKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgfQotCi0gICAg
ICAgIElPU3VyZmFjZVJlZiBpb1N1cmZhY2UoKSBjb25zdCB7IHJldHVybiBtX3N1cmZhY2UuZ2V0
KCk7IH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIFJldGFpblB0cjxJT1N1cmZhY2VSZWY+IG1f
c3VyZmFjZTsKLSAgICB9OwotCiAgICAgUmV0YWluUHRyPENHRGlzcGxheVN0cmVhbVJlZj4gbV9k
aXNwbGF5U3RyZWFtOwogCiAgICAgdWludDMyX3QgbV9kaXNwbGF5SUQgeyAwIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3Ry
ZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9DR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlLm1tCmluZGV4IGI3
Yzc0NWRkZGYxM2Q1YjdmNjM2YWU5ZWViNGI1YzgyNDg0NDBlMzYuLjliZGE3MjRkNTM2OTllN2Jl
ZTg0NDE3YmVhOTkxOTkwNzk1Yjk5NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9DR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR0Rpc3BsYXlT
dHJlYW1TY3JlZW5DYXB0dXJlU291cmNlLm1tCkBAIC03NSw3ICs3NSw3IEBAIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPENHRGlyZWN0RGlzcGxheUlEPiB1cGRhdGVEaXNwbGF5SUQoQ0dEaXJlY3REaXNw
bGF5SUQgZGlzcGxhCiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotRXhwZWN0ZWQ8VW5p
cXVlUmVmPERpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpDYXB0dXJlcj4sIFN0cmluZz4gQ0dEaXNw
bGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgZGV2aWNl
SUQpCitFeHBlY3RlZDxVbmlxdWVSZWY8RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Q2FwdHVy
ZXI+LCBTdHJpbmc+IENHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2U6OmNyZWF0ZShj
b25zdCBTdHJpbmcmIGRldmljZUlEKQogewogICAgIGF1dG8gZGlzcGxheUlEID0gcGFyc2VJbnRl
Z2VyPHVpbnQzMl90PihkZXZpY2VJRCk7CiAgICAgaWYgKCFkaXNwbGF5SUQpCkBAIC04NSw3ICs4
NSw3IEBAIEV4cGVjdGVkPFVuaXF1ZVJlZjxEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6Q2FwdHVy
ZXI+LCBTdHJpbmc+IENHRGlzcGxheVN0cmVhbVNjCiAgICAgaWYgKCFhY3R1YWxEaXNwbGF5SUQp
CiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiSW52YWxpZCBkaXNwbGF5IElEIl9zKTsK
IAotICAgIHJldHVybiBVbmlxdWVSZWY8RGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OkNhcHR1cmVy
PihtYWtlVW5pcXVlUmVmPENHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2U+KGFjdHVh
bERpc3BsYXlJRC52YWx1ZSgpKSk7CisgICAgcmV0dXJuIFVuaXF1ZVJlZjxEaXNwbGF5Q2FwdHVy
ZVNvdXJjZUNvY29hOjpDYXB0dXJlcj4obWFrZVVuaXF1ZVJlZjxDR0Rpc3BsYXlTdHJlYW1TY3Jl
ZW5DYXB0dXJlU291cmNlPihhY3R1YWxEaXNwbGF5SUQudmFsdWUoKSkpOwogfQogCiBDR0Rpc3Bs
YXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlOjpDR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJl
U291cmNlKHVpbnQzMl90IGRpc3BsYXlJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZU1hbmFnZXJDb2NvYS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVNYW5h
Z2VyQ29jb2EuY3BwCmluZGV4IDg4NTU0YmFiNGMyMDFiNDIzZjI1MTFjMjI1NWQyM2Q4OTQ5YjJi
ZWMuLjE5N2M2NmY2OTcxNDk4Mjk0OGQ2YjRmZjBmYzM0OWNjMmM5NGYzN2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZU1h
bmFnZXJDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0Rpc3BsYXlDYXB0dXJlTWFuYWdlckNvY29hLmNwcApAQCAtMzQsMTAgKzM0LDExIEBACiAK
ICNpZiBQTEFURk9STShNQUMpCiAjaW5jbHVkZSAiQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVy
ZVNvdXJjZS5oIgotI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR0RpcmVjdERpc3BsYXkuaD4KICNl
bmRpZgogCi0jaW5jbHVkZSAiQ29yZVZpZGVvU29mdExpbmsuaCIKKyNpZiBQTEFURk9STShJT1Mp
CisjaW5jbHVkZSAiUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZS5oIgorI2VuZGlmCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtNjEsNiArNjIsOCBAQCB2b2lkIERpc3BsYXlDYXB0dXJlTWFuYWdl
ckNvY29hOjp1cGRhdGVEaXNwbGF5Q2FwdHVyZURldmljZXMoKQogewogI2lmIFBMQVRGT1JNKE1B
QykKICAgICBDR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlOjpzY3JlZW5DYXB0dXJl
RGV2aWNlcyhtX2RldmljZXMpOworI2VsaWYgUExBVEZPUk0oSU9TKQorICAgIFJlcGxheUtpdENh
cHR1cmVTb3VyY2U6OnNjcmVlbkNhcHR1cmVEZXZpY2VzKG1fZGV2aWNlcyk7CiAjZW5kaWYKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rp
c3BsYXlDYXB0dXJlU291cmNlTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGUyNTY2ZTEzZjc3OThmNGJjMjdhMjU2ODA0ODlmMzJmMDU4ODhkZGEuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlTWFjLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDI3NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
RGlzcGxheUNhcHR1cmVTb3VyY2VNYWMuaCIKLQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYm
IFBMQVRGT1JNKE1BQykKLQotI2luY2x1ZGUgIkNHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVT
b3VyY2UuaCIKLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiTWVkaWFTYW1wbGVBVkZP
YmpDLmgiCi0jaW5jbHVkZSAiUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oIgotI2luY2x1ZGUgIlJl
YWx0aW1lTWVkaWFTb3VyY2UuaCIKLSNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
LmgiCi0jaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmgiCi0jaW5jbHVkZSAi
UmVhbHRpbWVWaWRlb1V0aWxpdGllcy5oIgotI2luY2x1ZGUgIlJlbW90ZVZpZGVvU2FtcGxlLmgi
Ci0jaW5jbHVkZSAiVGltZXIuaCIKLSNpbmNsdWRlIDxDb3JlTWVkaWEvQ01TeW5jLmg+Ci0jaW5j
bHVkZSA8bWFjaC9tYWNoX3RpbWUuaD4KLSNpbmNsdWRlIDxwYWwvYXZmb3VuZGF0aW9uL01lZGlh
VGltZUFWRm91bmRhdGlvbi5oPgotI2luY2x1ZGUgPHBhbC9zcGkvY2YvQ29yZUF1ZGlvU1BJLmg+
Ci0jaW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KLSNpbmNsdWRlIDxwYWwv
c3BpL2NvY29hL0lPU3VyZmFjZVNQSS5oPgotI2luY2x1ZGUgPHN5cy90aW1lLmg+Ci0jaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLQot
I2luY2x1ZGUgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCi0jaW5jbHVkZSA8cGFsL2NmL0NvcmVNZWRp
YVNvZnRMaW5rLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotQ2FwdHVyZVNvdXJjZU9yRXJy
b3IgRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OmNyZWF0ZShjb25zdCBDYXB0dXJlRGV2aWNlJiBk
ZXZpY2UsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzKQotewotICAgIHN3aXRj
aCAoZGV2aWNlLnR5cGUoKSkgewotICAgIGNhc2UgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6
U2NyZWVuOgotICAgICAgICByZXR1cm4gY3JlYXRlKENHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1
cmVTb3VyY2U6OmNyZWF0ZShkZXZpY2UucGVyc2lzdGVudElkKCkpLCBkZXZpY2UsIGNvbnN0cmFp
bnRzKTsKLSAgICBjYXNlIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OldpbmRvdzoKLSAgICBj
YXNlIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6Ok1pY3JvcGhvbmU6Ci0gICAgY2FzZSBDYXB0
dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTcGVha2VyOgotICAgIGNhc2UgQ2FwdHVyZURldmljZTo6
RGV2aWNlVHlwZTo6Q2FtZXJhOgotICAgIGNhc2UgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6
VW5rbm93bjoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIH0KLQotICAgIHJldHVybiB7IH07Ci19Ci0KLUNhcHR1cmVTb3VyY2VPckVycm9yIERpc3Bs
YXlDYXB0dXJlU291cmNlTWFjOjpjcmVhdGUoRXhwZWN0ZWQ8VW5pcXVlUmVmPENhcHR1cmVyPiwg
U3RyaW5nPiYmIGNhcHR1cmVyLCBjb25zdCBDYXB0dXJlRGV2aWNlJiBkZXZpY2UsIGNvbnN0IE1l
ZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzKQotewotICAgIGlmICghY2FwdHVyZXIuaGFzX3Zh
bHVlKCkpCi0gICAgICAgIHJldHVybiBDYXB0dXJlU291cmNlT3JFcnJvciB7IFdURk1vdmUoY2Fw
dHVyZXIuZXJyb3IoKSkgfTsKLQotICAgIGF1dG8gc291cmNlID0gYWRvcHRSZWYoKm5ldyBEaXNw
bGF5Q2FwdHVyZVNvdXJjZU1hYyhXVEZNb3ZlKGNhcHR1cmVyLnZhbHVlKCkpLCBTdHJpbmcgeyBk
ZXZpY2UubGFiZWwoKSB9KSk7Ci0gICAgaWYgKGNvbnN0cmFpbnRzKSB7Ci0gICAgICAgIGF1dG8g
cmVzdWx0ID0gc291cmNlLT5hcHBseUNvbnN0cmFpbnRzKCpjb25zdHJhaW50cyk7Ci0gICAgICAg
IGlmIChyZXN1bHQpCi0gICAgICAgICAgICByZXR1cm4gV1RGTW92ZShyZXN1bHQudmFsdWUoKS5i
YWRDb25zdHJhaW50KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gQ2FwdHVyZVNvdXJjZU9yRXJyb3Io
V1RGTW92ZShzb3VyY2UpKTsKLX0KLQotRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OkRpc3BsYXlD
YXB0dXJlU291cmNlTWFjKFVuaXF1ZVJlZjxDYXB0dXJlcj4mJiBjYXB0dXJlciwgU3RyaW5nJiYg
bmFtZSkKLSAgICA6IFJlYWx0aW1lTWVkaWFTb3VyY2UoVHlwZTo6VmlkZW8sIFdURk1vdmUobmFt
ZSkpCi0gICAgLCBtX2NhcHR1cmVyKFdURk1vdmUoY2FwdHVyZXIpKQotICAgICwgbV90aW1lcihS
dW5Mb29wOjpjdXJyZW50KCksIHRoaXMsICZEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6ZW1pdEZy
YW1lKQotewotfQotCi1EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6fkRpc3BsYXlDYXB0dXJlU291
cmNlTWFjKCkKLXsKLX0KLQotY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYg
RGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OmNhcGFiaWxpdGllcygpCi17Ci0gICAgaWYgKCFtX2Nh
cGFiaWxpdGllcykgewotICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzIGNh
cGFiaWxpdGllcyhzZXR0aW5ncygpLnN1cHBvcnRlZENvbnN0cmFpbnRzKCkpOwotCi0gICAgICAg
IGF1dG8gaW50cmluc2ljU2l6ZSA9IG1fY2FwdHVyZXItPmludHJpbnNpY1NpemUoKTsKLSAgICAg
ICAgY2FwYWJpbGl0aWVzLnNldFdpZHRoKENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UoMSwgaW50cmlu
c2ljU2l6ZS53aWR0aCgpKSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5zZXRIZWlnaHQoQ2FwYWJp
bGl0eVZhbHVlT3JSYW5nZSgxLCBpbnRyaW5zaWNTaXplLmhlaWdodCgpKSk7Ci0gICAgICAgIGNh
cGFiaWxpdGllcy5zZXRGcmFtZVJhdGUoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSguMDEsIDMwLjAp
KTsKLQotICAgICAgICBtX2NhcGFiaWxpdGllcyA9IFdURk1vdmUoY2FwYWJpbGl0aWVzKTsKLSAg
ICB9Ci0gICAgcmV0dXJuIG1fY2FwYWJpbGl0aWVzLnZhbHVlKCk7Ci19Ci0KLWNvbnN0IFJlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OnNldHRpbmdz
KCkKLXsKLSAgICBpZiAoIW1fY3VycmVudFNldHRpbmdzKSB7Ci0gICAgICAgIFJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5ncyBzZXR0aW5nczsKLSAgICAgICAgc2V0dGluZ3Muc2V0RnJhbWVSYXRl
KGZyYW1lUmF0ZSgpKTsKLQotICAgICAgICBhdXRvIHNpemUgPSB0aGlzLT5zaXplKCk7Ci0gICAg
ICAgIHNldHRpbmdzLnNldFdpZHRoKHNpemUud2lkdGgoKSk7Ci0gICAgICAgIHNldHRpbmdzLnNl
dEhlaWdodChzaXplLmhlaWdodCgpKTsKLQotICAgICAgICBzZXR0aW5ncy5zZXREaXNwbGF5U3Vy
ZmFjZShtX2NhcHR1cmVyLT5zdXJmYWNlVHlwZSgpKTsKLSAgICAgICAgc2V0dGluZ3Muc2V0TG9n
aWNhbFN1cmZhY2UoZmFsc2UpOwotCi0gICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0
ZWRDb25zdHJhaW50cyBzdXBwb3J0ZWRDb25zdHJhaW50czsKLSAgICAgICAgc3VwcG9ydGVkQ29u
c3RyYWludHMuc2V0U3VwcG9ydHNGcmFtZVJhdGUodHJ1ZSk7Ci0gICAgICAgIHN1cHBvcnRlZENv
bnN0cmFpbnRzLnNldFN1cHBvcnRzV2lkdGgodHJ1ZSk7Ci0gICAgICAgIHN1cHBvcnRlZENvbnN0
cmFpbnRzLnNldFN1cHBvcnRzSGVpZ2h0KHRydWUpOwotICAgICAgICBzdXBwb3J0ZWRDb25zdHJh
aW50cy5zZXRTdXBwb3J0c0Rpc3BsYXlTdXJmYWNlKHRydWUpOwotICAgICAgICBzdXBwb3J0ZWRD
b25zdHJhaW50cy5zZXRTdXBwb3J0c0xvZ2ljYWxTdXJmYWNlKHRydWUpOwotCi0gICAgICAgIHNl
dHRpbmdzLnNldFN1cHBvcnRlZENvbnN0cmFpbnRzKHN1cHBvcnRlZENvbnN0cmFpbnRzKTsKLQot
ICAgICAgICBtX2N1cnJlbnRTZXR0aW5ncyA9IFdURk1vdmUoc2V0dGluZ3MpOwotICAgIH0KLSAg
ICByZXR1cm4gbV9jdXJyZW50U2V0dGluZ3MudmFsdWUoKTsKLX0KLQotdm9pZCBEaXNwbGF5Q2Fw
dHVyZVNvdXJjZU1hYzo6c2V0dGluZ3NEaWRDaGFuZ2UoT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5nczo6RmxhZz4gc2V0dGluZ3MpCi17Ci0gICAgaWYgKHNldHRpbmdzLmNvbnRh
aW5zKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6RnJhbWVSYXRlKSAmJiBtX3Rp
bWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIG1fdGltZXIuc3RhcnRSZXBlYXRpbmcoMV9zIC8gZnJh
bWVSYXRlKCkpOwotCi0gICAgbV9jdXJyZW50U2V0dGluZ3MgPSB7IH07Ci19Ci0KLXZvaWQgRGlz
cGxheUNhcHR1cmVTb3VyY2VNYWM6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCi17Ci0gICAgbV9zdGFy
dFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKLSAgICBtX3RpbWVyLnN0YXJ0UmVwZWF0aW5n
KDFfcyAvIGZyYW1lUmF0ZSgpKTsKLQotICAgIGNvbW1pdENvbmZpZ3VyYXRpb24oKTsKLSAgICBp
ZiAoIW1fY2FwdHVyZXItPnN0YXJ0KCkpCi0gICAgICAgIGNhcHR1cmVGYWlsZWQoKTsKLX0KLQot
dm9pZCBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6c3RvcFByb2R1Y2luZ0RhdGEoKQotewotICAg
IG1fdGltZXIuc3RvcCgpOwotICAgIG1fZWxhcHNlZFRpbWUgKz0gTW9ub3RvbmljVGltZTo6bm93
KCkgLSBtX3N0YXJ0VGltZTsKLSAgICBtX3N0YXJ0VGltZSA9IE1vbm90b25pY1RpbWU6Om5hbigp
OwotCi0gICAgbV9jYXB0dXJlci0+c3RvcCgpOwotfQotCi1TZWNvbmRzIERpc3BsYXlDYXB0dXJl
U291cmNlTWFjOjplbGFwc2VkVGltZSgpCi17Ci0gICAgaWYgKHN0ZDo6aXNuYW4obV9zdGFydFRp
bWUpKQotICAgICAgICByZXR1cm4gbV9lbGFwc2VkVGltZTsKLQotICAgIHJldHVybiBtX2VsYXBz
ZWRUaW1lICsgKE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV9zdGFydFRpbWUpOwotfQotCi0vLyBX
ZSBrZWVwIHRoZSBhc3BlY3QgcmF0aW8gb2YgdGhlIGludHJpbnNpYyBzaXplIGZvciB0aGUgZnJh
bWUgc2l6ZSBhcyBnZXREaXNwbGF5TWVkaWEgYWxsb3dzIG1heCBjb25zdHJhaW50cyBvbmx5Lgot
dm9pZCBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6dXBkYXRlRnJhbWVTaXplKCkKLXsKLSAgICBh
dXRvIGludHJpbnNpY1NpemUgPSB0aGlzLT5pbnRyaW5zaWNTaXplKCk7Ci0KLSAgICBhdXRvIGZy
YW1lU2l6ZSA9IHNpemUoKTsKLSAgICBpZiAoIWZyYW1lU2l6ZS5oZWlnaHQoKSkKLSAgICAgICAg
ZnJhbWVTaXplLnNldEhlaWdodChpbnRyaW5zaWNTaXplLmhlaWdodCgpKTsKLSAgICBpZiAoIWZy
YW1lU2l6ZS53aWR0aCgpKQotICAgICAgICBmcmFtZVNpemUuc2V0V2lkdGgoaW50cmluc2ljU2l6
ZS53aWR0aCgpKTsKLQotICAgIGF1dG8gbWF4SGVpZ2h0ID0gc3RkOjptaW4oZnJhbWVTaXplLmhl
aWdodCgpLCBpbnRyaW5zaWNTaXplLmhlaWdodCgpKTsKLSAgICBhdXRvIG1heFdpZHRoID0gc3Rk
OjptaW4oZnJhbWVTaXplLndpZHRoKCksIGludHJpbnNpY1NpemUud2lkdGgoKSk7Ci0KLSAgICBh
dXRvIGhlaWdodEZvck1heFdpZHRoID0gbWF4V2lkdGggKiBpbnRyaW5zaWNTaXplLmhlaWdodCgp
IC8gaW50cmluc2ljU2l6ZS53aWR0aCgpOwotICAgIGF1dG8gd2lkdGhGb3JNYXhIZWlnaHQgPSBt
YXhIZWlnaHQgKiBpbnRyaW5zaWNTaXplLndpZHRoKCkgLyBpbnRyaW5zaWNTaXplLmhlaWdodCgp
OwotCi0gICAgaWYgKGhlaWdodEZvck1heFdpZHRoIDw9IG1heEhlaWdodCkgewotICAgICAgICBz
ZXRTaXplKHsgbWF4V2lkdGgsIGhlaWdodEZvck1heFdpZHRoIH0pOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIGlmICh3aWR0aEZvck1heEhlaWdodCA8PSBtYXhXaWR0aCkgewotICAgICAg
ICBzZXRTaXplKHsgd2lkdGhGb3JNYXhIZWlnaHQsIG1heEhlaWdodCB9KTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBzZXRTaXplKGludHJpbnNpY1NpemUpOwotfQotCi12b2lkIERpc3Bs
YXlDYXB0dXJlU291cmNlTWFjOjplbWl0RnJhbWUoKQotewotICAgIGlmIChtdXRlZCgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW1faW1hZ2VUcmFuc2ZlclNlc3Npb24pCi0gICAgICAg
IG1faW1hZ2VUcmFuc2ZlclNlc3Npb24gPSBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpjcmVhdGUo
cHJlZmVyZWRQaXhlbEJ1ZmZlckZvcm1hdCgpKTsKLQotICAgIGF1dG8gc2FtcGxlVGltZSA9IE1l
ZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZSgoZWxhcHNlZFRpbWUoKSArIDEwMF9tcykuc2Vjb25k
cygpKTsKLQotICAgIGF1dG8gZnJhbWUgPSBtX2NhcHR1cmVyLT5nZW5lcmF0ZUZyYW1lKCk7Ci0g
ICAgYXV0byBpbWFnZVNpemUgPSBXVEY6OnN3aXRjaE9uKGZyYW1lLAotICAgICAgICBbXShSZXRh
aW5QdHI8SU9TdXJmYWNlUmVmPiBzdXJmYWNlKSAtPiBJbnRTaXplIHsKLSAgICAgICAgICAgIGlm
ICghc3VyZmFjZSkKLSAgICAgICAgICAgICAgICByZXR1cm4geyB9OwotCi0gICAgICAgICAgICBy
ZXR1cm4gSW50U2l6ZShJT1N1cmZhY2VHZXRXaWR0aChzdXJmYWNlLmdldCgpKSwgSU9TdXJmYWNl
R2V0SGVpZ2h0KHN1cmZhY2UuZ2V0KCkpKTsKLSAgICAgICAgfSwKLSAgICAgICAgW10oUmVmUHRy
PE5hdGl2ZUltYWdlPiBpbWFnZSkgLT4gSW50U2l6ZSB7Ci0gICAgICAgICAgICBpZiAoIWltYWdl
KQotICAgICAgICAgICAgICAgIHJldHVybiB7IH07Ci0KLSAgICAgICAgICAgIHJldHVybiBpbWFn
ZS0+c2l6ZSgpOwotICAgICAgICB9Ci0gICAgKTsKLQotICAgIGlmIChpbWFnZVNpemUuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoaW50cmluc2ljU2l6ZSgpICE9IGltYWdl
U2l6ZSkgewotICAgICAgICBzZXRJbnRyaW5zaWNTaXplKGltYWdlU2l6ZSk7Ci0gICAgICAgIHVw
ZGF0ZUZyYW1lU2l6ZSgpOwotICAgIH0KLQotICAgIGF1dG8gc2FtcGxlID0gV1RGOjpzd2l0Y2hP
bihmcmFtZSwKLSAgICAgICAgW3RoaXMsIHNhbXBsZVRpbWVdKFJldGFpblB0cjxJT1N1cmZhY2VS
ZWY+IHN1cmZhY2UpIC0+IFJlZlB0cjxNZWRpYVNhbXBsZT4gewotICAgICAgICAgICAgaWYgKCFz
dXJmYWNlKQotICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgICAgICAgICBy
ZXR1cm4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3JlYXRlTWVkaWFTYW1wbGUoc3VyZmFjZS5n
ZXQoKSwgc2FtcGxlVGltZSwgc2l6ZSgpKTsKLSAgICAgICAgfSwKLSAgICAgICAgW3RoaXMsIHNh
bXBsZVRpbWVdKFJlZlB0cjxOYXRpdmVJbWFnZT4gaW1hZ2UpIC0+IFJlZlB0cjxNZWRpYVNhbXBs
ZT4gewotICAgICAgICAgICAgaWYgKCFpbWFnZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLQotICAgICAgICAgICAgcmV0dXJuIG1faW1hZ2VUcmFuc2ZlclNlc3Npb24tPmNyZWF0
ZU1lZGlhU2FtcGxlKGltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIHNhbXBsZVRpbWUsIHNp
emUoKSk7Ci0gICAgICAgIH0KLSAgICApOwotCi0gICAgaWYgKCFzYW1wbGUpIHsKLSAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB2aWRl
b1NhbXBsZUF2YWlsYWJsZSgqc2FtcGxlLmdldCgpKTsKLX0KLQotdm9pZCBEaXNwbGF5Q2FwdHVy
ZVNvdXJjZU1hYzo6Q2FwdHVyZXI6OnNldExvZ2dlcihjb25zdCBMb2dnZXImIG5ld0xvZ2dlciwg
Y29uc3Qgdm9pZCogbmV3TG9nSWRlbnRpZmllcikKLXsKLSAgICBtX2xvZ2dlciA9ICZuZXdMb2dn
ZXI7Ci0gICAgbV9sb2dJZGVudGlmaWVyID0gbmV3TG9nSWRlbnRpZmllcjsKLX0KLQotV1RGTG9n
Q2hhbm5lbCYgRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OkNhcHR1cmVyOjpsb2dDaGFubmVsKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gTG9nV2ViUlRDOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShNQUMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxh
eUNhcHR1cmVTb3VyY2VNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBmOTNlNzgzOGI5YzQ3NzM5MmZiNzM4YTE0YjhkNTE0YTc4NmVhMTBjLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5oCisrKyAvZGV2L251
bGwKQEAgLTEsMTE5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkg
JiYgUExBVEZPUk0oTUFDKQotCi0jaW5jbHVkZSAiQ2FwdHVyZURldmljZS5oIgotI2luY2x1ZGUg
IkltYWdlVHJhbnNmZXJTZXNzaW9uVlQuaCIKLSNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNl
LmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
Ci0jaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0j
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLXR5cGVkZWYgc3RydWN0IENHSW1hZ2Ug
KkNHSW1hZ2VSZWY7Ci10eXBlZGVmIHN0cnVjdCBfX0NWQnVmZmVyICpDVlBpeGVsQnVmZmVyUmVm
OwotdHlwZWRlZiBzdHJ1Y3QgX19JT1N1cmZhY2UgKklPU3VyZmFjZVJlZjsKLQotbmFtZXNwYWNl
IFdURiB7Ci1jbGFzcyBNZWRpYVRpbWU7Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xh
c3MgQ2FwdHVyZURldmljZUluZm87Ci1jbGFzcyBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOwotY2xh
c3MgUGl4ZWxCdWZmZXJDb25mb3JtZXJDVjsKLQotY2xhc3MgRGlzcGxheUNhcHR1cmVTb3VyY2VN
YWMgZmluYWwgOiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZSB7Ci1wdWJsaWM6Ci0gICAgdXNp
bmcgRGlzcGxheUZyYW1lVHlwZSA9IHN0ZDo6dmFyaWFudDxSZWZQdHI8TmF0aXZlSW1hZ2U+LCBS
ZXRhaW5QdHI8SU9TdXJmYWNlUmVmPj47Ci0KLSAgICBjbGFzcyBDYXB0dXJlciA6IHB1YmxpYyBM
b2dnZXJIZWxwZXIgewotICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICBwdWJs
aWM6Ci0gICAgICAgIHZpcnR1YWwgfkNhcHR1cmVyKCkgPSBkZWZhdWx0OwotCi0gICAgICAgIHZp
cnR1YWwgYm9vbCBzdGFydCgpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHN0b3AoKSA9IDA7
Ci0gICAgICAgIHZpcnR1YWwgRGlzcGxheUZyYW1lVHlwZSBnZW5lcmF0ZUZyYW1lKCkgPSAwOwot
ICAgICAgICB2aXJ0dWFsIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgZGV2aWNlVHlwZSgpIGNv
bnN0ID0gMDsKLSAgICAgICAgdmlydHVhbCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkRp
c3BsYXlTdXJmYWNlVHlwZSBzdXJmYWNlVHlwZSgpIGNvbnN0ID0gMDsKLSAgICAgICAgdmlydHVh
bCB2b2lkIGNvbW1pdENvbmZpZ3VyYXRpb24oY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzJikgPSAwOwotICAgICAgICB2aXJ0dWFsIEludFNpemUgaW50cmluc2ljU2l6ZSgpIGNvbnN0
ID0gMDsKLQotICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0TG9nZ2VyKGNvbnN0IExvZ2dlciYsIGNv
bnN0IHZvaWQqKTsKLSAgICAgICAgY29uc3QgTG9nZ2VyKiBsb2dnZXJQdHIoKSBjb25zdCB7IHJl
dHVybiBtX2xvZ2dlci5nZXQoKTsgfQotICAgICAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNv
bnN0IGZpbmFsIHsgQVNTRVJUKG1fbG9nZ2VyKTsgcmV0dXJuICptX2xvZ2dlci5nZXQoKTsgfQot
ICAgICAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9sb2dJZGVudGlmaWVyOyB9Ci0gICAgICAgIFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSBj
b25zdCBmaW5hbDsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZlB0cjxjb25zdCBMb2dnZXI+
IG1fbG9nZ2VyOwotICAgICAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7Ci0gICAgfTsK
LQotICAgIHN0YXRpYyBDYXB0dXJlU291cmNlT3JFcnJvciBjcmVhdGUoY29uc3QgQ2FwdHVyZURl
dmljZSYsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqKTsKLSAgICBzdGF0aWMgQ2FwdHVyZVNvdXJj
ZU9yRXJyb3IgY3JlYXRlKEV4cGVjdGVkPFVuaXF1ZVJlZjxDYXB0dXJlcj4sIFN0cmluZz4mJiwg
Y29uc3QgQ2FwdHVyZURldmljZSYsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqKTsKLQotICAgIFNl
Y29uZHMgZWxhcHNlZFRpbWUoKTsKLSAgICB2b2lkIHVwZGF0ZUZyYW1lU2l6ZSgpOwotCi1wcml2
YXRlOgotICAgIERpc3BsYXlDYXB0dXJlU291cmNlTWFjKFVuaXF1ZVJlZjxDYXB0dXJlcj4mJiwg
U3RyaW5nJiYgbmFtZSk7Ci0gICAgfkRpc3BsYXlDYXB0dXJlU291cmNlTWFjKCk7Ci0KLSAgICB2
b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgpIGZpbmFsOwotICAgIHZvaWQgc3RvcFByb2R1Y2luZ0Rh
dGEoKSBmaW5hbDsKLSAgICB2b2lkIHNldHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNldDxSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc+KSBmaW5hbDsKLSAgICBib29sIGlzQ2FwdHVyZVNv
dXJjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICBjb25zdCBSZWFsdGltZU1l
ZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBmaW5hbDsKLSAgICBjb25zdCBS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgZmluYWw7Ci0gICAgQ2FwdHVy
ZURldmljZTo6RGV2aWNlVHlwZSBkZXZpY2VUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9jYXB0dXJl
ci0+ZGV2aWNlVHlwZSgpOyB9Ci0gICAgdm9pZCBjb21taXRDb25maWd1cmF0aW9uKCkgZmluYWwg
eyBtX2NhcHR1cmVyLT5jb21taXRDb25maWd1cmF0aW9uKHNldHRpbmdzKCkpOyB9Ci0KLSAgICBj
b25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiRGlzcGxheUNh
cHR1cmVTb3VyY2VNYWMiOyB9Ci0KLSAgICB2b2lkIGVtaXRGcmFtZSgpOwotCi0gICAgVW5pcXVl
UmVmPENhcHR1cmVyPiBtX2NhcHR1cmVyOwotICAgIHN0ZDo6b3B0aW9uYWw8UmVhbHRpbWVNZWRp
YVNvdXJjZUNhcGFiaWxpdGllcz4gbV9jYXBhYmlsaXRpZXM7Ci0gICAgc3RkOjpvcHRpb25hbDxS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M+IG1fY3VycmVudFNldHRpbmdzOwotICAgIFJlYWx0
aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyBtX3N1cHBvcnRlZENvbnN0cmFpbnRz
OwotCi0gICAgTW9ub3RvbmljVGltZSBtX3N0YXJ0VGltZSB7IE1vbm90b25pY1RpbWU6Om5hbigp
IH07Ci0gICAgU2Vjb25kcyBtX2VsYXBzZWRUaW1lIHsgMF9zIH07Ci0KLSAgICBSdW5Mb29wOjpU
aW1lcjxEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYz4gbV90aW1lcjsKLQotICAgIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZVRyYW5zZmVyU2Vzc2lvblZUPiBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uOwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVB
TSkgJiYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXJNYWMuY3BwCmluZGV4IGNlNDkwOTEwM2U2Y2NjOGNhMjQ0YWU3YmY1ODljOTUzMjU0MTlhOTku
LmE0MThhNjA1MDJiN2NmYTdmMzczNDlmMTExOWM3YTFlMjY0NWIxYWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNp
bmNsdWRlICJBVlZpZGVvQ2FwdHVyZVNvdXJjZS5oIgogI2luY2x1ZGUgIkNvcmVBdWRpb0NhcHR1
cmVTb3VyY2UuaCIKICNpbmNsdWRlICJEaXNwbGF5Q2FwdHVyZU1hbmFnZXJDb2NvYS5oIgotI2lu
Y2x1ZGUgIkRpc3BsYXlDYXB0dXJlU291cmNlTWFjLmgiCisjaW5jbHVkZSAiRGlzcGxheUNhcHR1
cmVTb3VyY2VDb2NvYS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYVN0
cmVhbVByaXZhdGUuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAtNTksMTUgKzU5
LDcgQEAgY2xhc3MgRGlzcGxheUNhcHR1cmVTb3VyY2VGYWN0b3J5TWFjIGZpbmFsIDogcHVibGlj
IERpc3BsYXlDYXB0dXJlRmFjdG9yeSB7CiBwdWJsaWM6CiAgICAgQ2FwdHVyZVNvdXJjZU9yRXJy
b3IgY3JlYXRlRGlzcGxheUNhcHR1cmVTb3VyY2UoY29uc3QgQ2FwdHVyZURldmljZSYgZGV2aWNl
LCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cykgZmluYWwKICAgICB7Ci0jaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgVU5VU0VEX1BBUkFNKGRldmljZSk7Ci0gICAg
ICAgIFVOVVNFRF9QQVJBTShjb25zdHJhaW50cyk7Ci0jZW5kaWYKLSNpZiBQTEFURk9STShNQUMp
Ci0gICAgICAgIHJldHVybiBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6Y3JlYXRlKGRldmljZSwg
Y29uc3RyYWludHMpOwotI2Vsc2UKLSAgICAgICAgcmV0dXJuIHsgfTsKLSNlbmRpZgorICAgICAg
ICByZXR1cm4gRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Y3JlYXRlKGRldmljZSwgY29uc3Ry
YWludHMpOwogICAgIH0KIHByaXZhdGU6CiAgICAgQ2FwdHVyZURldmljZU1hbmFnZXImIGRpc3Bs
YXlDYXB0dXJlRGV2aWNlTWFuYWdlcigpIHsgcmV0dXJuIERpc3BsYXlDYXB0dXJlTWFuYWdlckNv
Y29hOjpzaW5nbGV0b24oKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAppbmRleCAzMWQ5
MjE0ODgwZGYzNDI4OWZmYTllNmFiNmNkYWYxYzMwMGExZGY0Li4xNjY4NGExM2Q0NmRlZGE3YTIz
MTliOGU1M2M4YTAxMTNiMDhhNTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcApAQCAt
NDMsNyArNDMsNyBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAiQ29yZUF1ZGlv
Q2FwdHVyZVNvdXJjZS5oIgotI2luY2x1ZGUgIkRpc3BsYXlDYXB0dXJlU291cmNlTWFjLmgiCisj
aW5jbHVkZSAiRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oIgogI2luY2x1ZGUgIk1vY2tSZWFs
dGltZVZpZGVvU291cmNlTWFjLmgiCiAjZW5kaWYKIApAQCAtMTE1LDE0ICsxMTUsMTQgQEAgcHJp
dmF0ZToKIH07CiAKICNpZiBQTEFURk9STShNQUMpCi1jbGFzcyBNb2NrRGlzcGxheUNhcHR1cmVy
IGZpbmFsIDogcHVibGljIERpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpDYXB0dXJlciB7CitjbGFz
cyBNb2NrRGlzcGxheUNhcHR1cmVyIGZpbmFsIDogcHVibGljIERpc3BsYXlDYXB0dXJlU291cmNl
Q29jb2E6OkNhcHR1cmVyIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBNb2NrRGlzcGxheUNhcHR1
cmVyKGNvbnN0IENhcHR1cmVEZXZpY2UmKTsKIAogcHJpdmF0ZToKICAgICBib29sIHN0YXJ0KCkg
ZmluYWw7CiAgICAgdm9pZCBzdG9wKCkgZmluYWwgIHsgbV9zb3VyY2UtPnN0b3AoKTsgfQotICAg
IERpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpEaXNwbGF5RnJhbWVUeXBlIGdlbmVyYXRlRnJhbWUo
KSBmaW5hbDsKKyAgICBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpEaXNwbGF5RnJhbWVUeXBl
IGdlbmVyYXRlRnJhbWUoKSBmaW5hbDsKICAgICBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6
OkRpc3BsYXlTdXJmYWNlVHlwZSBzdXJmYWNlVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFJl
YWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RGlzcGxheVN1cmZhY2VUeXBlOjpNb25pdG9yOyB9
CiAgICAgdm9pZCBjb21taXRDb25maWd1cmF0aW9uKGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5ncyYpIGZpbmFsOwogICAgIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgZGV2aWNlVHlw
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNjcmVl
bjsgfQpAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgTW9ja0Rpc3BsYXlDYXB0dXJlcjo6Y29tbWl0
Q29uZmlndXJhdGlvbihjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmCiAgICAgbV9z
ZXR0aW5ncyA9IHNldHRpbmdzOwogfQogCi1EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6RGlzcGxh
eUZyYW1lVHlwZSBNb2NrRGlzcGxheUNhcHR1cmVyOjpnZW5lcmF0ZUZyYW1lKCkKK0Rpc3BsYXlD
YXB0dXJlU291cmNlQ29jb2E6OkRpc3BsYXlGcmFtZVR5cGUgTW9ja0Rpc3BsYXlDYXB0dXJlcjo6
Z2VuZXJhdGVGcmFtZSgpCiB7CiAgICAgaWYgKGF1dG8qIGltYWdlQnVmZmVyID0gbV9zb3VyY2Ut
PmltYWdlQnVmZmVyKCkpCiAgICAgICAgIHJldHVybiBpbWFnZUJ1ZmZlci0+Y29weU5hdGl2ZUlt
YWdlKCk7CkBAIC0xODYsNyArMTg2LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIENhcHR1cmVE
ZXZpY2U6OkRldmljZVR5cGU6OlNjcmVlbjoKICAgICAgICAgY2FzZSBDYXB0dXJlRGV2aWNlOjpE
ZXZpY2VUeXBlOjpXaW5kb3c6CiAjaWYgUExBVEZPUk0oTUFDKQotICAgICAgICAgICAgcmV0dXJu
IERpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpjcmVhdGUoVW5pcXVlUmVmPERpc3BsYXlDYXB0dXJl
U291cmNlTWFjOjpDYXB0dXJlcj4obWFrZVVuaXF1ZVJlZjxNb2NrRGlzcGxheUNhcHR1cmVyPihk
ZXZpY2UpKSwgZGV2aWNlLCBjb25zdHJhaW50cyk7CisgICAgICAgICAgICByZXR1cm4gRGlzcGxh
eUNhcHR1cmVTb3VyY2VDb2NvYTo6Y3JlYXRlKFVuaXF1ZVJlZjxEaXNwbGF5Q2FwdHVyZVNvdXJj
ZUNvY29hOjpDYXB0dXJlcj4obWFrZVVuaXF1ZVJlZjxNb2NrRGlzcGxheUNhcHR1cmVyPihkZXZp
Y2UpKSwgZGV2aWNlLCBjb25zdHJhaW50cyk7CiAjZWxpZiBVU0UoR1NUUkVBTUVSKQogICAgICAg
ICAgICAgcmV0dXJuIE1vY2tEaXNwbGF5Q2FwdHVyZVNvdXJjZUdTdHJlYW1lcjo6Y3JlYXRlKGRl
dmljZSwgY29uc3RyYWludHMpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbQppbmRleCAxZDc2YTg4
MDZkMDE5OWJlODExN2U1ODc5NzIwOTRmMzE4NWQyYWRlLi4wYmMxN2ZmZmZhN2E0OGVjN2FiYTQ5
MGNmM2FmMjNiMmI1ZjZiOGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLm1tCkBAIC0xNDEsNiArMTQxLDgg
QEAgc3RhdGljIE5TU3RyaW5nICphbGVydE1lc3NhZ2VUZXh0KE1lZGlhUGVybWlzc2lvblJlYXNv
biByZWFzb24sIGNvbnN0IFdlYkNvcmU6OlMKICAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OldFQl9VSV9OU1NUUklORyhAIkFsbG93IOKAnCVA4oCdIHRvIHVzZSB5b3Vy
IGNhbWVyYSBhbmQgbWljcm9waG9uZT8iLCBAIk1lc3NhZ2UgZm9yIHVzZXIgbWVkaWEgcHJvbXB0
IiksIHZpc2libGVPcmlnaW5dOwogICAgIGNhc2UgTWVkaWFQZXJtaXNzaW9uUmVhc29uOjpNaWNy
b3Bob25lOgogICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6V0VCX1VJ
X05TU1RSSU5HKEAiQWxsb3cg4oCcJUDigJ0gdG8gdXNlIHlvdXIgbWljcm9waG9uZT8iLCBAIk1l
c3NhZ2UgZm9yIHVzZXIgbWljcm9waG9uZSBhY2Nlc3MgcHJvbXB0IiksIHZpc2libGVPcmlnaW5d
OworICAgIGNhc2UgTWVkaWFQZXJtaXNzaW9uUmVhc29uOjpTY3JlZW5DYXB0dXJlOgorICAgICAg
ICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6V0VCX1VJX05TU1RSSU5HKEAiQWxs
b3cg4oCcJUDigJ0gdG8gb2JzZXJ2ZSB5b3VyIHNjcmVlbj8iLCBAIk1lc3NhZ2UgZm9yIHNjcmVl
biBzaGFyaW5nIHByb21wdCIpLCB2aXNpYmxlT3JpZ2luXTsKICAgICBjYXNlIE1lZGlhUGVybWlz
c2lvblJlYXNvbjo6RGV2aWNlT3JpZW50YXRpb246CiAgICAgICAgIHJldHVybiBbTlNTdHJpbmcg
c3RyaW5nV2l0aEZvcm1hdDpXRUJfVUlfTlNTVFJJTkcoQCLigJwlQOKAnSBXb3VsZCBMaWtlIHRv
IEFjY2VzcyBNb3Rpb24gYW5kIE9yaWVudGF0aW9uIiwgQCJNZXNzYWdlIGZvciByZXF1ZXN0aW5n
IGFjY2VzcyB0byB0aGUgZGV2aWNlIG1vdGlvbiBhbmQgb3JpZW50YXRpb24iKSwgdmlzaWJsZU9y
aWdpbl07CiAgICAgY2FzZSBNZWRpYVBlcm1pc3Npb25SZWFzb246Okdlb2xvY2F0aW9uOgpAQCAt
MTU3LDYgKzE1OSw4IEBAIHN0YXRpYyBOU1N0cmluZyAqYWxsb3dCdXR0b25UZXh0KE1lZGlhUGVy
bWlzc2lvblJlYXNvbiByZWFzb24pCiAgICAgY2FzZSBNZWRpYVBlcm1pc3Npb25SZWFzb246OkNh
bWVyYUFuZE1pY3JvcGhvbmU6CiAgICAgY2FzZSBNZWRpYVBlcm1pc3Npb25SZWFzb246Ok1pY3Jv
cGhvbmU6CiAgICAgICAgIHJldHVybiBXRUJfVUlfU1RSSU5HX0tFWShAIkFsbG93IiwgIkFsbG93
ICh1c2VybWVkaWEpIiwgQCJBbGxvdyBidXR0b24gdGl0bGUgaW4gdXNlciBtZWRpYSBwcm9tcHQi
KTsKKyAgICBjYXNlIE1lZGlhUGVybWlzc2lvblJlYXNvbjo6U2NyZWVuQ2FwdHVyZToKKyAgICAg
ICAgcmV0dXJuIFdFQl9VSV9TVFJJTkdfS0VZKEAiQWxsb3ciLCAiQWxsb3cgKHNjcmVlbnNoYXJp
bmcpIiwgQCJBbGxvdyBidXR0b24gdGl0bGUgaW4gc2NyZWVuIHNoYXJpbmcgcHJvbXB0Iik7CiAg
ICAgY2FzZSBNZWRpYVBlcm1pc3Npb25SZWFzb246OkRldmljZU9yaWVudGF0aW9uOgogICAgICAg
ICByZXR1cm4gV0VCX1VJX1NUUklOR19LRVkoQCJBbGxvdyIsICJBbGxvdyAoZGV2aWNlIG1vdGlv
biBhbmQgb3JpZW50YXRpb24gYWNjZXNzKSIsIEAiQnV0dG9uIHRpdGxlIGluIERldmljZSBPcmll
bnRhdGlvbiBQZXJtaXNzaW9uIEFQSSBwcm9tcHQiKTsKICAgICBjYXNlIE1lZGlhUGVybWlzc2lv
blJlYXNvbjo6R2VvbG9jYXRpb246CkBAIC0xNzMsNiArMTc3LDggQEAgc3RhdGljIE5TU3RyaW5n
ICpkb05vdEFsbG93QnV0dG9uVGV4dChNZWRpYVBlcm1pc3Npb25SZWFzb24gcmVhc29uKQogICAg
IGNhc2UgTWVkaWFQZXJtaXNzaW9uUmVhc29uOjpDYW1lcmFBbmRNaWNyb3Bob25lOgogICAgIGNh
c2UgTWVkaWFQZXJtaXNzaW9uUmVhc29uOjpNaWNyb3Bob25lOgogICAgICAgICByZXR1cm4gV0VC
X1VJX1NUUklOR19LRVkoQCJEb27igJl0IEFsbG93IiwgIkRvbuKAmXQgQWxsb3cgKHVzZXJtZWRp
YSkiLCBAIkRpc2FsbG93IGJ1dHRvbiB0aXRsZSBpbiB1c2VyIG1lZGlhIHByb21wdCIpOworICAg
IGNhc2UgTWVkaWFQZXJtaXNzaW9uUmVhc29uOjpTY3JlZW5DYXB0dXJlOgorICAgICAgICByZXR1
cm4gV0VCX1VJX1NUUklOR19LRVkoQCJEb27igJl0IEFsbG93IiwgIkRvbuKAmXQgQWxsb3cgKHNj
cmVlbnNoYXJpbmcpIiwgQCJEaXNhbGxvdyBidXR0b24gdGl0bGUgaW4gc2NyZWVuIHNoYXJpbmcg
cHJvbXB0Iik7CiAgICAgY2FzZSBNZWRpYVBlcm1pc3Npb25SZWFzb246OkRldmljZU9yaWVudGF0
aW9uOgogICAgICAgICByZXR1cm4gV0VCX1VJX1NUUklOR19LRVkoQCJDYW5jZWwiLCAiQ2FuY2Vs
IChkZXZpY2UgbW90aW9uIGFuZCBvcmllbnRhdGlvbiBhY2Nlc3MpIiwgQCJCdXR0b24gdGl0bGUg
aW4gRGV2aWNlIE9yaWVudGF0aW9uIFBlcm1pc3Npb24gQVBJIHByb21wdCIpOwogICAgIGNhc2Ug
TWVkaWFQZXJtaXNzaW9uUmVhc29uOjpHZW9sb2NhdGlvbjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCmluZGV4IGQ3OGY0Y2MwZDU2NTU5NGMwZTg4MWE0NThi
ZmQyMzgyNzUxMjI0NWEuLjlhZjRhN2E5NGZhOTczMjA0YzE1ZDU2MGRiZjZiN2QzNDI0MjhhMzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQpAQCAtMTEx
Nyw2ICsxMTE3LDExIEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZv
clVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KFdlYlBhZ2VQcm94CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKKyAgICBpZiAocmVxdWVzdC5yZXF1aXJlc0Rpc3BsYXlDYXB0dXJlKCkgJiYgcmVx
dWVzdC5jYW5Qcm9tcHRGb3JHZXREaXNwbGF5TWVkaWEoKSkgeworICAgICAgICByZXF1ZXN0LnBy
b21wdEZvckdldERpc3BsYXlNZWRpYSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAg
Ly8gRklYTUU6IFByb3ZpZGUgYSBzcGVjaWZpYyBkZWxlZ2F0ZSBmb3IgZGlzcGxheSBjYXB0dXJl
LgogICAgIGlmICghcmVxdWVzdC5yZXF1aXJlc0Rpc3BsYXlDYXB0dXJlKCkgJiYgcmVzcG9uZHNU
b1JlcXVlc3RNZWRpYUNhcHR1cmVQZXJtaXNzaW9uKSB7CiAgICAgICAgIGF1dG8gY2hlY2tlciA9
IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZSwgQHNlbGVjdG9y
KHdlYlZpZXc6cmVxdWVzdE1lZGlhQ2FwdHVyZVBlcm1pc3Npb25Gb3JPcmlnaW46aW5pdGlhdGVk
QnlGcmFtZTp0eXBlOmRlY2lzaW9uSGFuZGxlcjopKTsKQEAgLTExMjcsNyArMTEzMiw3IEBAIHZv
aWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0KFdlYlBhZ2VQcm94CiAKICAgICAgICAgICAgIHN3aXRjaCAoZGVjaXNpb24pIHsK
ICAgICAgICAgICAgIGNhc2UgV0tQZXJtaXNzaW9uRGVjaXNpb25Qcm9tcHQ6Ci0gICAgICAgICAg
ICAgICAgcHJvdGVjdGVkUmVxdWVzdC0+cHJvbXB0KCk7CisgICAgICAgICAgICAgICAgcHJvdGVj
dGVkUmVxdWVzdC0+cHJvbXB0Rm9yR2V0VXNlck1lZGlhKCk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIFdLUGVybWlzc2lvbkRlY2lzaW9uR3JhbnQ6IHsKICAgICAg
ICAgICAgICAgICBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlVUlEID0gcHJvdGVjdGVkUmVxdWVz
dC0+cmVxdWlyZXNWaWRlb0NhcHR1cmUoKSA/IHByb3RlY3RlZFJlcXVlc3QtPnZpZGVvRGV2aWNl
VUlEcygpLmZpcnN0KCkgOiBTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmgKaW5kZXggNDFlYTQxZGZkNDc0NmFmY2I3ZmIz
Mjc0NWQ4M2ZkN2VmODQyZWMwMy4uMTc1YzI1YzA0NDkzMmZhNWI2YWE2NTcxMjk5MzM5YTEyYTE2
MTE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWFQZXJtaXNzaW9u
VXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWFQZXJtaXNzaW9u
VXRpbGl0aWVzLmgKQEAgLTU0LDcgKzU0LDggQEAgZW51bSBjbGFzcyBNZWRpYVBlcm1pc3Npb25S
ZWFzb24gewogICAgIE1pY3JvcGhvbmUsCiAgICAgRGV2aWNlT3JpZW50YXRpb24sCiAgICAgR2Vv
bG9jYXRpb24sCi0gICAgU3BlZWNoUmVjb2duaXRpb24KKyAgICBTcGVlY2hSZWNvZ25pdGlvbiwK
KyAgICBTY3JlZW5DYXB0dXJlCiB9OwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
UHJveHkuY3BwCmluZGV4IDJjZmNhZTc0ODVkNTlmZDFjYWU5MzRhZTQ1ODYwN2VkMDdmNzM0ODMu
Ljc1YmJkYzFkMDIxYWU2NTk2MTIwZmY1NjY0NWQ3ZmViYjg0ZDhmMjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
UHJveHkuY3BwCkBAIC0xNDAsMTcgKzE0MCwyOSBAQCBTdHJpbmcgY29udmVydEVudW1lcmF0aW9u
VG9TdHJpbmcoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhQWNjZQog
ICAgIHJldHVybiB2YWx1ZXNbc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKV07
CiB9CiAKLXZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6cHJvbXB0KCkKK3Zv
aWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6cHJvbXB0Rm9yR2V0RGlzcGxheU1l
ZGlhKCkKIHsKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShDT0NPQSkKLSAg
ICBBU1NFUlQobV9tYW5hZ2VyKTsKLSAgICBpZiAoIW1fbWFuYWdlcikgeworICAgIEFTU0VSVCht
X21hbmFnZXIgJiYgY2FuUHJvbXB0Rm9yR2V0RGlzcGxheU1lZGlhKCkpOworICAgIGlmICghbV9t
YW5hZ2VyIHx8ICFjYW5Qcm9tcHRGb3JHZXREaXNwbGF5TWVkaWEoKSkgewogICAgICAgICBkZW55
KFVzZXJNZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbjo6UGVybWlzc2lvbkRlbmllZCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBpZiAocmVxdWlyZXNEaXNwbGF5Q2FwdHVyZSgpKSB7Ci0g
ICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZ2V0RGlzcGxheU1lZGlhIHByb21wdCwgZm9yIG5v
dyBkZW55LgorICAgIGFsZXJ0Rm9yUGVybWlzc2lvbihtX21hbmFnZXItPnBhZ2UoKSwgTWVkaWFQ
ZXJtaXNzaW9uUmVhc29uOjpTY3JlZW5DYXB0dXJlLCB0b3BMZXZlbERvY3VtZW50U2VjdXJpdHlP
cmlnaW4oKS5kYXRhKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oYm9v
bCBncmFudGVkKSB7CisgICAgICAgIGlmICghZ3JhbnRlZCkKKyAgICAgICAgICAgIGRlbnkoVXNl
ck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uOjpQZXJtaXNzaW9uRGVuaWVkKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgYWxsb3coKTsKKyAgICB9KTsKKyNlbmRpZgorfQorCit2b2lkIFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OnByb21wdEZvckdldFVzZXJNZWRpYSgpCit7Cisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oQ09DT0EpCisgICAgQVNTRVJUKG1f
bWFuYWdlcik7CisgICAgaWYgKCFtX21hbmFnZXIpIHsKICAgICAgICAgZGVueShVc2VyTWVkaWFB
Y2Nlc3NEZW5pYWxSZWFzb246OlBlcm1pc3Npb25EZW5pZWQpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtMTU4LDE1ICsxNzAsNDAgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dFByb3h5Ojpwcm9tcHQoKQogICAgIE1lZGlhUGVybWlzc2lvblJlYXNvbiByZWFzb24gPSBNZWRp
YVBlcm1pc3Npb25SZWFzb246OkNhbWVyYTsKICAgICBpZiAocmVxdWlyZXNBdWRpb0NhcHR1cmUo
KSkKICAgICAgICAgcmVhc29uID0gcmVxdWlyZXNWaWRlb0NhcHR1cmUoKSA/IE1lZGlhUGVybWlz
c2lvblJlYXNvbjo6Q2FtZXJhQW5kTWljcm9waG9uZSA6IE1lZGlhUGVybWlzc2lvblJlYXNvbjo6
TWljcm9waG9uZTsKKwogICAgIGFsZXJ0Rm9yUGVybWlzc2lvbihtX21hbmFnZXItPnBhZ2UoKSwg
cmVhc29uLCB0b3BMZXZlbERvY3VtZW50U2VjdXJpdHlPcmlnaW4oKS5kYXRhKCksIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oYm9vbCBncmFudGVkKSB7CiAgICAgICAgIGlm
ICghZ3JhbnRlZCkKICAgICAgICAgICAgIGRlbnkoVXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29u
OjpQZXJtaXNzaW9uRGVuaWVkKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgYWxsb3coKTsK
ICAgICB9KTsKKyNlbmRpZgorfQorCit2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJv
eHk6OmRvRGVmYXVsdEFjdGlvbigpCit7CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExB
VEZPUk0oQ09DT0EpCisgICAgaWYgKHJlcXVpcmVzRGlzcGxheUNhcHR1cmUoKSkgeworICAgICAg
ICBpZiAoIWNhblByb21wdEZvckdldERpc3BsYXlNZWRpYSgpKSB7CisgICAgICAgICAgICBkZW55
KFVzZXJNZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbjo6UGVybWlzc2lvbkRlbmllZCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBwcm9tcHRGb3JHZXREaXNwbGF5TWVk
aWEoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcHJvbXB0Rm9yR2V0VXNlck1lZGlhKCk7CiAjZWxz
ZQogICAgIGRlbnkoKTsKICNlbmRpZgogfQogCitib29sIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0UHJveHk6OmNhblByb21wdEZvckdldERpc3BsYXlNZWRpYSgpCit7CisjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkgJiYgUExBVEZPUk0oSU9TKQorICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAg
ICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdFByb3h5LmgKaW5kZXggMjRjZWUzOGY5YmMxZDhhMmE2YWU3NGQyNGFhYzQ2ZmNiODFmNWMx
ZS4uZGY0MTJhYjY1ZWMzN2RkNDczMGVhZmM3Y2I0ZTNkNTUxNjM0OWRiMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
UHJveHkuaApAQCAtNDUsOCArNDUsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBhbGxvdyhjb25z
dCBTdHJpbmcmIGF1ZGlvRGV2aWNlVUlELCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlVUlEKTsK
ICAgICB2b2lkIGFsbG93KCk7Ci0gICAgdm9pZCBwcm9tcHQoKTsKLSAgICB2b2lkIGRvRGVmYXVs
dEFjdGlvbigpIHsgcHJvbXB0KCk7IH0KKyAgICB2b2lkIHByb21wdEZvckdldFVzZXJNZWRpYSgp
OworICAgIHZvaWQgcHJvbXB0Rm9yR2V0RGlzcGxheU1lZGlhKCk7CisgICAgYm9vbCBjYW5Qcm9t
cHRGb3JHZXREaXNwbGF5TWVkaWEoKTsKKyAgICB2b2lkIGRvRGVmYXVsdEFjdGlvbigpOwogICAg
IGVudW0gY2xhc3MgVXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uIHsgTm9Db25zdHJhaW50cywg
VXNlck1lZGlhRGlzYWJsZWQsIE5vQ2FwdHVyZURldmljZXMsIEludmFsaWRDb25zdHJhaW50LCBI
YXJkd2FyZUVycm9yLCBQZXJtaXNzaW9uRGVuaWVkLCBPdGhlckZhaWx1cmUgfTsKICAgICB2b2lk
IGRlbnkoVXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uID0gVXNlck1lZGlhQWNjZXNzRGVuaWFs
UmVhc29uOjpVc2VyTWVkaWFEaXNhYmxlZCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441444</attachid>
            <date>2021-10-15 15:49:52 -0700</date>
            <delta_ts>2021-10-15 17:34:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231455-20211015154951.patch</filename>
            <type>text/plain</type>
            <size>103732</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2M2MWNjNWYyZjlmMWJl
MDFlMWQxYWQyNjAxNjA4MTVlMTAwMGZjOS4uN2EyOGRiZmExMDI1MWI2NzIwMzM0YzdjNzdjYzZl
NjJmMjk1ZmEzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAyMS0xMC0xMyAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBTdXBw
b3J0IGdldERpc3BsYXlNZWRpYQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMxNDU1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NDA0NDQ5NT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0IGFuZCBKZXIgTm9ibGUuCisKKyAgICAg
ICAgSW1wbGVtZW50IHNjcmVlbiBjYXB0dXJlIGZvciBpT1MgdXNpbmcgUmVwbGF5S2l0LiBSZXBs
YXlLaXQgb25seSBjYXB0dXJlcyB3aGVuIHRoZSAKKyAgICAgICAgaG9zdCBhcHBsaWNhdGlvbiBp
cyBpbiB0aGUgZm9yZWdyb3VuZCwgc28gdGhlIE1lZGlhU3RyZWFtIHRyYWNrIGlzIG11dGVkIHdo
ZW4gdGhlCisgICAgICAgIGFwcCBpcyBiYWNrZ3JvdW5kZWQuCisKKyAgICAgICAgZ2V0RGlzcGxh
eU1lZGlhIGF2YWlsYWJpbGl0eSB0byBKYXZhU2NyaXB0IGlzIGNvbnRyb2xsZWQgYnkgdGhlIGBT
Y3JlZW5DYXB0dXJlRW5hYmxlZGAKKyAgICAgICAgc2V0dGluZywgd2hpY2ggaXMgZGlzYWJsZWQg
YnkgZGVmYXVsdCBvbiBpT1MuCisKKyAgICAgICAgSSBoYXZlbid0IGZpZ3VyZWQgb3V0IGhvdyB0
byB0ZXN0IHRoaXMgYXV0b21hdGljYWxseSB5ZXQgYmVjYXVzZSBSZXBsYXlLaXQgYWx3YXlzCisg
ICAgICAgIHNob3dzIGl0cyBvd24gbW9kYWwgdXNlciBwcm9tcHQgYmVmb3JlIGl0IGFsbG93cyBj
YXB0dXJlIHRvIGJlZ2luLgorCisgICAgICAgICogU291cmNlc0NvY29hLnR4dDogQWRkIFJlcGxh
eUtpdENhcHR1cmVTb3VyY2UubW0uIFJlbmFtZSBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5jcHAK
KyAgICAgICAgdG8gRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHAuCisKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZCBuZXcgZmlsZXMuCisKKyAgICAg
ICAgKiBlbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzOiBBZGQgbG9jYWxpemFibGUgc3RyaW5n
cyBmb3IgZ2V0RGlzcGxheU1lZGlhIHByb21wdC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VUcmFuc2ZlclNlc3Npb25WVDo6Y29udmVydENNU2FtcGxlQnVmZmVyKTogQWRkIGFuIG9wdGlv
bmFsIE1lZGlhVGltZSBwYXJhbWV0ZXIuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVRyYW5zZmVy
U2Vzc2lvblZUOjpjcmVhdGVNZWRpYVNhbXBsZSk6IEFkZCBhIE1lZGlhVGltZSBwYXJhbWV0ZXIu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvUmVwbGF5S2l0Q2FwdHVyZVNv
dXJjZS5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvUmVwbGF5
S2l0Q2FwdHVyZVNvdXJjZS5tbTogQWRkZWQuCisgICAgICAgICgtW1dlYkNvcmVSZXBsYXlLaXRT
Y3JlZW5SZWNvcmRlckhlbHBlciBpbml0V2l0aENhbGxiYWNrOl0pOgorICAgICAgICAoLVtXZWJD
b3JlUmVwbGF5S2l0U2NyZWVuUmVjb3JkZXJIZWxwZXIgZGlzY29ubmVjdF0pOgorICAgICAgICAo
LVtXZWJDb3JlUmVwbGF5S2l0U2NyZWVuUmVjb3JkZXJIZWxwZXIgb2JzZXJ2ZVZhbHVlRm9yS2V5
UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxh
eUtpdENhcHR1cmVTb3VyY2U6OmlzQXZhaWxhYmxlKTogQ2hlY2sgUmVwbGF5S2l0IGF2YWlsYWJp
bGl0eS4KKyAgICAgICAgKFdlYkNvcmU6OlJlcGxheUtpdENhcHR1cmVTb3VyY2U6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZXBsYXlLaXRDYXB0dXJlU291cmNlOjpSZXBsYXlLaXRDYXB0
dXJlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxheUtpdENhcHR1cmVTb3VyY2U6On5S
ZXBsYXlLaXRDYXB0dXJlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxheUtpdENhcHR1
cmVTb3VyY2U6OnN0YXJ0KTogU3RhcnQgc2NyZWVuIGNhcHR1cmUgb25seS4KKyAgICAgICAgKFdl
YkNvcmU6OlJlcGxheUtpdENhcHR1cmVTb3VyY2U6OnNjcmVlblJlY29yZGVyRGlkT3V0cHV0Vmlk
ZW9TYW1wbGUpOiBSZXRhaW4gdGhlCisgICAgICAgIHRoZSBuZXcgZnJhbWUsIHNldCBpbnRyaW5z
aWMgc2l6ZSB0byB0aGUgaW1hZ2Ugc2l6ZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlcGxheUtpdENh
cHR1cmVTb3VyY2U6OmNhcHR1cmVTdGF0ZURpZENoYW5nZSk6IFVwZGF0ZSBvYnNlcnZlciBpZiBp
bnRlcnJ1cHRpb24KKyAgICAgICAgc3RhdGUgb3IgcmVjb3JkZXIgc3RhdGUgY2hhbmdlcyBzbyBp
dCBjYW4gdXBkYXRlIHRoZSB0cmFjaydzICdtdXRlZCcgc3RhdGUuCisgICAgICAgIChXZWJDb3Jl
OjpSZXBsYXlLaXRDYXB0dXJlU291cmNlOjpzdG9wKTogU3RvcCBjYXB0dXJlLgorICAgICAgICAo
V2ViQ29yZTo6UmVwbGF5S2l0Q2FwdHVyZVNvdXJjZTo6Z2VuZXJhdGVGcmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZXBsYXlLaXRDYXB0dXJlU291cmNlOjp2ZXJpZnlDYXB0dXJlSXNBY3RpdmUp
OiBSZXBsYXlLaXQgZG9lc24ndCBub3RpZnkgCisgICAgICAgIHdoZW4gY2FwdHVyZSBpcyBwYXVz
ZWQsIHNvIHdhdGNoIGZvciBjaGFuZ2VzIGJ5IG1vbml0b3JpbmcgdGhlIGZyYW1lIGNvdW50Lgor
ICAgICAgICAoV2ViQ29yZTo6UmVwbGF5S2l0Q2FwdHVyZVNvdXJjZTo6c3RhcnRDYXB0dXJlV2F0
Y2hkb2dUaW1lcik6IFN0YXJ0IHRoZSB0aW1lciB0aGF0CisgICAgICAgIHdpbGwgbW9uaXRvciBm
b3IgY2FwdHVyZSBwYXVzaW5nL3Jlc3VtaW5nLgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuRGV2
aWNlVVVJRCk6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5EZXZpY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVwbGF5S2l0Q2FwdHVyZVNvdXJjZTo6c2NyZWVuQ2FwdHVyZURldmljZVdpdGhQZXJz
aXN0ZW50SUQpOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGF5S2l0Q2FwdHVyZVNvdXJjZTo6c2Ny
ZWVuQ2FwdHVyZURldmljZXMpOgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0NHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0dE
aXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6Z2VuZXJhdGVGcmFtZSk6IERpc3BsYXlDYXB0dXJl
U291cmNlTWFjIHdhcworICAgICAgICByZW5hbWVkIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2Eu
CisgICAgICAgIChXZWJDb3JlOjpDR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlOjpuZXdGcmFt
ZSk6IFRha2UgYSBSZXRhaW5QdHI8SU9TdXJmYWNlUmVmPgorICAgICAgICBpbnN0ZWFkIG9mIGEg
RGlzcGxheVN1cmZhY2UuCisgICAgICAgIChXZWJDb3JlOjpDR0Rpc3BsYXlTdHJlYW1DYXB0dXJl
U291cmNlOjpmcmFtZUF2YWlsYWJsZUhhbmRsZXIpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6RGlzcGxheVN1cmZhY2U6
OkRpc3BsYXlTdXJmYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNHRGlzcGxheVN0
cmVhbUNhcHR1cmVTb3VyY2U6OkRpc3BsYXlTdXJmYWNlOjp+RGlzcGxheVN1cmZhY2UpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6Q0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6RGlz
cGxheVN1cmZhY2U6Om9wZXJhdG9yPSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDR0Rp
c3BsYXlTdHJlYW1DYXB0dXJlU291cmNlOjpEaXNwbGF5U3VyZmFjZTo6aW9TdXJmYWNlIGNvbnN0
KTogRGVsZXRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR0Rpc3Bs
YXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0NHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2UubW06CisgICAgICAg
IChXZWJDb3JlOjpDR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlOjpjcmVhdGUpOiBE
aXNwbGF5Q2FwdHVyZVNvdXJjZU1hYyB3YXMKKyAgICAgICAgcmVuYW1lZCBEaXNwbGF5Q2FwdHVy
ZVNvdXJjZUNvY29hLgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3Bs
YXlDYXB0dXJlTWFuYWdlckNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlDYXB0
dXJlTWFuYWdlckNvY29hOjp1cGRhdGVEaXNwbGF5Q2FwdHVyZURldmljZXMpOiBVc2UgCisgICAg
ICAgIFJlcGxheUtpdENhcHR1cmVTb3VyY2Ugb24gaU9TLgorCisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuY3BwOiBSZW5hbWVkIGZy
b20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJl
U291cmNlTWFjLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlDYXB0dXJlU291cmNlQ29j
b2E6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29h
OjpEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlD
YXB0dXJlU291cmNlQ29jb2E6On5EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OmNhcGFiaWxpdGllcyk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpzZXR0aW5ncyk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpzZXR0aW5nc0RpZENoYW5n
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpzdGFydFBy
b2R1Y2luZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUNhcHR1cmVTb3VyY2VDb2Nv
YTo6c3RvcFByb2R1Y2luZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUNhcHR1cmVT
b3VyY2VDb2NvYTo6ZWxhcHNlZFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUNhcHR1
cmVTb3VyY2VDb2NvYTo6dXBkYXRlRnJhbWVTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlDYXB0dXJlU291cmNlQ29jb2E6OmVtaXRGcmFtZSk6IFN1cHBvcnQgY2FwdHVyZXIgcmV0dXJu
aW5nIGEgQ01TYW1wbGVCdWZmZXIuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Q2FwdHVyZVNv
dXJjZUNvY29hOjpzZXRMb2dnZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUNhcHR1cmVT
b3VyY2VDb2NvYTo6Q2FwdHVyZXI6OnNldExvZ2dlcik6IFNldCB0aGUgY2FwdHVyZXIncyBsb2dn
ZXIuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpDYXB0dXJl
cjo6bG9nQ2hhbm5lbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Q2FwdHVyZVNv
dXJjZUNvY29hOjpDYXB0dXJlcjo6T2JzZXJ2ZXI6On5PYnNlcnZlcik6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpDYXB0dXJlcjo6c2V0T2JzZXJ2ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Q2FwdHVyZXI6OmNh
cHR1cmVySXNSdW5uaW5nQ2hhbmdlZCk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5oLgor
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXJNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUNhcHR1cmVTb3VyY2VGYWN0
b3J5TWFjOjpjcmVhdGVEaXNwbGF5Q2FwdHVyZVNvdXJjZSk6IERpc3BsYXlDYXB0dXJlU291cmNl
TWFjCisgICAgICAgIHJlbmFtZWQgdG8gRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS4KKworICAg
ICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja0Rpc3BsYXlDYXB0dXJlcjo6Z2VuZXJhdGVGcmFtZSk6IERp
dHRvLgorCiAyMDIxLTEwLTEzICBHYWJyaWVsIE5hdmEgTWFyaW5vICA8Z25hdmFtYXJpbm9AYXBw
bGUuY29tPgogCiAgICAgICAgIFNraXAgZmFsbGJhY2tGb250c0ZvclJ1bldpdGhJdGVyYXRvciBm
b3IgZW1wdHkgcnVucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggNWU5MTAyZmFjYTIyNjBjYzE5ODlj
N2FiMzI0Mzk2ZGIxMDFmYzZhZi4uNWRkNGVkY2Q3NTRjZTQ2ZjIzMzFkNDIxMWZjMGIwNjQxOGQz
YWFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMTAtMTMgIEVy
aWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gU3Vw
cG9ydCBnZXREaXNwbGF5TWVkaWEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMTQ1NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODQwNDQ0OTU+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldCBhbmQgSmVyIE5vYmxlLgorCisgICAg
ICAgICogUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFsL2lvcy9S
ZXBsYXlLaXRTb2Z0TGluay5oOiBBZGRlZC4KKyAgICAgICAgKiBwYWwvaW9zL1JlcGxheUtpdFNv
ZnRMaW5rLm1tOiBBZGRlZC4KKwogMjAyMS0xMC0xMyAgQWRpdHlhIEtlZXJ0aGkgIDxha2VlcnRo
aUBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBBZGQgc3VwcG9ydCBmb3IgYWNjZW50LWNv
bG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IGUwZWM5YjRjNzM1NzVhNTkyZjAxMzY2M2VkMzllYzllY2I2YWMxZmMu
LjkwOWJjNDBjNmY3MGJiOTYwNDU0MWE4NGU5YzFlZjJhN2U0NTA3NmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzMgQEAKKzIwMjEtMTAtMTMgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgW2lPU10gU3VwcG9ydCBnZXREaXNwbGF5TWVkaWEKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTQ1NQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vODQwNDQ0OTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZh
YmxldCBhbmQgSmVyIE5vYmxlLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL01lZGlhUGVy
bWlzc2lvblV0aWxpdGllcy5tbToKKyAgICAgICAgKFdlYktpdDo6YWxlcnRNZXNzYWdlVGV4dCk6
IEFkZCB0ZXh0IGZvciBkZWZhdWx0IHNjcmVlbiBjYXB0dXJlIHByb21wdC4KKyAgICAgICAgKFdl
YktpdDo6YWxsb3dCdXR0b25UZXh0KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OmRvTm90QWxs
b3dCdXR0b25UZXh0KTogRGl0dG8uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxl
Z2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRlY2lkZVBv
bGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KTogQ2FsbAorICAgICAgICBkZWZhdWx0
IGdldERpc3BsYXlNZWRpYSBwcm9tcHQgaWYgdGhlIGRlbGVnYXRlIGRvZXNuJ3QgaW1wbGVtZW50
IHRoZSBwcml2YXRlCisgICAgICAgIHByb21wdCBzZWxlY3Rvci4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OnByb21wdEZvckdldERpc3BsYXlNZWRpYSk6IE5l
dyBkZWZhdWx0CisgICAgICAgIGdldERpc3BsYXlNZWRpYSBwcm9tcHQuCisgICAgICAgIChXZWJL
aXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OnByb21wdEZvckdldFVzZXJNZWRp
YSk6IAorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5Ojpk
b0RlZmF1bHRBY3Rpb24pOiBDYWxsIHByb21wdEZvckdldERpc3BsYXlNZWRpYQorICAgICAgICBv
ciBwcm9tcHRGb3JHZXRVc2VyTWVkaWEgYWNjb3JkaW5nIHRvIHRoZSByZXF1ZXN0IHR5cGUuCisg
ICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OmNhblByb21w
dEZvckdldERpc3BsYXlNZWRpYSk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0UHJveHk6OnByb21wdCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6ZG9EZWZhdWx0QWN0aW9uKTogRGVsZXRlZC4KKwog
MjAyMS0xMC0xMyAgUGVyIEFybmUgIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXN0
cmljdCAiZGFyd2luLW5vdGlmaWNhdGlvbi1wb3N0IiB0byBhIG1pbmltYWwgc2V0IGluIHRoZSBX
UCBzYW5kYm94CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggM2U5MDUzZTRjOGMyNzIwZTY3ZWMyNzczYTVhMzIwNTlmZTAyNzA2Ni4u
YTU1MWM2NzAzMzQ3MTc1NGRhZmJhOTU0ZmUwOTcwOTkxNDUyZjJlMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjEsNiArMjEs
OCBAQAogLyogRW5kIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBC
WEJ1aWxkRmlsZSBzZWN0aW9uICovCisJCTA3MUMwMDM3MjcwN0VERjAwMEQwMjdDNyAvKiBSZXBs
YXlLaXRTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3MUMwMDM1MjcwN0VERjAwMEQwMjdDNyAvKiBSZXBsYXlLaXRTb2Z0TGluay5tbSAq
LzsgfTsKKwkJMDcxQzAwMzgyNzA3RURGMDAwRDAyN0M3IC8qIFJlcGxheUtpdFNvZnRMaW5rLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzFDMDAzNjI3
MDdFREYwMDBEMDI3QzcgLyogUmVwbGF5S2l0U29mdExpbmsuaCAqLzsgfTsKIAkJMDc2MTFEQjYy
NDNGQTVCRjAwRDgwNzA0IC8qIFVzYWdlVHJhY2tpbmdTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2MTFEQjQyNDNGQTVCRTAwRDgwNzA0
IC8qIFVzYWdlVHJhY2tpbmdTb2Z0TGluay5oICovOyB9OwogCQkwNzYxMURCNzI0M0ZBNUJGMDBE
ODA3MDQgLyogVXNhZ2VUcmFja2luZ1NvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2MTFEQjUyNDNGQTVCRjAwRDgwNzA0IC8qIFVzYWdl
VHJhY2tpbmdTb2Z0TGluay5tbSAqLzsgfTsKIAkJMDc3RTg3QjEyMjZBNDYwMjAwQTJBRkYwIC8q
IEFWRm91bmRhdGlvblNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDc3RTg3QUYyMjZBNDYwMjAwQTJBRkYwIC8qIEFWRm91bmRhdGlvblNv
ZnRMaW5rLm1tICovOyB9OwpAQCAtMjM1LDYgKzIzNyw4IEBACiAvKiBFbmQgUEJYQ29udGFpbmVy
SXRlbVByb3h5IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9u
ICovCisJCTA3MUMwMDM1MjcwN0VERjAwMEQwMjdDNyAvKiBSZXBsYXlLaXRTb2Z0TGluay5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlcGxheUtpdFNvZnRMaW5r
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzFDMDAzNjI3MDdFREYwMDBEMDI3
QzcgLyogUmVwbGF5S2l0U29mdExpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVwbGF5S2l0U29mdExpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2
MTFEQjQyNDNGQTVCRTAwRDgwNzA0IC8qIFVzYWdlVHJhY2tpbmdTb2Z0TGluay5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2FnZVRyYWNraW5nU29mdExpbmsuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2MTFEQjUyNDNGQTVCRjAwRDgwNzA0IC8qIFVzYWdl
VHJhY2tpbmdTb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFVzYWdlVHJhY2tpbmdTb2Z0TGluay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDc3RTg3QUYyMjZBNDYwMjAwQTJBRkYwIC8qIEFWRm91bmRhdGlvblNvZnRMaW5rLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQVZGb3VuZGF0aW9uU29mdExp
bmsubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NzEsNiArNzc1LDggQEAKIAkJ
CQk1QzdDNzg3MjIzQUMzRTc3MDA2NUY0N0UgLyogTWFuYWdlZENvbmZpZ3VyYXRpb25Tb2Z0TGlu
ay5tbSAqLywKIAkJCQk0NDUwRkM5RTIxRjVGNjAyMDA0REZBNTYgLyogUXVpY2tMb29rU29mdExp
bmsuaCAqLywKIAkJCQk0NDUwRkM5RDIxRjVGNjAyMDA0REZBNTYgLyogUXVpY2tMb29rU29mdExp
bmsubW0gKi8sCisJCQkJMDcxQzAwMzYyNzA3RURGMDAwRDAyN0M3IC8qIFJlcGxheUtpdFNvZnRM
aW5rLmggKi8sCisJCQkJMDcxQzAwMzUyNzA3RURGMDAwRDAyN0M3IC8qIFJlcGxheUtpdFNvZnRM
aW5rLm1tICovLAogCQkJCTA3OUQxRDk1MjY5NTBERDcwMDg4MzU3NyAvKiBTeXN0ZW1TdGF0dXNT
b2Z0TGluay5oICovLAogCQkJCTA3OUQxRDk2MjY5NTBERDcwMDg4MzU3NyAvKiBTeXN0ZW1TdGF0
dXNTb2Z0TGluay5tbSAqLywKIAkJCQkyRTEzNDJDQTIxNUFBMTBBMDA3MTk5RDIgLyogVUlLaXRT
b2Z0TGluay5oICovLApAQCAtOTkyLDYgKzk5OCw3IEBACiAJCQkJNDQ1MEZDQTAyMUY1RjYwMjAw
NERGQTU2IC8qIFF1aWNrTG9va1NvZnRMaW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzVBRjky
MDFGNDNBNEM3MDAyRUFDMDIgLyogUXVpY2tMb29rU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
NEM4NUE0RjI2NTg1NTFBMDA1Qjg5Q0MgLyogUXVpY2tMb29rVUlTb2Z0TGluay5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMDcxQzAwMzgyNzA3RURGMDAwRDAyN0M3IC8qIFJlcGxheUtpdFNvZnRMaW5r
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDk3NEVBMzI2NUVFQTIyMDBCNDlCOEMgLyogUmV2ZWFs
U29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ0Mjk1NkNEMjE4QTcyREYwMDgwREI1NCAv
KiBSZXZlYWxTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MEFCOEYxMjBBRTJFOEQwMEI4QkU4
NyAvKiBTZWNLZXlQcm94eVNQSS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTM2LDYgKzExNDMsNyBA
QAogCQkJCUExMTc1QjRGMUY2QjMzNzMwMEM0QjlGMCAvKiBQb3B1cE1lbnUubW0gaW4gU291cmNl
cyAqLywKIAkJCQk0NDUwRkM5RjIxRjVGNjAyMDA0REZBNTYgLyogUXVpY2tMb29rU29mdExpbmsu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlGNEM4NUE0RTI2NTg1NTFBMDA1Qjg5Q0MgLyogUXVpY2tM
b29rVUlTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAorCQkJCTA3MUMwMDM3MjcwN0VERjAwMEQw
MjdDNyAvKiBSZXBsYXlLaXRTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0OTc0RUE0
MjY1RUVBMjIwMEI0OUI4QyAvKiBSZXZlYWxTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CUEzQzY2Q0RDMUY0NjJENkEwMDlFNkVFOSAvKiBTZXNzaW9uSUQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTNBQjZFNTIxRjNEMURDNTAwOUMxNEIxIC8qIFNsZWVwRGlzYWJsZXIuY3BwIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2lvcy9SZXBsYXlL
aXRTb2Z0TGluay5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9pb3MvUmVwbGF5S2l0U29mdExp
bmsuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lZjI3MDY3MjY4NzhkYTFiZGVmYjA1YWJkNDQ4OWU2MjgzNGE0ZGRj
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9pb3MvUmVwbGF5S2l0
U29mdExpbmsuaApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgUExBVEZPUk0oSU9TKQorCisjaW1wb3J0IDxSZXBsYXlLaXQvUmVwbGF5S2l0Lmg+Cisj
aW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKworU09GVF9MSU5LX0ZSQU1FV09SS19GT1JfSEVB
REVSKFBBTCwgUmVwbGF5S2l0KQorCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFJQ
U2NyZWVuUmVjb3JkZXIpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9pb3MvUmVwbGF5S2l0U29mdExpbmsubW0gYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2lv
cy9SZXBsYXlLaXRTb2Z0TGluay5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOGUwZDY2NjRkYjI4MzI2MTJiMTgx
MDBiYmEwZTQ3ZTcxY2Q1YzU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9pb3MvUmVwbGF5S2l0U29mdExpbmsubW0KQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2lmIFBMQVRGT1JNKElPUykKKworI2ltcG9ydCA8
UmVwbGF5S2l0L1JlcGxheUtpdC5oPgorI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisKK1NP
RlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJDRShQQUwsIFJlcGxheUtpdCkKKworU09GVF9MSU5L
X0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBSZXBsYXlLaXQsIFJQU2NyZWVuUmVj
b3JkZXIsIFBBTF9FWFBPUlQpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9zcGkvY2YvQ29yZUF1ZGlvU1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3Nw
aS9jZi9Db3JlQXVkaW9TUEkuaAppbmRleCBkNWU5ZGEzZjNjNjc1YzEzMjg4YTU2ZTYyNTExN2Qw
MjM0YTM3ZjBkLi40M2U2YzBhZTg1MDg4NDFkNmQ4NmJkNDJiYWM3ZjJlY2M1MzM2MDc2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9Db3JlQXVkaW9TUEkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9Db3JlQXVkaW9TUEkuaApAQCAtMjcsNiAr
MjcsOCBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAKKyNpbmNsdWRlIDxDb3JlQXVkaW8vQ29y
ZUF1ZGlvVHlwZXMuaD4KKwogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAjaW5jbHVkZSA8
Q29yZUF1ZGlvL0F1ZGlvSGFyZHdhcmVQcml2Lmg+CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50
eHQKaW5kZXggYTRjMGE3NjI3YzM3ODFkZmNkMDQ5MDZmYzUyMzMwOWM5MDczMGMyYy4uYWU5M2Nj
NmFlZDEzYzRkZDJiNDFhMmQxYTJjNzE4MzI3N2U3MzE1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2Eu
dHh0CkBAIC01MjIsOSArNTIyLDExIEBAIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlk
ZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9B
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLmNwcAogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vY29jb2EvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQuY3BwCiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVu
aXQuY3BwCitwbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNv
Y29hLmNwcAogcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURl
dmljZS5tbQogcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURl
dmljZU1hbmFnZXIubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQ29yZUF1
ZGlvQ2FwdHVyZVNvdXJjZUlPUy5tbQorcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL1JlcGxheUtp
dENhcHR1cmVTb3VyY2UubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDUHJvdmlkZXJDb2NvYS5jcHAKIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
VkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRl
b0NhcHR1cmVTb3VyY2UubW0KQEAgLTUzNSw3ICs1MzcsNiBAQCBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZS5jcHAKIHBsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKIHBsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcAogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0Rpc3BsYXlDYXB0dXJlTWFuYWdlckNvY29hLmNwcAotcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0Rpc3BsYXlDYXB0dXJlU291cmNlTWFjLmNwcAogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01l
ZGlhU3RyZWFtVHJhY2tBdWRpb1NvdXJjZVByb3ZpZGVyQ29jb2EuY3BwCiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvTW9ja0F1ZGlvU2hhcmVkVW5pdC5tbQogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzUxOTc0YTJiN2ZmMzc2ZTA1
ZmMxMTNiZTdkMzY3MTdlN2M5MWE3NS4uZDU3NGI3YTZhMDRiMDc4OWUzZmFjMjJhNDM3MWE1MTRl
NzQyZWQ4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtOTgsNiArOTgsOCBAQAogCQkwNzBFODFEMTFCRjI3NjU2MDAxRkRBNDgg
LyogVmlkZW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwRTgxRDAxQkYyNzY1NjAwMUZEQTQ4IC8qIFZpZGVv
VHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uaCAqLzsgfTsKIAkJMDcwRjU0OTgxN0YxMkY2QjAwMTY5
RTA0IC8qIE1lZGlhU3RyZWFtQ29uc3RyYWludHNWYWxpZGF0aW9uQ2xpZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzBGNTQ5NzE3RjEyRjZCMDAx
NjlFMDQgLyogTWVkaWFTdHJlYW1Db25zdHJhaW50c1ZhbGlkYXRpb25DbGllbnQuaCAqLzsgfTsK
IAkJMDcxQTlFQzMxNjhGQkM1NTAwMjYyOUY5IC8qIFRleHRUcmFja0N1ZUdlbmVyaWMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MUE5RUMxMTY4RkI1
NkMwMDI2MjlGOSAvKiBUZXh0VHJhY2tDdWVHZW5lcmljLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMDcxQzAwMzQyNzA3RDk1NTAwRDAyN0M3IC8q
IFJlcGxheUtpdENhcHR1cmVTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3MUMwMDMzMjcwN0Q5NDQwMEQwMjdDNyAvKiBSZXBsYXlLaXRDYXB0
dXJlU291cmNlLmggKi87IH07CisJCTA3MUMwMDRCMjcwQjg2NDkwMEQwMjdDNyAvKiBSZXBsYXlL
aXRDYXB0dXJlU291cmNlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDcxQzAwMzIyNzA3RDk0MzAwRDAyN0M3IC8qIFJlcGxheUtpdENhcHR1cmVTb3Vy
Y2UubW0gKi87IH07CiAJCTA3MUU0OTcwMUFENUFCNUUwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNr
VGFyZ2V0Q29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA3MUU0OTZGMUFENUFCNUUwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2Eu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwNzI1
RUZBOTIzOUFENzkzMDBBNTM4QTkgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzlGNUU0QjBGM0JFQkVBMDA1RTA3
ODIgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDcyNzdFNEQxN0QwMThDQzAwMTU1MzREIC8qIEpTTWVkaWFT
dHJlYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3
Mjc3RTQxMTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtLmggKi87IH07CkBAIC0yMDcs
NiArMjA5LDcgQEAKIAkJMDdCNzExNkQxRDg5OUU2MzAwOUYwRkZCIC8qIENhcHR1cmVEZXZpY2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QjcxMTZB
MUQ4OTlFNjMwMDlGMEZGQiAvKiBDYXB0dXJlRGV2aWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDdCNzExNkYxRDg5OUU2MzAwOUYwRkZCIC8q
IENhcHR1cmVEZXZpY2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwN0I3MTE2QzFEODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVyZURldmljZU1h
bmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwN0I5M0ZGQzIzQjk0RUM3MDAzNkY4RUEgLyogTUlNRVR5cGVDYWNoZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdCOTNGRjkyM0I5MkFBQTAwMzZG
OEVBIC8qIE1JTUVUeXBlQ2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQkwN0JCMUU3MDI3MTc2Q0Q5MDAxREYyODkgLyogRGlzcGxheUNhcHR1
cmVTb3VyY2VDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDdCQjFFNkYyNzE3NkNDQTAwMURGMjg5IC8qIERpc3BsYXlDYXB0dXJlU291cmNlQ29j
b2EuaCAqLzsgfTsKIAkJMDdDMDQ2QzQxRTQyNTA4QjAwNzIwMUU3IC8qIENBQXVkaW9TdHJlYW1E
ZXNjcmlwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDczQjg3NTgxRTQwRENGRDAwNzFDMEVDIC8qIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3QzA0
NkNCMUU0MjY0MTMwMDcyMDFFNyAvKiBBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzNCODc1NjFFNDBEQ0U1MDA3
MUMwRUMgLyogQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3QzE0ODJFMjYxMkEyMUYwMDc3NTgyOCAvKiBN
ZWRpYVNlc3Npb25Db29yZGluYXRvclN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwNzdCQTU4ODI2MTI2RDY2MDA3MkYxOUYgLyogTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3JTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC01ODUyLDYgKzU4NTUsOCBAQAogCQkwNzE3NzY1RjI2QzMwM0I3MDBB
NjMyOTkgLyogQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IENHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2UubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MUE5RUMwMTY4RkI1NkMwMDI2MjlGOSAvKiBUZXh0
VHJhY2tDdWVHZW5lcmljLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFRleHRUcmFja0N1ZUdlbmVyaWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
NzFBOUVDMTE2OEZCNTZDMDAyNjI5RjkgLyogVGV4dFRyYWNrQ3VlR2VuZXJpYy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0VHJhY2tDdWVHZW5lcmljLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MUMwMDMyMjcwN0Q5NDMwMEQwMjdDNyAvKiBSZXBsYXlL
aXRDYXB0dXJlU291cmNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVwbGF5S2l0Q2FwdHVy
ZVNvdXJjZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcxQzAwMzMyNzA3RDk0
NDAwRDAyN0M3IC8qIFJlcGxheUtpdENhcHR1cmVTb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVw
bGF5S2l0Q2FwdHVyZVNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzFF
NDk2RDFBRDVBQTBEMDA4QTUwQjQgLyogTWVkaWFQbGF5YmFja1RhcmdldENvY29hLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVkaWFQbGF5YmFja1RhcmdldENv
Y29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzFFNDk2RjFBRDVBQjVFMDA4
QTUwQjQgLyogTWVkaWFQbGF5YmFja1RhcmdldENvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwNzIyMUI0QzE3Q0VDMzI3MDA4NDhFNTEgLyogTWVkaWFTdHJlYW0uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFTdHJlYW0uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjA0MCwxMCArNjA0NSw4IEBACiAJCTA3OUY1
RTRCMEYzQkVCRUEwMDVFMDc4MiAvKiBNZWRpYVBsYXllclByaXZhdGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5ZXJQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA3QTZEMUU5MTQ5MTEzNzcwMDA1MUQwQyAvKiBNZWRpYUZyYWdtZW50
VVJJUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlh
RnJhZ21lbnRVUklQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0E2
RDFFQTE0OTExMzc3MDAwNTFEMEMgLyogTWVkaWFGcmFnbWVudFVSSVBhcnNlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYUZyYWdtZW50VVJJUGFyc2VyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3QTZEODQ3MUZFQjcwMEIwMDY0NDFERSAvKiBEaXNw
bGF5Q2FwdHVyZVNvdXJjZU1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTA3QTZEODQ4MUZFQjcwMEIwMDY0NDFERSAvKiBEaXNwbGF5Q2FwdHVyZU1hbmFnZXJD
b2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5Q2Fw
dHVyZU1hbmFnZXJDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QTZE
ODQ5MUZFQjcwMEMwMDY0NDFERSAvKiBEaXNwbGF5Q2FwdHVyZU1hbmFnZXJDb2NvYS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5Q2FwdHVyZU1hbmFnZXJDb2NvYS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwN0E2RDg0QTFGRUI3MDBEMDA2NDQxREUg
LyogRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMDdBQTZCNjkxNjZEMDE5NTAwRDQ1NjcxIC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVB
VkZPYmpDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluYmFuZFRleHRUcmFj
a1ByaXZhdGVBVkZPYmpDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QUE2QjZB
MTY2RDAxOTUwMEQ0NTY3MSAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEluYmFuZFRleHRUcmFja1ByaXZh
dGVBVkZPYmpDLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0FCOTk2NTE4REEz
QzAxMDAxODc3MUUgLyogUlRDQ29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSVENDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC02MDYzLDYgKzYwNjYsOCBAQAogCQkwN0I3MTE2QzFEODk5RTYzMDA5RjBGRkIgLyogQ2Fw
dHVyZURldmljZU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2Fw
dHVyZURldmljZU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdCOTNG
RjkyM0I5MkFBQTAwMzZGOEVBIC8qIE1JTUVUeXBlQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTUlN
RVR5cGVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0I5M0ZGQjIzQjky
QUFCMDAzNkY4RUEgLyogTUlNRVR5cGVDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNSU1F
VHlwZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdCQjFFNkUyNzE3
NkNDQTAwMURGMjg5IC8qIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTA3QkIxRTZGMjcxNzZDQ0EwMDFERjI4OSAvKiBEaXNwbGF5Q2FwdHVyZVNv
dXJjZUNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdDMTQ4MjkyNjEyOTU1QzAwNzc1ODI4IC8q
IEpTTWVkaWFTZXNzaW9uUmVhZHlTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01lZGlhU2Vzc2lv
blJlYWR5U3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdDMTQ4MkIyNjEy
OTU1RDAwNzc1ODI4IC8qIEpTTWVkaWFTZXNzaW9uUmVhZHlTdGF0ZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU01lZGlhU2Vzc2lvblJlYWR5U3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwN0MxNDgyQzI2MTI5NTVFMDA3NzU4MjggLyogSlNNZWRpYVNlc3Npb25Db29y
ZGluYXRvclN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3JTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzc5MSw4ICsx
Nzc5Niw2IEBACiAJCQkJM0YzQkI1ODMxRTcwOUVFNDAwQzcwMUYyIC8qIENvcmVBdWRpb0NhcHR1
cmVTb3VyY2UuaCAqLywKIAkJCQkwN0E2RDg0ODFGRUI3MDBCMDA2NDQxREUgLyogRGlzcGxheUNh
cHR1cmVNYW5hZ2VyQ29jb2EuY3BwICovLAogCQkJCTA3QTZEODQ5MUZFQjcwMEMwMDY0NDFERSAv
KiBEaXNwbGF5Q2FwdHVyZU1hbmFnZXJDb2NvYS5oICovLAotCQkJCTA3QTZEODQ3MUZFQjcwMEIw
MDY0NDFERSAvKiBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5jcHAgKi8sCi0JCQkJMDdBNkQ4NEEx
RkVCNzAwRDAwNjQ0MURFIC8qIERpc3BsYXlDYXB0dXJlU291cmNlTWFjLmggKi8sCiAJCQkJNDE3
NEU5MjAyNTM1RENERDAwRkU0MjAyIC8qIE1lZGlhU3RyZWFtVHJhY2tBdWRpb1NvdXJjZVByb3Zp
ZGVyQ29jb2EuY3BwICovLAogCQkJCTQxNzRFOTFFMjUzNURDRDYwMEZFNDIwMiAvKiBNZWRpYVN0
cmVhbVRyYWNrQXVkaW9Tb3VyY2VQcm92aWRlckNvY29hLmggKi8sCiAJCQkJMDc0NEVDRUIxRTBD
NEFFNTAwMEQwOTQ0IC8qIE1vY2tBdWRpb1NoYXJlZFVuaXQuaCAqLywKQEAgLTIwMTA4LDYgKzIw
MTExLDggQEAKIAkJCQk0MUMzQjg5RjI2NDlCMUI3MDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQuaCAqLywKIAkJCQk0MUMzQjhBMDI2NDlCMUI3MDA0
RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmNwcCAqLywKIAkJCQk0
MUMzQjg5QjI2NDlCMUI2MDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJV
bml0LmggKi8sCisJCQkJMDdCQjFFNkUyNzE3NkNDQTAwMURGMjg5IC8qIERpc3BsYXlDYXB0dXJl
U291cmNlQ29jb2EuY3BwICovLAorCQkJCTA3QkIxRTZGMjcxNzZDQ0EwMDFERjI4OSAvKiBEaXNw
bGF5Q2FwdHVyZVNvdXJjZUNvY29hLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNvY29hOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI4ODAyLDYgKzI4ODA3LDggQEAKIAkJCQlDREM2
NzUyMDFFQUVBOUI3MDA3MjdDODQgLyogQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdl
ci5tbSAqLywKIAkJCQkwN0FGRjQyMDFFRkIxNDQ3MDBCNTQ1QjMgLyogQ29yZUF1ZGlvQ2FwdHVy
ZVNvdXJjZUlPUy5oICovLAogCQkJCTA3QUZGNDIxMUVGQjE0NDcwMEI1NDVCMyAvKiBDb3JlQXVk
aW9DYXB0dXJlU291cmNlSU9TLm1tICovLAorCQkJCTA3MUMwMDMzMjcwN0Q5NDQwMEQwMjdDNyAv
KiBSZXBsYXlLaXRDYXB0dXJlU291cmNlLmggKi8sCisJCQkJMDcxQzAwMzIyNzA3RDk0MzAwRDAy
N0M3IC8qIFJlcGxheUtpdENhcHR1cmVTb3VyY2UubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IGlv
czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zMjQ1Niw2ICszMjQ2Myw3IEBACiAJ
CQkJODM1RDU0QzUxRjRERTUzODAwRTYwNjcxIC8qIERpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRjQ3QTA5RDEyMEE5M0E5NzAwMjQwRkFFIC8qIERpc2FibGVk
QWRhcHRhdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdFREFBRkM5MTlBMkNDREMwMDM0REZE
MSAvKiBEaXNrQ2FjaGVNb25pdG9yQ29jb2EuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3QkIxRTcw
MjcxNzZDRDkwMDFERjI4OSAvKiBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkU1RkJEMzFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTU1QUQwOTQwMjQwODk2NDAwMERFNEQyRiAvKiBEaXNwbGF5TGlzdERy
YXdpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1NUFEMDkzRTI0MDg5NjM1MDBERTRE
MkYgLyogRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNTA4OCw2
ICszNTA5Niw3IEBACiAJCQkJQTg5Q0NDNTMwRjQ0RTk4MTAwQjVEQTEwIC8qIFJlcGxhY2VOb2Rl
V2l0aFNwYW5Db21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREY1MTJDRTFEODczRTQ3MDAx
RDY3ODAgLyogUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5MzMwOUUwQTA5OUU2NDkyMDA1NkU1ODEgLyogUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaCBp
biBIZWFkZXJzICovLAorCQkJCTA3MUMwMDM0MjcwN0Q5NTUwMEQwMjdDNyAvKiBSZXBsYXlLaXRD
YXB0dXJlU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkRENkUxRjI2RTdEQkU3MDA4QzFG
NEMgLyogUmVwb3J0aW5nRW5kcG9pbnRzQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5OThB
RUM2MTNGOUQwRUEwMDkwQjFBQSAvKiBSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNERDAxMjUxRjEyRDAwM0VGMjY5IC8qIFJlc2V0SW5wdXRU
eXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTM2ODEwLDYgKzM2ODE5LDcgQEAKIAkJCQlDREEyOUEz
MDFDQkY3NEQ0MDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQubW0gaW4g
U291cmNlcyAqLywKIAkJCQlDREEyOUExNjFDQkRBNTZDMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5MjQyNDkyMTI3QjkzRTAw
NjM0RkNGIC8qIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJMDcxQzAwNEIyNzBCODY0OTAwRDAyN0M3IC8qIFJlcGxheUtpdENhcHR1cmVTb3Vy
Y2UubW0gaW4gU291cmNlcyAqLywKIAkJCQk1QzJCMUFFQzIyMzk3RUJDMDBCOTFDRjcgLyogUmVz
b3VyY2VSZXNwb25zZUNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1MTE1NkUxMkIxNzQ5
QzAwQzk2NzU0IC8qIFNjcm9sbEFuaW1hdG9yTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZF
RTM3MTEyNkYxOTUyOTAwMUI1MTg0IC8qIFNjcm9sbGJhcnNDb250cm9sbGVyTWFjLm1tIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lbi5scHJvai9Mb2NhbGl6YWJs
ZS5zdHJpbmdzIGIvU291cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwpp
bmRleCBlMTI5Y2NhOTgzYjllZmQ0ZjgzZTc0YjIyYjRiZjM2NzQ5OGExNWQzLi5hMDU5ZDdiYjJl
MGJhZjNiMjAwZjk0ZmY3MTIzMDI5YzgwOWRiNjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VuLmxw
cm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKQEAgLTE2Myw2ICsxNjMsOSBAQAogLyogQWxsb3cgYnV0
dG9uIHRpdGxlIGluIHVzZXIgbWVkaWEgcHJvbXB0ICovCiAiQWxsb3cgKHVzZXJtZWRpYSkiID0g
IkFsbG93IjsKIAorLyogQWxsb3cgYnV0dG9uIHRpdGxlIGluIHNjcmVlbiBzaGFyaW5nIHByb21w
dCAqLworIkFsbG93IChzY3JlZW5zaGFyaW5nKSIgPSAiQWxsb3ciOworCiAvKiBNZXNzYWdlIGZv
ciByZXF1ZXN0aW5nIGNyb3NzLXNpdGUgY29va2llIGFuZCB3ZWJzaXRlIGRhdGEgYWNjZXNzLiAq
LwogIkFsbG93IOKAnCVA4oCdIGFuZCDigJwlQOKAnSB0byB1c2UgY29va2llcyBhbmQgd2Vic2l0
ZSBkYXRhIHdoaWxlIGJyb3dzaW5nIOKAnCVA4oCdPyIgPSAiQWxsb3cg4oCcJUDigJ0gYW5kIOKA
nCVA4oCdIHRvIHVzZSBjb29raWVzIGFuZCB3ZWJzaXRlIGRhdGEgd2hpbGUgYnJvd3Npbmcg4oCc
JUDigJ0/IjsKIApAQCAtMTg0LDYgKzE4Nyw5IEBACiAvKiBNZXNzYWdlIGZvciB1c2VyIG1pY3Jv
cGhvbmUgYWNjZXNzIHByb21wdCAqLwogIkFsbG93IOKAnCVA4oCdIHRvIHVzZSB5b3VyIG1pY3Jv
cGhvbmU/IiA9ICJBbGxvdyDigJwlQOKAnSB0byB1c2UgeW91ciBtaWNyb3Bob25lPyI7CiAKKy8q
IE1lc3NhZ2UgZm9yIHNjcmVlbiBzaGFyaW5nIHByb21wdC4gKi8KKyJBbGxvdyDigJwlQOKAnSB0
byBvYnNlcnZlIHlvdXIgc2NyZWVuPyIgPSAiQWxsb3cg4oCcJUDigJ0gdG8gb2JzZXJ2ZSB5b3Vy
IHNjcmVlbj8iOworCiAvKiBXS0Vycm9yVW5rbm93biBkZXNjcmlwdGlvbiAqLwogIkFuIHVua25v
d24gZXJyb3Igb2NjdXJyZWQiID0gIkFuIHVua25vd24gZXJyb3Igb2NjdXJyZWQiOwogCkBAIC0z
OTEsNiArMzk3LDkgQEAKIC8qIERpc2FsbG93IGJ1dHRvbiB0aXRsZSBpbiB1c2VyIG1lZGlhIHBy
b21wdCAqLwogIkRvbuKAmXQgQWxsb3cgKHVzZXJtZWRpYSkiID0gIkRvbuKAmXQgQWxsb3ciOwog
CisvKiBEaXNhbGxvdyBidXR0b24gdGl0bGUgaW4gc2NyZWVuIHNoYXJpbmcgcHJvbXB0ICovCisi
RG9u4oCZdCBBbGxvdyAoc2NyZWVuc2hhcmluZykiID0gIkRvbuKAmXQgQWxsb3ciOworCiAvKiBE
b3dubG9hZCBBdWRpbyBUbyBEaXNrIGNvbnRleHQgbWVudSBpdGVtICovCiAiRG93bmxvYWQgQXVk
aW8iID0gIkRvd25sb2FkIEF1ZGlvIjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oCmluZGV4IDRm
MjI5ZGU2YWZmOWRmMWExZDQyZDc2MGUyNzA5OTA1Yzg4N2Y0MGQuLmVjOTViZmI4MzRhZjNjY2Uy
Mjc0YjVkZTVkZTc2YmYzMzMyMzZhY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULmgKQEAgLTQ5
LDcgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBjb252ZXJ0TWVk
aWFTYW1wbGUoTWVkaWFTYW1wbGUmLCBjb25zdCBJbnRTaXplJik7CiAgICAgUmVmUHRyPE1lZGlh
U2FtcGxlPiBjcmVhdGVNZWRpYVNhbXBsZShDR0ltYWdlUmVmLCBjb25zdCBNZWRpYVRpbWUmLCBj
b25zdCBJbnRTaXplJiwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gPSBNZWRpYVNhbXBsZTo6
VmlkZW9Sb3RhdGlvbjo6Tm9uZSwgYm9vbCBtaXJyb3JlZCA9IGZhbHNlKTsKLSAgICBSZWZQdHI8
TWVkaWFTYW1wbGU+IGNyZWF0ZU1lZGlhU2FtcGxlKENNU2FtcGxlQnVmZmVyUmVmLCBjb25zdCBJ
bnRTaXplJiwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gPSBNZWRpYVNhbXBsZTo6VmlkZW9S
b3RhdGlvbjo6Tm9uZSwgYm9vbCBtaXJyb3JlZCA9IGZhbHNlKTsKKyAgICBSZWZQdHI8TWVkaWFT
YW1wbGU+IGNyZWF0ZU1lZGlhU2FtcGxlKENNU2FtcGxlQnVmZmVyUmVmLCBjb25zdCBNZWRpYVRp
bWUmLCBjb25zdCBJbnRTaXplJiwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gPSBNZWRpYVNh
bXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSwgYm9vbCBtaXJyb3JlZCA9IGZhbHNlKTsKIAogI2lm
ICFQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8TWVkaWFT
YW1wbGU+IGNyZWF0ZU1lZGlhU2FtcGxlKElPU3VyZmFjZVJlZiwgY29uc3QgTWVkaWFUaW1lJiwg
Y29uc3QgSW50U2l6ZSYsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uID0gTWVkaWFTYW1wbGU6
OlZpZGVvUm90YXRpb246Ok5vbmUsIGJvb2wgbWlycm9yZWQgPSBmYWxzZSk7CkBAIC02Nyw3ICs2
Nyw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBjcmVhdGVD
TVNhbXBsZUJ1ZmZlcihJT1N1cmZhY2VSZWYsIGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IEludFNp
emUmKTsKICNlbmRpZgogCi0gICAgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBjb252ZXJ0
Q01TYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYsIGNvbnN0IEludFNpemUmKTsKKyAgICBS
ZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IGNvbnZlcnRDTVNhbXBsZUJ1ZmZlcihDTVNhbXBs
ZUJ1ZmZlclJlZiwgY29uc3QgSW50U2l6ZSYsIGNvbnN0IE1lZGlhVGltZSogPSBudWxscHRyKTsK
ICAgICBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IGNyZWF0ZUNNU2FtcGxlQnVmZmVyKENW
UGl4ZWxCdWZmZXJSZWYsIGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IEludFNpemUmKTsKICAgICBS
ZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IGNyZWF0ZUNNU2FtcGxlQnVmZmVyKENHSW1hZ2VS
ZWYsIGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IEludFNpemUmKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNz
aW9uVlQubW0KaW5kZXggZDU3M2I3Zjk1YWFjYThjMjQxZTVhNTFiOTQwYmIzMDdhMTI3ZjhlZC4u
YWJiOTkyMzkzZTU3NTNiMzY5ZTdjNTU0NDZhMTFiZDA3MzdhZDk0YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVy
U2Vzc2lvblZULm1tCkBAIC0xMDgsNyArMTA4LDcgQEAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJS
ZWY+IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNvbnZlcnRQaXhlbEJ1ZmZlcihDVlBpeGVsQnUK
ICAgICByZXR1cm4gb3V0cHV0QnVmZmVyOwogfQogCi1SZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJS
ZWY+IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNvbnZlcnRDTVNhbXBsZUJ1ZmZlcihDTVNhbXBs
ZUJ1ZmZlclJlZiBzb3VyY2VCdWZmZXIsIGNvbnN0IEludFNpemUmIHNpemUpCitSZXRhaW5QdHI8
Q01TYW1wbGVCdWZmZXJSZWY+IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNvbnZlcnRDTVNhbXBs
ZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZiBzb3VyY2VCdWZmZXIsIGNvbnN0IEludFNpemUmIHNp
emUsIGNvbnN0IE1lZGlhVGltZSogc2FtcGxlVGltZSkKIHsKICAgICBpZiAoIXNvdXJjZUJ1ZmZl
cikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNDEsNiArMTQxLDE0IEBAIFJldGFpblB0
cjxDTVNhbXBsZUJ1ZmZlclJlZj4gSW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y29udmVydENNU2Ft
cGxlQnVmZmVyKENNU2FtCiAgICAgICAgICAgICBSRUxFQVNFX0xPRyhNZWRpYSwgIkltYWdlVHJh
bnNmZXJTZXNzaW9uVlQ6OmNvbnZlcnRDTVNhbXBsZUJ1ZmZlcjogQ01TYW1wbGVCdWZmZXJHZXRT
YW1wbGVUaW1pbmdJbmZvQXJyYXkgZmFpbGVkIHdpdGggZXJyb3IgY29kZTogJWQiLCBzdGF0aWNf
Y2FzdDxpbnQ+KHN0YXR1cykpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAg
IH0KKworICAgICAgICBpZiAoc2FtcGxlVGltZSkgeworICAgICAgICAgICAgYXV0byBjbVRpbWUg
PSBQQUw6OnRvQ01UaW1lKCpzYW1wbGVUaW1lKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgdGlt
aW5nIDogdGltaW5nSW5mb0FycmF5KSB7CisgICAgICAgICAgICAgICAgdGltaW5nLnByZXNlbnRh
dGlvblRpbWVTdGFtcCA9IGNtVGltZTsKKyAgICAgICAgICAgICAgICB0aW1pbmcuZGVjb2RlVGlt
ZVN0YW1wID0gY21UaW1lOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAgIHRpbWVp
bmdJbmZvUHRyID0gdGltaW5nSW5mb0FycmF5LmRhdGEoKTsKICAgICB9CiAKQEAgLTI4Nyw5ICsy
OTUsOSBAQCBSZWZQdHI8TWVkaWFTYW1wbGU+IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNyZWF0
ZU1lZGlhU2FtcGxlKENHSW1hZ2VSZWYgaW1hZ2UsCiAgICAgcmV0dXJuIE1lZGlhU2FtcGxlQVZG
T2JqQzo6Y3JlYXRlKHNhbXBsZUJ1ZmZlci5nZXQoKSwgcm90YXRpb24sIG1pcnJvcmVkKTsKIH0K
IAotUmVmUHRyPE1lZGlhU2FtcGxlPiBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpjcmVhdGVNZWRp
YVNhbXBsZShDTVNhbXBsZUJ1ZmZlclJlZiBidWZmZXIsIGNvbnN0IEludFNpemUmIHNpemUsIE1l
ZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uLCBib29sIG1pcnJvcmVkKQorUmVmUHRy
PE1lZGlhU2FtcGxlPiBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpjcmVhdGVNZWRpYVNhbXBsZShD
TVNhbXBsZUJ1ZmZlclJlZiBidWZmZXIsIGNvbnN0IE1lZGlhVGltZSYgc2FtcGxlVGltZSwgY29u
c3QgSW50U2l6ZSYgc2l6ZSwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb24sIGJv
b2wgbWlycm9yZWQpCiB7Ci0gICAgYXV0byBzYW1wbGVCdWZmZXIgPSBjb252ZXJ0Q01TYW1wbGVC
dWZmZXIoYnVmZmVyLCBzaXplKTsKKyAgICBhdXRvIHNhbXBsZUJ1ZmZlciA9IGNvbnZlcnRDTVNh
bXBsZUJ1ZmZlcihidWZmZXIsIHNpemUsICZzYW1wbGVUaW1lKTsKICAgICBpZiAoIXNhbXBsZUJ1
ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2Eu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvRGlzcGxheUNh
cHR1cmVTb3VyY2VDb2NvYS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2ZiYmZiZjQ4NTAyZGFjN2U1MWJjNGJk
ZjU1ZGFiZjYxMjRmMzhjYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2NvY29hL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuY3BwCkBAIC0w
LDAgKzEsMzExIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGlzcGxheUNhcHR1cmVTb3Vy
Y2VDb2NvYS5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oQ09DT0Ep
CisKKyNpbmNsdWRlICJDR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlLmgiCisjaW5j
bHVkZSAiSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNp
bmNsdWRlICJNZWRpYVNhbXBsZUFWRk9iakMuaCIKKyNpbmNsdWRlICJQaXhlbEJ1ZmZlckNvbmZv
cm1lckNWLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgorI2luY2x1ZGUgIlJl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCIKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3MuaCIKKyNpbmNsdWRlICJSZWFsdGltZVZpZGVvVXRpbGl0aWVzLmgiCisjaW5jbHVk
ZSAiUmVtb3RlVmlkZW9TYW1wbGUuaCIKKyNpbmNsdWRlICJSZXBsYXlLaXRDYXB0dXJlU291cmNl
LmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDxDb3JlTWVkaWEvQ01TeW5jLmg+Cisj
aW5jbHVkZSA8SU9TdXJmYWNlL0lPU3VyZmFjZVJlZi5oPgorI2luY2x1ZGUgPG1hY2gvbWFjaF90
aW1lLmg+CisjaW5jbHVkZSA8cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24u
aD4KKyNpbmNsdWRlIDxwYWwvc3BpL2NmL0NvcmVBdWRpb1NQSS5oPgorI2luY2x1ZGUgPHBhbC9z
cGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CisjaW5jbHVkZSA8cGFsL3NwaS9jb2NvYS9JT1N1cmZh
Y2VTUEkuaD4KKyNpbmNsdWRlIDxzeXMvdGltZS5oPgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFk
Lmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKKyNpbmNsdWRlICJDb3JlVmlk
ZW9Tb2Z0TGluay5oIgorI2luY2x1ZGUgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0NhcHR1cmVTb3VyY2VPckVycm9yIERpc3BsYXlDYXB0dXJl
U291cmNlQ29jb2E6OmNyZWF0ZShjb25zdCBDYXB0dXJlRGV2aWNlJiBkZXZpY2UsIGNvbnN0IE1l
ZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzKQoreworICAgIHN3aXRjaCAoZGV2aWNlLnR5cGUo
KSkgeworICAgIGNhc2UgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuOgorI2lmIFBM
QVRGT1JNKElPUykKKyAgICAgICAgcmV0dXJuIGNyZWF0ZShSZXBsYXlLaXRDYXB0dXJlU291cmNl
OjpjcmVhdGUoZGV2aWNlLnBlcnNpc3RlbnRJZCgpKSwgZGV2aWNlLCBjb25zdHJhaW50cyk7Cisj
ZWxzZQorICAgICAgICByZXR1cm4gY3JlYXRlKENHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVT
b3VyY2U6OmNyZWF0ZShkZXZpY2UucGVyc2lzdGVudElkKCkpLCBkZXZpY2UsIGNvbnN0cmFpbnRz
KTsKKyNlbmRpZgorICAgIGNhc2UgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6V2luZG93Ogor
ICAgIGNhc2UgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6TWljcm9waG9uZToKKyAgICBjYXNl
IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNwZWFrZXI6CisgICAgY2FzZSBDYXB0dXJlRGV2
aWNlOjpEZXZpY2VUeXBlOjpDYW1lcmE6CisgICAgY2FzZSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VU
eXBlOjpVbmtub3duOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorCisgICAgcmV0dXJuIHsgfTsKK30KKworQ2FwdHVyZVNvdXJjZU9yRXJyb3Ig
RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Y3JlYXRlKEV4cGVjdGVkPFVuaXF1ZVJlZjxDYXB0
dXJlcj4sIFN0cmluZz4mJiBjYXB0dXJlciwgY29uc3QgQ2FwdHVyZURldmljZSYgZGV2aWNlLCBj
b25zdCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cykKK3sKKyAgICBpZiAoIWNhcHR1cmVy
Lmhhc192YWx1ZSgpKQorICAgICAgICByZXR1cm4gQ2FwdHVyZVNvdXJjZU9yRXJyb3IgeyBXVEZN
b3ZlKGNhcHR1cmVyLmVycm9yKCkpIH07CisKKyAgICBhdXRvIHNvdXJjZSA9IGFkb3B0UmVmKCpu
ZXcgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYShXVEZNb3ZlKGNhcHR1cmVyLnZhbHVlKCkpLCBT
dHJpbmcgeyBkZXZpY2UubGFiZWwoKSB9KSk7CisgICAgaWYgKGNvbnN0cmFpbnRzKSB7CisgICAg
ICAgIGF1dG8gcmVzdWx0ID0gc291cmNlLT5hcHBseUNvbnN0cmFpbnRzKCpjb25zdHJhaW50cyk7
CisgICAgICAgIGlmIChyZXN1bHQpCisgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShyZXN1bHQu
dmFsdWUoKS5iYWRDb25zdHJhaW50KTsKKyAgICB9CisKKyAgICByZXR1cm4gQ2FwdHVyZVNvdXJj
ZU9yRXJyb3IoV1RGTW92ZShzb3VyY2UpKTsKK30KKworRGlzcGxheUNhcHR1cmVTb3VyY2VDb2Nv
YTo6RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYShVbmlxdWVSZWY8Q2FwdHVyZXI+JiYgY2FwdHVy
ZXIsIFN0cmluZyYmIG5hbWUpCisgICAgOiBSZWFsdGltZU1lZGlhU291cmNlKFR5cGU6OlZpZGVv
LCBXVEZNb3ZlKG5hbWUpKQorICAgICwgbV9jYXB0dXJlcihXVEZNb3ZlKGNhcHR1cmVyKSkKKyAg
ICAsIG1fdGltZXIoUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmRGlzcGxheUNhcHR1cmVTb3Vy
Y2VDb2NvYTo6ZW1pdEZyYW1lKQorICAgICwgbV9jYXB0dXJlcklzUnVubmluZ09ic2VydmVyKFt3
ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoYm9vbCBpc1J1bm5pbmcpIHsgaWYgKHdlYWtU
aGlzKSB3ZWFrVGhpcy0+bm90aWZ5TXV0ZWRDaGFuZ2UoIWlzUnVubmluZyk7IH0pCit7CisgICAg
bV9jYXB0dXJlci0+c2V0SXNSdW5uaW5nT2JzZXJ2ZXIoJm1fY2FwdHVyZXJJc1J1bm5pbmdPYnNl
cnZlcik7Cit9CisKK0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6On5EaXNwbGF5Q2FwdHVyZVNv
dXJjZUNvY29hKCkKK3sKK30KKworY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGll
cyYgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Y2FwYWJpbGl0aWVzKCkKK3sKKyAgICBpZiAo
IW1fY2FwYWJpbGl0aWVzKSB7CisgICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRp
ZXMgY2FwYWJpbGl0aWVzKHNldHRpbmdzKCkuc3VwcG9ydGVkQ29uc3RyYWludHMoKSk7CisKKyAg
ICAgICAgYXV0byBpbnRyaW5zaWNTaXplID0gbV9jYXB0dXJlci0+aW50cmluc2ljU2l6ZSgpOwor
ICAgICAgICBjYXBhYmlsaXRpZXMuc2V0V2lkdGgoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSgxLCBp
bnRyaW5zaWNTaXplLndpZHRoKCkpKTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLnNldEhlaWdodChD
YXBhYmlsaXR5VmFsdWVPclJhbmdlKDEsIGludHJpbnNpY1NpemUuaGVpZ2h0KCkpKTsKKyAgICAg
ICAgY2FwYWJpbGl0aWVzLnNldEZyYW1lUmF0ZShDYXBhYmlsaXR5VmFsdWVPclJhbmdlKC4wMSwg
MzAuMCkpOworCisgICAgICAgIG1fY2FwYWJpbGl0aWVzID0gV1RGTW92ZShjYXBhYmlsaXRpZXMp
OworICAgIH0KKyAgICByZXR1cm4gbV9jYXBhYmlsaXRpZXMudmFsdWUoKTsKK30KKworY29uc3Qg
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpz
ZXR0aW5ncygpCit7CisgICAgaWYgKCFtX2N1cnJlbnRTZXR0aW5ncykgeworICAgICAgICBSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3Mgc2V0dGluZ3M7CisgICAgICAgIHNldHRpbmdzLnNldEZy
YW1lUmF0ZShmcmFtZVJhdGUoKSk7CisKKyAgICAgICAgYXV0byBzaXplID0gdGhpcy0+c2l6ZSgp
OworICAgICAgICBzZXR0aW5ncy5zZXRXaWR0aChzaXplLndpZHRoKCkpOworICAgICAgICBzZXR0
aW5ncy5zZXRIZWlnaHQoc2l6ZS5oZWlnaHQoKSk7CisKKyAgICAgICAgc2V0dGluZ3Muc2V0RGlz
cGxheVN1cmZhY2UobV9jYXB0dXJlci0+c3VyZmFjZVR5cGUoKSk7CisgICAgICAgIHNldHRpbmdz
LnNldExvZ2ljYWxTdXJmYWNlKGZhbHNlKTsKKworICAgICAgICBSZWFsdGltZU1lZGlhU291cmNl
U3VwcG9ydGVkQ29uc3RyYWludHMgc3VwcG9ydGVkQ29uc3RyYWludHM7CisgICAgICAgIHN1cHBv
cnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzRnJhbWVSYXRlKHRydWUpOworICAgICAgICBzdXBw
b3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c1dpZHRoKHRydWUpOworICAgICAgICBzdXBwb3J0
ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c0hlaWdodCh0cnVlKTsKKyAgICAgICAgc3VwcG9ydGVk
Q29uc3RyYWludHMuc2V0U3VwcG9ydHNEaXNwbGF5U3VyZmFjZSh0cnVlKTsKKyAgICAgICAgc3Vw
cG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNMb2dpY2FsU3VyZmFjZSh0cnVlKTsKKworICAg
ICAgICBzZXR0aW5ncy5zZXRTdXBwb3J0ZWRDb25zdHJhaW50cyhzdXBwb3J0ZWRDb25zdHJhaW50
cyk7CisKKyAgICAgICAgbV9jdXJyZW50U2V0dGluZ3MgPSBXVEZNb3ZlKHNldHRpbmdzKTsKKyAg
ICB9CisgICAgcmV0dXJuIG1fY3VycmVudFNldHRpbmdzLnZhbHVlKCk7Cit9CisKK3ZvaWQgRGlz
cGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6c2V0dGluZ3NEaWRDaGFuZ2UoT3B0aW9uU2V0PFJlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZz4gc2V0dGluZ3MpCit7CisgICAgaWYgKHNldHRp
bmdzLmNvbnRhaW5zKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6RnJhbWVSYXRl
KSAmJiBtX3RpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fdGltZXIuc3RhcnRSZXBlYXRpbmco
MV9zIC8gZnJhbWVSYXRlKCkpOworCisgICAgbV9jdXJyZW50U2V0dGluZ3MgPSB7IH07Cit9CisK
K3ZvaWQgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKK3sK
KyAgICBtX3N0YXJ0VGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOworICAgIG1fdGltZXIuc3Rh
cnRSZXBlYXRpbmcoMV9zIC8gZnJhbWVSYXRlKCkpOworCisgICAgY29tbWl0Q29uZmlndXJhdGlv
bigpOworICAgIGlmICghbV9jYXB0dXJlci0+c3RhcnQoKSkKKyAgICAgICAgY2FwdHVyZUZhaWxl
ZCgpOworfQorCit2b2lkIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OnN0b3BQcm9kdWNpbmdE
YXRhKCkKK3sKKyAgICBtX3RpbWVyLnN0b3AoKTsKKyAgICBtX2VsYXBzZWRUaW1lICs9IE1vbm90
b25pY1RpbWU6Om5vdygpIC0gbV9zdGFydFRpbWU7CisgICAgbV9zdGFydFRpbWUgPSBNb25vdG9u
aWNUaW1lOjpuYW4oKTsKKworICAgIG1fY2FwdHVyZXItPnN0b3AoKTsKK30KKworU2Vjb25kcyBE
aXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjplbGFwc2VkVGltZSgpCit7CisgICAgaWYgKHN0ZDo6
aXNuYW4obV9zdGFydFRpbWUpKQorICAgICAgICByZXR1cm4gbV9lbGFwc2VkVGltZTsKKworICAg
IHJldHVybiBtX2VsYXBzZWRUaW1lICsgKE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV9zdGFydFRp
bWUpOworfQorCisvLyBXZSBrZWVwIHRoZSBhc3BlY3QgcmF0aW8gb2YgdGhlIGludHJpbnNpYyBz
aXplIGZvciB0aGUgZnJhbWUgc2l6ZSBhcyBnZXREaXNwbGF5TWVkaWEgYWxsb3dzIG1heCBjb25z
dHJhaW50cyBvbmx5Lgordm9pZCBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjp1cGRhdGVGcmFt
ZVNpemUoKQoreworICAgIGF1dG8gaW50cmluc2ljU2l6ZSA9IHRoaXMtPmludHJpbnNpY1NpemUo
KTsKKworICAgIGF1dG8gZnJhbWVTaXplID0gc2l6ZSgpOworICAgIGlmICghZnJhbWVTaXplLmhl
aWdodCgpKQorICAgICAgICBmcmFtZVNpemUuc2V0SGVpZ2h0KGludHJpbnNpY1NpemUuaGVpZ2h0
KCkpOworICAgIGlmICghZnJhbWVTaXplLndpZHRoKCkpCisgICAgICAgIGZyYW1lU2l6ZS5zZXRX
aWR0aChpbnRyaW5zaWNTaXplLndpZHRoKCkpOworCisgICAgYXV0byBtYXhIZWlnaHQgPSBzdGQ6
Om1pbihmcmFtZVNpemUuaGVpZ2h0KCksIGludHJpbnNpY1NpemUuaGVpZ2h0KCkpOworICAgIGF1
dG8gbWF4V2lkdGggPSBzdGQ6Om1pbihmcmFtZVNpemUud2lkdGgoKSwgaW50cmluc2ljU2l6ZS53
aWR0aCgpKTsKKworICAgIGF1dG8gaGVpZ2h0Rm9yTWF4V2lkdGggPSBtYXhXaWR0aCAqIGludHJp
bnNpY1NpemUuaGVpZ2h0KCkgLyBpbnRyaW5zaWNTaXplLndpZHRoKCk7CisgICAgYXV0byB3aWR0
aEZvck1heEhlaWdodCA9IG1heEhlaWdodCAqIGludHJpbnNpY1NpemUud2lkdGgoKSAvIGludHJp
bnNpY1NpemUuaGVpZ2h0KCk7CisKKyAgICBpZiAoaGVpZ2h0Rm9yTWF4V2lkdGggPD0gbWF4SGVp
Z2h0KSB7CisgICAgICAgIHNldFNpemUoeyBtYXhXaWR0aCwgaGVpZ2h0Rm9yTWF4V2lkdGggfSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKHdpZHRoRm9yTWF4SGVpZ2h0IDw9IG1h
eFdpZHRoKSB7CisgICAgICAgIHNldFNpemUoeyB3aWR0aEZvck1heEhlaWdodCwgbWF4SGVpZ2h0
IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHNldFNpemUoaW50cmluc2ljU2l6ZSk7
Cit9CisKK3ZvaWQgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6ZW1pdEZyYW1lKCkKK3sKKyAg
ICBpZiAobXV0ZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX2ltYWdlVHJhbnNm
ZXJTZXNzaW9uKQorICAgICAgICBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uID0gSW1hZ2VUcmFuc2Zl
clNlc3Npb25WVDo6Y3JlYXRlKHByZWZlcmVkUGl4ZWxCdWZmZXJGb3JtYXQoKSk7CisKKyAgICBh
dXRvIHNhbXBsZVRpbWUgPSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoKGVsYXBzZWRUaW1l
KCkgKyAxMDBfbXMpLnNlY29uZHMoKSk7CisKKyAgICBhdXRvIGZyYW1lID0gbV9jYXB0dXJlci0+
Z2VuZXJhdGVGcmFtZSgpOworICAgIGF1dG8gaW1hZ2VTaXplID0gV1RGOjpzd2l0Y2hPbihmcmFt
ZSwKKyAgICAgICAgW10oUmV0YWluUHRyPElPU3VyZmFjZVJlZj4mIHN1cmZhY2UpIC0+IEludFNp
emUgeworICAgICAgICAgICAgaWYgKCFzdXJmYWNlKQorICAgICAgICAgICAgICAgIHJldHVybiB7
IH07CisKKyAgICAgICAgICAgIHJldHVybiBJbnRTaXplKElPU3VyZmFjZUdldFdpZHRoKHN1cmZh
Y2UuZ2V0KCkpLCBJT1N1cmZhY2VHZXRIZWlnaHQoc3VyZmFjZS5nZXQoKSkpOworICAgICAgICB9
LAorICAgICAgICBbXShSZWZQdHI8TmF0aXZlSW1hZ2U+JiBpbWFnZSkgLT4gSW50U2l6ZSB7Cisg
ICAgICAgICAgICBpZiAoIWltYWdlKQorICAgICAgICAgICAgICAgIHJldHVybiB7IH07CisKKyAg
ICAgICAgICAgIHJldHVybiBpbWFnZS0+c2l6ZSgpOworICAgICAgICB9LAorICAgICAgICBbXShS
ZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+JiBzYW1wbGUpIC0+IEludFNpemUgeworICAgICAg
ICAgICAgaWYgKCFzYW1wbGUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKKworICAgICAg
ICAgICAgQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbiA9IFBBTDo6Q01T
YW1wbGVCdWZmZXJHZXRGb3JtYXREZXNjcmlwdGlvbihzYW1wbGUuZ2V0KCkpOworICAgICAgICAg
ICAgaWYgKFBBTDo6Q01Gb3JtYXREZXNjcmlwdGlvbkdldE1lZGlhVHlwZShmb3JtYXREZXNjcmlw
dGlvbikgIT0ga0NNTWVkaWFUeXBlX1ZpZGVvKQorICAgICAgICAgICAgICAgIHJldHVybiBJbnRT
aXplKCk7CisKKyAgICAgICAgICAgIHJldHVybiBJbnRTaXplKFBBTDo6Q01WaWRlb0Zvcm1hdERl
c2NyaXB0aW9uR2V0UHJlc2VudGF0aW9uRGltZW5zaW9ucyhmb3JtYXREZXNjcmlwdGlvbiwgdHJ1
ZSwgdHJ1ZSkpOworICAgICAgICB9CisgICAgKTsKKworICAgIGlmIChpbWFnZVNpemUuaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoaW50cmluc2ljU2l6ZSgpICE9IGltYWdl
U2l6ZSkgeworICAgICAgICBzZXRJbnRyaW5zaWNTaXplKGltYWdlU2l6ZSk7CisgICAgICAgIHVw
ZGF0ZUZyYW1lU2l6ZSgpOworICAgIH0KKworICAgIGF1dG8gc2FtcGxlID0gV1RGOjpzd2l0Y2hP
bihmcmFtZSwKKyAgICAgICAgW3RoaXMsIHNhbXBsZVRpbWVdKFJldGFpblB0cjxJT1N1cmZhY2VS
ZWY+JiBzdXJmYWNlKSAtPiBSZWZQdHI8TWVkaWFTYW1wbGU+IHsKKyAgICAgICAgICAgIGlmICgh
c3VyZmFjZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICAgICAg
cmV0dXJuIG1faW1hZ2VUcmFuc2ZlclNlc3Npb24tPmNyZWF0ZU1lZGlhU2FtcGxlKHN1cmZhY2Uu
Z2V0KCksIHNhbXBsZVRpbWUsIHNpemUoKSk7CisgICAgICAgIH0sCisgICAgICAgIFt0aGlzLCBz
YW1wbGVUaW1lXShSZWZQdHI8TmF0aXZlSW1hZ2U+JiBpbWFnZSkgLT4gUmVmUHRyPE1lZGlhU2Ft
cGxlPiB7CisgICAgICAgICAgICBpZiAoIWltYWdlKQorICAgICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgICAgICAgICByZXR1cm4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3Jl
YXRlTWVkaWFTYW1wbGUoaW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgc2FtcGxlVGltZSwg
c2l6ZSgpKTsKKyAgICAgICAgfSwKKyAgICAgICAgW3RoaXMsIHNhbXBsZVRpbWVdKFJldGFpblB0
cjxDTVNhbXBsZUJ1ZmZlclJlZj4mIHNhbXBsZSkgLT4gUmVmUHRyPE1lZGlhU2FtcGxlPiB7Cisg
ICAgICAgICAgICBpZiAoIXNhbXBsZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgICAgICAgICAgcmV0dXJuIG1faW1hZ2VUcmFuc2ZlclNlc3Npb24tPmNyZWF0ZU1lZGlh
U2FtcGxlKHNhbXBsZS5nZXQoKSwgc2FtcGxlVGltZSwgc2l6ZSgpKTsKKyAgICAgICAgfQorICAg
ICk7CisKKyAgICBpZiAoIXNhbXBsZSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHZpZGVvU2FtcGxlQXZhaWxhYmxlKCpzYW1w
bGUuZ2V0KCkpOworfQorCit2b2lkIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OnNldExvZ2dl
cihjb25zdCBMb2dnZXImIGxvZ2dlciwgY29uc3Qgdm9pZCogaWRlbnRpZmllcikKK3sKKyAgICBS
ZWFsdGltZU1lZGlhU291cmNlOjpzZXRMb2dnZXIobG9nZ2VyLCBpZGVudGlmaWVyKTsKKyAgICBt
X2NhcHR1cmVyLT5zZXRMb2dnZXIobG9nZ2VyLCBpZGVudGlmaWVyKTsKK30KKwordm9pZCBEaXNw
bGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpDYXB0dXJlcjo6c2V0TG9nZ2VyKGNvbnN0IExvZ2dlciYg
bmV3TG9nZ2VyLCBjb25zdCB2b2lkKiBuZXdMb2dJZGVudGlmaWVyKQoreworICAgIG1fbG9nZ2Vy
ID0gJm5ld0xvZ2dlcjsKKyAgICBtX2xvZ0lkZW50aWZpZXIgPSBuZXdMb2dJZGVudGlmaWVyOwor
fQorCitXVEZMb2dDaGFubmVsJiBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpDYXB0dXJlcjo6
bG9nQ2hhbm5lbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIExvZ1dlYlJUQzsKK30KKwordm9pZCBE
aXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpDYXB0dXJlcjo6Y2FwdHVyZXJJc1J1bm5pbmdDaGFu
Z2VkKGJvb2wgcnVubmluZykKK3sKKyAgICBpZiAobV9vYnNlcnZlcikKKyAgICAgICAgKCptX29i
c2VydmVyKShydW5uaW5nKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9EaXNwbGF5Q2FwdHVyZVNv
dXJjZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9E
aXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTQ2OTg2MzkyODg5ZGE4ZWVk
MzAwMTNiMWRmODU1OWY3MGMwZmVlZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuaApA
QCAtMCwwICsxLDEzMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQ
TEFURk9STShDT0NPQSkKKworI2luY2x1ZGUgIkNhcHR1cmVEZXZpY2UuaCIKKyNpbmNsdWRlICJS
ZWFsdGltZU1lZGlhU291cmNlLmgiCisjaW5jbHVkZSA8d3RmL09ic2VydmVyLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CisKKwordHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZSAqQ0dJbWFnZVJl
ZjsKK3R5cGVkZWYgc3RydWN0IF9fQ1ZCdWZmZXIgKkNWUGl4ZWxCdWZmZXJSZWY7Cit0eXBlZGVm
IHN0cnVjdCBfX0lPU3VyZmFjZSAqSU9TdXJmYWNlUmVmOworCituYW1lc3BhY2UgV1RGIHsKK2Ns
YXNzIE1lZGlhVGltZTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDYXB0dXJl
RGV2aWNlSW5mbzsKK2NsYXNzIEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ7CitjbGFzcyBQaXhlbEJ1
ZmZlckNvbmZvcm1lckNWOworCitjbGFzcyBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hIGZpbmFs
IDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2UsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxEaXNw
bGF5Q2FwdHVyZVNvdXJjZUNvY29hPiB7CitwdWJsaWM6CisgICAgdXNpbmcgRGlzcGxheUZyYW1l
VHlwZSA9IHN0ZDo6dmFyaWFudDxSZWZQdHI8TmF0aXZlSW1hZ2U+LCBSZXRhaW5QdHI8SU9TdXJm
YWNlUmVmPiwgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPj47CisKKyAgICBjbGFzcyBDYXB0
dXJlciA6IHB1YmxpYyBMb2dnZXJIZWxwZXIgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgfkNhcHR1cmVyKCkgPSBkZWZhdWx0
OworCisgICAgICAgIHZpcnR1YWwgYm9vbCBzdGFydCgpID0gMDsKKyAgICAgICAgdmlydHVhbCB2
b2lkIHN0b3AoKSA9IDA7CisgICAgICAgIHZpcnR1YWwgRGlzcGxheUZyYW1lVHlwZSBnZW5lcmF0
ZUZyYW1lKCkgPSAwOworICAgICAgICB2aXJ0dWFsIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUg
ZGV2aWNlVHlwZSgpIGNvbnN0ID0gMDsKKyAgICAgICAgdmlydHVhbCBSZWFsdGltZU1lZGlhU291
cmNlU2V0dGluZ3M6OkRpc3BsYXlTdXJmYWNlVHlwZSBzdXJmYWNlVHlwZSgpIGNvbnN0ID0gMDsK
KyAgICAgICAgdmlydHVhbCB2b2lkIGNvbW1pdENvbmZpZ3VyYXRpb24oY29uc3QgUmVhbHRpbWVN
ZWRpYVNvdXJjZVNldHRpbmdzJikgPSAwOworICAgICAgICB2aXJ0dWFsIEludFNpemUgaW50cmlu
c2ljU2l6ZSgpIGNvbnN0ID0gMDsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0TG9nZ2VyKGNv
bnN0IExvZ2dlciYsIGNvbnN0IHZvaWQqKTsKKyAgICAgICAgY29uc3QgTG9nZ2VyKiBsb2dnZXJQ
dHIoKSBjb25zdCB7IHJldHVybiBtX2xvZ2dlci5nZXQoKTsgfQorICAgICAgICBjb25zdCBMb2dn
ZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFsIHsgQVNTRVJUKG1fbG9nZ2VyKTsgcmV0dXJuICptX2xv
Z2dlci5nZXQoKTsgfQorICAgICAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9CisgICAgICAgIFdURkxvZ0NoYW5uZWwm
IGxvZ0NoYW5uZWwoKSBjb25zdCBmaW5hbDsKKworICAgICAgICB1c2luZyBJc1J1bm5pbmdPYnNl
cnZlciA9IFdURjo6T2JzZXJ2ZXI8dm9pZChib29sKT47CisgICAgICAgIHZvaWQgc2V0SXNSdW5u
aW5nT2JzZXJ2ZXIoSXNSdW5uaW5nT2JzZXJ2ZXIqIG9ic2VydmVyKSB7IG1fb2JzZXJ2ZXIgPSBv
YnNlcnZlcjsgfTsKKworICAgIHByb3RlY3RlZDoKKyAgICAgICAgQ2FwdHVyZXIoKSA9IGRlZmF1
bHQ7CisgICAgICAgIHZvaWQgY2FwdHVyZXJJc1J1bm5pbmdDaGFuZ2VkKGJvb2wpOworCisgICAg
cHJpdmF0ZToKKyAgICAgICAgV2Vha1B0cjxJc1J1bm5pbmdPYnNlcnZlcj4gbV9vYnNlcnZlcjsK
KyAgICAgICAgUmVmUHRyPGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7CisgICAgICAgIGNvbnN0IHZv
aWQqIG1fbG9nSWRlbnRpZmllcjsKKyAgICB9OworCisgICAgc3RhdGljIENhcHR1cmVTb3VyY2VP
ckVycm9yIGNyZWF0ZShjb25zdCBDYXB0dXJlRGV2aWNlJiwgY29uc3QgTWVkaWFDb25zdHJhaW50
cyopOworICAgIHN0YXRpYyBDYXB0dXJlU291cmNlT3JFcnJvciBjcmVhdGUoRXhwZWN0ZWQ8VW5p
cXVlUmVmPENhcHR1cmVyPiwgU3RyaW5nPiYmLCBjb25zdCBDYXB0dXJlRGV2aWNlJiwgY29uc3Qg
TWVkaWFDb25zdHJhaW50cyopOworCisgICAgU2Vjb25kcyBlbGFwc2VkVGltZSgpOworICAgIHZv
aWQgdXBkYXRlRnJhbWVTaXplKCk7CisKK3ByaXZhdGU6CisgICAgRGlzcGxheUNhcHR1cmVTb3Vy
Y2VDb2NvYShVbmlxdWVSZWY8Q2FwdHVyZXI+JiYsIFN0cmluZyYmIG5hbWUpOworICAgIHZpcnR1
YWwgfkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EoKTsKKworICAgIHZvaWQgc3RhcnRQcm9kdWNp
bmdEYXRhKCkgZmluYWw7CisgICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpIGZpbmFsOworICAg
IHZvaWQgc2V0dGluZ3NEaWRDaGFuZ2UoT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5nczo6RmxhZz4pIGZpbmFsOworICAgIGJvb2wgaXNDYXB0dXJlU291cmNlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmls
aXRpZXMmIGNhcGFiaWxpdGllcygpIGZpbmFsOworICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTZXR0aW5ncyYgc2V0dGluZ3MoKSBmaW5hbDsKKyAgICBDYXB0dXJlRGV2aWNlOjpEZXZpY2VU
eXBlIGRldmljZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2NhcHR1cmVyLT5kZXZpY2VUeXBlKCk7
IH0KKyAgICB2b2lkIGNvbW1pdENvbmZpZ3VyYXRpb24oKSBmaW5hbCB7IG1fY2FwdHVyZXItPmNv
bW1pdENvbmZpZ3VyYXRpb24oc2V0dGluZ3MoKSk7IH0KKworICAgIGNvbnN0IGNoYXIqIGxvZ0Ns
YXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29h
IjsgfQorICAgIHZvaWQgc2V0TG9nZ2VyKGNvbnN0IExvZ2dlciYsIGNvbnN0IHZvaWQqKSBmaW5h
bDsKKworICAgIHZvaWQgZW1pdEZyYW1lKCk7CisKKyAgICBVbmlxdWVSZWY8Q2FwdHVyZXI+IG1f
Y2FwdHVyZXI7CisgICAgc3RkOjpvcHRpb25hbDxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0
aWVzPiBtX2NhcGFiaWxpdGllczsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTZXR0aW5ncz4gbV9jdXJyZW50U2V0dGluZ3M7CisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN1
cHBvcnRlZENvbnN0cmFpbnRzIG1fc3VwcG9ydGVkQ29uc3RyYWludHM7CisKKyAgICBNb25vdG9u
aWNUaW1lIG1fc3RhcnRUaW1lIHsgTW9ub3RvbmljVGltZTo6bmFuKCkgfTsKKyAgICBTZWNvbmRz
IG1fZWxhcHNlZFRpbWUgeyAwX3MgfTsKKworICAgIFJ1bkxvb3A6OlRpbWVyPERpc3BsYXlDYXB0
dXJlU291cmNlQ29jb2E+IG1fdGltZXI7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VUcmFu
c2ZlclNlc3Npb25WVD4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbjsKKyAgICBXVEY6Ok9ic2VydmVy
PHZvaWQoYm9vbCk+IG1fY2FwdHVyZXJJc1J1bm5pbmdPYnNlcnZlcjsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRG
T1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vaW9zL1JlcGxheUtpdENhcHR1cmVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2lvcy9SZXBsYXlLaXRDYXB0dXJlU291cmNlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Vl
ZTY2M2Q3N2VkYTFlMWJmNzQwYWZmZjI4MmZlYjllNjZlMDEwOQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9SZXBsYXlLaXRDYXB0dXJl
U291cmNlLmgKQEAgLTAsMCArMSw4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkg
JiYgUExBVEZPUk0oSU9TKQorCisjaW5jbHVkZSAiRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5o
IgorI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitPQkpD
X0NMQVNTIFJQU2NyZWVuUmVjb3JkZXI7CitPQkpDX0NMQVNTIFdlYkNvcmVSZXBsYXlLaXRTY3Jl
ZW5SZWNvcmRlckhlbHBlcjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSZXBsYXlL
aXRDYXB0dXJlU291cmNlIGZpbmFsIDogcHVibGljIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6
OkNhcHR1cmVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVwbGF5S2l0Q2FwdHVyZVNvdXJjZT4g
eworcHVibGljOgorICAgIHN0YXRpYyBFeHBlY3RlZDxVbmlxdWVSZWY8RGlzcGxheUNhcHR1cmVT
b3VyY2VDb2NvYTo6Q2FwdHVyZXI+LCBTdHJpbmc+IGNyZWF0ZShjb25zdCBTdHJpbmcmKTsKKwor
ICAgIFJlcGxheUtpdENhcHR1cmVTb3VyY2UoKTsKKyAgICB2aXJ0dWFsIH5SZXBsYXlLaXRDYXB0
dXJlU291cmNlKCk7CisKKyAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOworCisgICAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8Q2FwdHVyZURldmljZT4gc2NyZWVuQ2FwdHVyZURldmljZVdpdGhQ
ZXJzaXN0ZW50SUQoY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIHZvaWQgc2NyZWVuQ2FwdHVy
ZURldmljZXMoVmVjdG9yPENhcHR1cmVEZXZpY2U+Jik7CisKKyAgICB2b2lkIGNhcHR1cmVTdGF0
ZURpZENoYW5nZSgpOworCitwcml2YXRlOgorCisgICAgLy8gRGlzcGxheUNhcHR1cmVTb3VyY2VD
b2NvYTo6Q2FwdHVyZXIKKyAgICBib29sIHN0YXJ0KCkgZmluYWw7CisgICAgdm9pZCBzdG9wKCkg
ZmluYWw7CisgICAgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6RGlzcGxheUZyYW1lVHlwZSBn
ZW5lcmF0ZUZyYW1lKCkgZmluYWw7CisgICAgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSBkZXZp
Y2VUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6
U2NyZWVuOyB9CisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpEaXNwbGF5U3VyZmFj
ZVR5cGUgc3VyZmFjZVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBSZWFsdGltZU1lZGlhU291
cmNlU2V0dGluZ3M6OkRpc3BsYXlTdXJmYWNlVHlwZTo6TW9uaXRvcjsgfQorICAgIHZpcnR1YWwg
dm9pZCBjb21taXRDb25maWd1cmF0aW9uKGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5n
cyYpIHsgfQorICAgIHZpcnR1YWwgSW50U2l6ZSBpbnRyaW5zaWNTaXplKCkgY29uc3QgeyByZXR1
cm4gbV9pbnRyaW5zaWNTaXplOyB9CisKKyAgICAvLyBMb2dnZXJIZWxwZXIKKyAgICBjb25zdCBj
aGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVwbGF5S2l0Q2FwdHVy
ZVNvdXJjZSI7IH0KKworICAgIHZvaWQgc2NyZWVuUmVjb3JkZXJEaWRPdXRwdXRWaWRlb1NhbXBs
ZShSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+JiYpOworICAgIHZvaWQgc3RhcnRDYXB0dXJl
V2F0Y2hkb2dUaW1lcigpOworICAgIHZvaWQgdmVyaWZ5Q2FwdHVyZUlzQWN0aXZlKCk7CisKKyAg
ICBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IG1fY3VycmVudEZyYW1lOworICAgIFJldGFp
blB0cjxSUFNjcmVlblJlY29yZGVyPiBtX3NjcmVlblJlY29yZGVyOworICAgIFJldGFpblB0cjxX
ZWJDb3JlUmVwbGF5S2l0U2NyZWVuUmVjb3JkZXJIZWxwZXI+IG1fcmVjb3JkZXJIZWxwZXI7CisK
KyAgICBUaW1lciBtX2NhcHR1cmVXYXRjaGRvZ1RpbWVyOworICAgIHVpbnQ2NF90IG1fZnJhbWVD
b3VudCB7IDAgfTsKKyAgICB1aW50NjRfdCBtX2xhc3RGcmFtZUNvdW50IHsgMCB9OworICAgIElu
dFNpemUgbV9pbnRyaW5zaWNTaXplOworICAgIGJvb2wgbV9pc1J1bm5pbmcgeyBmYWxzZSB9Owor
ICAgIGJvb2wgbV9pbnRlcnJ1cHRlZCB7IGZhbHNlIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShJT1Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvUmVw
bGF5S2l0Q2FwdHVyZVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2lvcy9SZXBsYXlLaXRDYXB0dXJlU291cmNlLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1ZjYzNWJmMmNm
OGVhNGMxZmJlZmUxZjgyYTkzOGJiNWVjODMyNjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZS5t
bQpAQCAtMCwwICsxLDI4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZXBsYXlLaXRDYXB0dXJl
U291cmNlLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShJT1MpCisK
KyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgIlJlYWx0aW1lVmlkZW9VdGlsaXRpZXMuaCIK
KyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CisjaW1wb3J0IDx3dGYvVVVJRC5oPgorI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2Vy
Q29udmVyc2lvbi5oPgorCisjaW1wb3J0IDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KKyNp
bXBvcnQgPHBhbC9pb3MvUmVwbGF5S2l0U29mdExpbmsuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CitAaW50ZXJmYWNlIFdlYkNvcmVSZXBsYXlLaXRTY3JlZW5SZWNvcmRlckhlbHBlciA6
IE5TT2JqZWN0IHsKKyAgICBXZWFrUHRyPFJlcGxheUtpdENhcHR1cmVTb3VyY2U+IF9jYWxsYmFj
azsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ2FsbGJhY2s6KFdlYWtQdHI8UmVwbGF5
S2l0Q2FwdHVyZVNvdXJjZT4mJiljYWxsYmFjazsKKy0gKHZvaWQpZGlzY29ubmVjdDsKKy0gKHZv
aWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDprZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hh
bmdlOihOU0RpY3Rpb25hcnkqKWNoYW5nZSBjb250ZXh0Oih2b2lkKiljb250ZXh0OworQGVuZAor
CitAaW1wbGVtZW50YXRpb24gV2ViQ29yZVJlcGxheUtpdFNjcmVlblJlY29yZGVySGVscGVyCist
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDYWxsYmFjazooV2Vha1B0cjxSZXBsYXlLaXRDYXB0dXJl
U291cmNlPiYmKWNhbGxiYWNrCit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBpZiAo
IXNlbGYpCisgICAgICAgIHJldHVybiBzZWxmOworCisgICAgX2NhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayk7CisgICAgW1tQQUw6OmdldFJQU2NyZWVuUmVjb3JkZXJDbGFzcygpIHNoYXJlZFJl
Y29yZGVyXSBhZGRPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJyZWNvcmRpbmciIG9wdGlvbnM6
TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyBjb250ZXh0Oih2b2lkICopbmlsXTsKKworICAg
IHJldHVybiBzZWxmOworfQorCistICh2b2lkKWRpc2Nvbm5lY3QKK3sKKyAgICBfY2FsbGJhY2sg
PSBudWxscHRyOworICAgIFtbUEFMOjpnZXRSUFNjcmVlblJlY29yZGVyQ2xhc3MoKSBzaGFyZWRS
ZWNvcmRlcl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOkAicmVjb3JkaW5nIl07Cit9
CisKKy0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDprZXlQYXRoIG9mT2JqZWN0OihpZClv
YmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnkqKWNoYW5nZSBjb250ZXh0Oih2b2lkKiljb250ZXh0
Cit7CisgICAgVU5VU0VEX1BBUkFNKG9iamVjdCk7CisgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQp
OworCisgICAgaWYgKCFfY2FsbGJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIGlkIG5ld1Zh
bHVlID0gW2NoYW5nZSB2YWx1ZUZvcktleTpOU0tleVZhbHVlQ2hhbmdlTmV3S2V5XTsKKyAgICBi
b29sIHdpbGxDaGFuZ2UgPSBbW2NoYW5nZSB2YWx1ZUZvcktleTpOU0tleVZhbHVlQ2hhbmdlTm90
aWZpY2F0aW9uSXNQcmlvcktleV0gYm9vbFZhbHVlXTsKKworI2lmICFSRUxFQVNFX0xPR19ESVNB
QkxFRAorICAgIGlmIChfY2FsbGJhY2stPmxvZ2dlclB0cigpKSB7CisgICAgICAgIGF1dG8gaWRl
bnRpZmllciA9IExvZ2dlcjo6TG9nU2l0ZUlkZW50aWZpZXIoIlJlcGxheUtpdENhcHR1cmVTb3Vy
Y2UiLCAib2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aCIsIF9jYWxsYmFjay0+bG9nSWRlbnRpZmllcigp
KTsKKyAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiB2YWx1ZVN0cmluZyA9IGFkb3B0TlMoW1tO
U1N0cmluZyBhbGxvY10gaW5pdFdpdGhGb3JtYXQ6QCIlQCIsIG5ld1ZhbHVlXSk7CisgICAgICAg
IF9jYWxsYmFjay0+bG9nZ2VyKCkubG9nQWx3YXlzKF9jYWxsYmFjay0+bG9nQ2hhbm5lbCgpLCBp
ZGVudGlmaWVyLCB3aWxsQ2hhbmdlID8gIndpbGwiIDogImRpZCIsICIgY2hhbmdlICciLCBba2V5
UGF0aCBVVEY4U3RyaW5nXSwgIicgdG8gIiwgW3ZhbHVlU3RyaW5nLmdldCgpIFVURjhTdHJpbmdd
KTsKKyAgICB9CisjZW5kaWYKKworICAgIGlmICh3aWxsQ2hhbmdlKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAicmVjb3JkaW5nIl0pCisgICAg
ICAgIF9jYWxsYmFjay0+Y2FwdHVyZVN0YXRlRGlkQ2hhbmdlKCk7Cit9CitAZW5kCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworYm9vbCBSZXBsYXlLaXRDYXB0dXJlU291cmNlOjppc0F2YWlsYWJs
ZSgpCit7CisgICAgcmV0dXJuIFtQQUw6OmdldFJQU2NyZWVuUmVjb3JkZXJDbGFzcygpIHNoYXJl
ZFJlY29yZGVyXS5pc0F2YWlsYWJsZTsKK30KKworRXhwZWN0ZWQ8VW5pcXVlUmVmPERpc3BsYXlD
YXB0dXJlU291cmNlQ29jb2E6OkNhcHR1cmVyPiwgU3RyaW5nPiBSZXBsYXlLaXRDYXB0dXJlU291
cmNlOjpjcmVhdGUoY29uc3QgU3RyaW5nJikKK3sKKyAgICBpZiAoIWlzQXZhaWxhYmxlKCkpCisg
ICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiU2NyZWVuIGNhcHR1cmUgdW5hdmFpbGFibGUi
X3MpOworCisgICAgcmV0dXJuIFVuaXF1ZVJlZjxEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpD
YXB0dXJlcj4obWFrZVVuaXF1ZVJlZjxSZXBsYXlLaXRDYXB0dXJlU291cmNlPigpKTsKK30KKwor
UmVwbGF5S2l0Q2FwdHVyZVNvdXJjZTo6UmVwbGF5S2l0Q2FwdHVyZVNvdXJjZSgpCisgICAgOiBt
X2NhcHR1cmVXYXRjaGRvZ1RpbWVyKCp0aGlzLCAmUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZTo6dmVy
aWZ5Q2FwdHVyZUlzQWN0aXZlKQoreworfQorCitSZXBsYXlLaXRDYXB0dXJlU291cmNlOjp+UmVw
bGF5S2l0Q2FwdHVyZVNvdXJjZSgpCit7CisgICAgW21fcmVjb3JkZXJIZWxwZXIgZGlzY29ubmVj
dF07CisgICAgc3RvcCgpOworICAgIG1fY3VycmVudEZyYW1lID0gbnVsbHB0cjsKK30KKworYm9v
bCBSZXBsYXlLaXRDYXB0dXJlU291cmNlOjpzdGFydCgpCit7CisgICAgQVNTRVJUKGlzQXZhaWxh
YmxlKCkpOworCisgICAgYXV0byBpZGVudGlmaWVyID0gTE9HSURFTlRJRklFUjsKKyAgICBBTFdB
WVNfTE9HX0lGKGxvZ2dlclB0cigpLCBpZGVudGlmaWVyKTsKKworICAgIGF1dG8gKnNjcmVlblJl
Y29yZGVyID0gW1BBTDo6Z2V0UlBTY3JlZW5SZWNvcmRlckNsYXNzKCkgc2hhcmVkUmVjb3JkZXJd
OworICAgIGlmIChzY3JlZW5SZWNvcmRlci5yZWNvcmRpbmcpCisgICAgICAgIHJldHVybiB0cnVl
OworCisgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBjb25jdXJyZW50IGF1ZGlvIGNhcHR1
cmUuCisgICAgW3NjcmVlblJlY29yZGVyIHNldE1pY3JvcGhvbmVFbmFibGVkOk5PXTsKKworICAg
IGlmICghbV9yZWNvcmRlckhlbHBlcikKKyAgICAgICAgbV9yZWNvcmRlckhlbHBlciA9IChbW1dl
YkNvcmVSZXBsYXlLaXRTY3JlZW5SZWNvcmRlckhlbHBlciBhbGxvY10gaW5pdFdpdGhDYWxsYmFj
azp0aGlzXSk7CisKKyAgICBhdXRvIGNhcHR1cmVIYW5kbGVyID0gbWFrZUJsb2NrUHRyKFt0aGlz
LCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBpZGVudGlmaWVyXShDTVNhbXBsZUJ1ZmZl
clJlZiBfTm9ubnVsbCBzYW1wbGVCdWZmZXIsIFJQU2FtcGxlQnVmZmVyVHlwZSBidWZmZXJUeXBl
LCBOU0Vycm9yICogX051bGxhYmxlIGVycm9yKSB7CisKKyAgICAgICAgaWYgKGJ1ZmZlclR5cGUg
IT0gUlBTYW1wbGVCdWZmZXJUeXBlVmlkZW8pCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgRVJST1JfTE9HX0lGKGVycm9yICYmIGxvZ2dlclB0cigpLCBpZGVudGlmaWVyLCAic3RhcnRD
YXB0dXJlV2l0aEhhbmRsZXIgZmFpbGVkICIsIFtlcnJvciBsb2NhbGl6ZWREZXNjcmlwdGlvbl0u
VVRGOFN0cmluZyk7CisKKyAgICAgICAgKyttX2ZyYW1lQ291bnQ7CisKKyAgICAgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcywgc2FtcGxlQnVmZmVyID0gcmV0YWluUHRyKHNh
bXBsZUJ1ZmZlcildKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgd2Vha1RoaXMtPnNjcmVlblJlY29y
ZGVyRGlkT3V0cHV0VmlkZW9TYW1wbGUoV1RGTW92ZShzYW1wbGVCdWZmZXIpKTsKKyAgICAgICAg
fSk7CisgICAgfSk7CisKKyAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRy
KFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBpZGVudGlmaWVyXShOU0Vycm9y
ICogX051bGxhYmxlIGVycm9yKSB7CisgICAgICAgIC8vIEZJWE1FOiBJdCBzaG91bGQgYmUgc2Fm
ZSB0byBjYWxsIGB2aWRlb1NhbXBsZUF2YWlsYWJsZWAgZnJvbSBhbnkgdGhyZWFkLiBUZXN0IHRo
aXMgYW5kIGdldCByaWQgb2YgdGhpcyBtYWluIHRocmVhZCBob3AuCisgICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbdGhpcywgd2Vha1RoaXMsIGVycm9yID0gcmV0YWluUHRyKGVycm9y
KSwgaWRlbnRpZmllcl0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMgfHwg
IWVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgRVJST1JfTE9H
X0lGKGxvZ2dlclB0cigpLCBpZGVudGlmaWVyLCAiY29tcGxldGlvbkhhbmRsZXIgZmFpbGVkICIs
IFtlcnJvciBsb2NhbGl6ZWREZXNjcmlwdGlvbl0uVVRGOFN0cmluZyk7CisgICAgICAgICAgICB3
ZWFrVGhpcy0+c3RvcCgpOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIFtzY3JlZW5SZWNv
cmRlciBzdGFydENhcHR1cmVXaXRoSGFuZGxlcjpjYXB0dXJlSGFuZGxlci5nZXQoKSBjb21wbGV0
aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlci5nZXQoKV07CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwordm9pZCBSZXBsYXlLaXRDYXB0dXJlU291cmNlOjpzY3JlZW5SZWNvcmRlckRpZE91dHB1
dFZpZGVvU2FtcGxlKFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4mJiBzYW1wbGVCdWZmZXIp
Cit7CisgICAgbV9jdXJyZW50RnJhbWUgPSBzYW1wbGVCdWZmZXIuZ2V0KCk7CisgICAgbV9pbnRy
aW5zaWNTaXplID0gSW50U2l6ZShQQUw6OkNNVmlkZW9Gb3JtYXREZXNjcmlwdGlvbkdldFByZXNl
bnRhdGlvbkRpbWVuc2lvbnMoUEFMOjpDTVNhbXBsZUJ1ZmZlckdldEZvcm1hdERlc2NyaXB0aW9u
KG1fY3VycmVudEZyYW1lLmdldCgpKSwgdHJ1ZSwgdHJ1ZSkpOworfQorCit2b2lkIFJlcGxheUtp
dENhcHR1cmVTb3VyY2U6OmNhcHR1cmVTdGF0ZURpZENoYW5nZSgpCit7CisgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBpZGVu
dGlmaWVyID0gTE9HSURFTlRJRklFUl0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhp
cykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBib29sIGlzUmVjb3JkaW5nID0gISFb
W1BBTDo6Z2V0UlBTY3JlZW5SZWNvcmRlckNsYXNzKCkgc2hhcmVkUmVjb3JkZXJdIGlzUmVjb3Jk
aW5nXTsKKyAgICAgICAgaWYgKG1faXNSdW5uaW5nID09IChpc1JlY29yZGluZyAmJiAhbV9pbnRl
cnJ1cHRlZCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9pc1J1bm5pbmcgPSBp
c1JlY29yZGluZyAmJiAhbV9pbnRlcnJ1cHRlZDsKKyAgICAgICAgQUxXQVlTX0xPR19JRihsb2dn
ZXJQdHIoKSwgaWRlbnRpZmllciwgbV9pc1J1bm5pbmcpOworICAgICAgICBjYXB0dXJlcklzUnVu
bmluZ0NoYW5nZWQobV9pc1J1bm5pbmcpOworICAgIH0pOworfQorCit2b2lkIFJlcGxheUtpdENh
cHR1cmVTb3VyY2U6OnN0b3AoKQoreworICAgIGF1dG8gaWRlbnRpZmllciA9IExPR0lERU5USUZJ
RVI7CisgICAgQUxXQVlTX0xPR19JRihsb2dnZXJQdHIoKSwgaWRlbnRpZmllcik7CisgICAgbV9j
YXB0dXJlV2F0Y2hkb2dUaW1lci5zdG9wKCk7CisgICAgbV9pbnRlcnJ1cHRlZCA9IGZhbHNlOwor
ICAgIG1faXNSdW5uaW5nID0gZmFsc2U7CisKKyAgICBhdXRvICpzY3JlZW5SZWNvcmRlciA9IFtQ
QUw6OmdldFJQU2NyZWVuUmVjb3JkZXJDbGFzcygpIHNoYXJlZFJlY29yZGVyXTsKKyAgICBpZiAo
c2NyZWVuUmVjb3JkZXIucmVjb3JkaW5nKSB7CisgICAgICAgIFtzY3JlZW5SZWNvcmRlciBzdG9w
Q2FwdHVyZVdpdGhIYW5kbGVyOl4oTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvcikgeworICAgICAg
ICAgICAgRVJST1JfTE9HX0lGKGVycm9yICYmIGxvZ2dlclB0cigpLCBpZGVudGlmaWVyLCAic3Rh
cnRDYXB0dXJlV2l0aEhhbmRsZXIgZmFpbGVkICIsIFtlcnJvciBsb2NhbGl6ZWREZXNjcmlwdGlv
bl0uVVRGOFN0cmluZyk7CisgICAgICAgIH1dOworICAgIH0KK30KKworRGlzcGxheUNhcHR1cmVT
b3VyY2VDb2NvYTo6RGlzcGxheUZyYW1lVHlwZSBSZXBsYXlLaXRDYXB0dXJlU291cmNlOjpnZW5l
cmF0ZUZyYW1lKCkKK3sKKyAgICByZXR1cm4gbV9jdXJyZW50RnJhbWU7Cit9CisKK3ZvaWQgUmVw
bGF5S2l0Q2FwdHVyZVNvdXJjZTo6dmVyaWZ5Q2FwdHVyZUlzQWN0aXZlKCkKK3sKKyAgICBBU1NF
UlQobV9pc1J1bm5pbmcgfHwgbV9pbnRlcnJ1cHRlZCk7CisgICAgYXV0byBpZGVudGlmaWVyID0g
TE9HSURFTlRJRklFUjsKKyAgICBpZiAobV9sYXN0RnJhbWVDb3VudCAhPSBtX2ZyYW1lQ291bnQp
IHsKKyAgICAgICAgbV9sYXN0RnJhbWVDb3VudCA9IG1fZnJhbWVDb3VudDsKKyAgICAgICAgaWYg
KG1faW50ZXJydXB0ZWQpIHsKKyAgICAgICAgICAgIEFMV0FZU19MT0dfSUYobG9nZ2VyUHRyKCks
IGlkZW50aWZpZXIsICJmcmFtZSByZWNlaXZlZCBhZnRlciBpbnRlcnJ1cHRpb24sIHVubXV0aW5n
Iik7CisgICAgICAgICAgICBtX2ludGVycnVwdGVkID0gZmFsc2U7CisgICAgICAgICAgICBjYXB0
dXJlU3RhdGVEaWRDaGFuZ2UoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgQUxXQVlTX0xPR19JRihsb2dnZXJQdHIoKSwgaWRlbnRpZmllciwgIm5vIGZyYW1lIHJl
Y2VpdmVkIGluICIsIHN0YXRpY19jYXN0PGludD4obV9jYXB0dXJlV2F0Y2hkb2dUaW1lci5yZXBl
YXRJbnRlcnZhbCgpLnZhbHVlKCkpLCAiIHNlY29uZHMsIG11dGluZyIpOworICAgIG1faW50ZXJy
dXB0ZWQgPSB0cnVlOworICAgIGNhcHR1cmVTdGF0ZURpZENoYW5nZSgpOworfQorCit2b2lkIFJl
cGxheUtpdENhcHR1cmVTb3VyY2U6OnN0YXJ0Q2FwdHVyZVdhdGNoZG9nVGltZXIoKQoreworICAg
IHN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyB2ZXJpZnlDYXB0dXJlSW50ZXJ2YWwgPSAyX3M7Cisg
ICAgaWYgKG1fY2FwdHVyZVdhdGNoZG9nVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9jYXB0dXJlV2F0Y2hkb2dUaW1lci5zdGFydFJlcGVhdGluZyh2ZXJpZnlDYXB0
dXJlSW50ZXJ2YWwpOworICAgIG1fbGFzdEZyYW1lQ291bnQgPSBtX2ZyYW1lQ291bnQ7Cit9CisK
K3N0YXRpYyBTdHJpbmcgc2NyZWVuRGV2aWNlVVVJRCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFN0cmluZz4gc2NyZWVuSUQgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7Cisg
ICAgcmV0dXJuIHNjcmVlbklEOworfQorCitzdGF0aWMgQ2FwdHVyZURldmljZSYgc2NyZWVuRGV2
aWNlKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q2FwdHVyZURldmljZT4gZGV2aWNl
ID0geyBzY3JlZW5EZXZpY2VVVUlEKCksIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNjcmVl
biwgbWFrZVN0cmluZygiU2NyZWVuIDEiKSwgZW1wdHlTdHJpbmcoKSwgdHJ1ZSB9OworICAgIHJl
dHVybiBkZXZpY2U7Cit9CisKK3N0ZDo6b3B0aW9uYWw8Q2FwdHVyZURldmljZT4gUmVwbGF5S2l0
Q2FwdHVyZVNvdXJjZTo6c2NyZWVuQ2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQoY29uc3Qg
U3RyaW5nJiBkaXNwbGF5SUQpCit7CisgICAgaWYgKCFpc0F2YWlsYWJsZSgpKSB7CisgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKFdlYlJUQywgIlJlcGxheUtpdENhcHR1cmVTb3VyY2U6OnNjcmVl
bkNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEOiBzY3JlZW4gY2FwdHVyZSB1bmF2YWlsYWJs
ZSIpOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKworICAgIGlmIChkaXNw
bGF5SUQgIT0gc2NyZWVuRGV2aWNlVVVJRCgpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KFdlYlJUQywgIlJlcGxheUtpdENhcHR1cmVTb3VyY2U6OnNjcmVlbkNhcHR1cmVEZXZpY2VXaXRo
UGVyc2lzdGVudElEOiBpbnZhbGlkIGRpc3BsYXkgSUQiKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICB9CisKKyAgICByZXR1cm4gc2NyZWVuRGV2aWNlKCk7Cit9CisKK3ZvaWQg
UmVwbGF5S2l0Q2FwdHVyZVNvdXJjZTo6c2NyZWVuQ2FwdHVyZURldmljZXMoVmVjdG9yPENhcHR1
cmVEZXZpY2U+JiBkaXNwbGF5cykKK3sKKyAgICBpZiAoaXNBdmFpbGFibGUoKSkKKyAgICAgICAg
ZGlzcGxheXMuYXBwZW5kKHNjcmVlbkRldmljZSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oSU9TKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NHRGlz
cGxheVN0cmVhbUNhcHR1cmVTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0NHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2UuY3BwCmluZGV4IDViZWI5
ZmEyMTk5NTdhZmZkYmUzYmVmN2IwNjcwNWUyNWEzN2RhODYuLmYzYmJiN2M1OGIzZjNmZTU0MDhh
ZjBhMjEzOGQyZDBmODIwMjFlNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9DR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtQ2Fw
dHVyZVNvdXJjZS5jcHAKQEAgLTcxLDkgKzcxLDkgQEAgdm9pZCBDR0Rpc3BsYXlTdHJlYW1DYXB0
dXJlU291cmNlOjpzdG9wKCkKICAgICBtX2lzUnVubmluZyA9IGZhbHNlOwogfQogCi1EaXNwbGF5
Q2FwdHVyZVNvdXJjZU1hYzo6RGlzcGxheUZyYW1lVHlwZSBDR0Rpc3BsYXlTdHJlYW1DYXB0dXJl
U291cmNlOjpnZW5lcmF0ZUZyYW1lKCkKK0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OkRpc3Bs
YXlGcmFtZVR5cGUgQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6Z2VuZXJhdGVGcmFtZSgp
CiB7Ci0gICAgcmV0dXJuIFJldGFpblB0ciB7IG1fY3VycmVudEZyYW1lLmlvU3VyZmFjZSgpIH07
CisgICAgcmV0dXJuIG1fY3VycmVudEZyYW1lOwogfQogCiBib29sIENHRGlzcGxheVN0cmVhbUNh
cHR1cmVTb3VyY2U6OnN0YXJ0RGlzcGxheVN0cmVhbSgpCkBAIC0xMzQsNyArMTM0LDcgQEAgdm9p
ZCBDR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlOjpkaXNwbGF5UmVjb25maWd1cmF0aW9uQ2Fs
bEJhY2soQ0dEaXJlY3REaXNwbGEKICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxDR0Rpc3BsYXlT
dHJlYW1DYXB0dXJlU291cmNlICo+KHVzZXJJbmZvKS0+ZGlzcGxheVdhc1JlY29uZmlndXJlZChk
aXNwbGF5LCBmbGFncyk7CiB9CiAKLXZvaWQgQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6
bmV3RnJhbWUoQ0dEaXNwbGF5U3RyZWFtRnJhbWVTdGF0dXMgc3RhdHVzLCBEaXNwbGF5U3VyZmFj
ZSYmIG5ld0ZyYW1lKQordm9pZCBDR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlOjpuZXdGcmFt
ZShDR0Rpc3BsYXlTdHJlYW1GcmFtZVN0YXR1cyBzdGF0dXMsIFJldGFpblB0cjxJT1N1cmZhY2VS
ZWY+JiYgbmV3RnJhbWUpCiB7CiAgICAgc3dpdGNoIChzdGF0dXMpIHsKICAgICBjYXNlIGtDR0Rp
c3BsYXlTdHJlYW1GcmFtZVN0YXR1c0ZyYW1lQ29tcGxldGU6CkBAIC0xNzEsNyArMTcxLDcgQEAg
Q0dEaXNwbGF5U3RyZWFtRnJhbWVBdmFpbGFibGVIYW5kbGVyIENHRGlzcGxheVN0cmVhbUNhcHR1
cmVTb3VyY2U6OmZyYW1lQXZhaWxhYmwKICAgICAgICAgaWYgKCFyZWN0cyB8fCAhY291bnQpCiAg
ICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3
ZWFrVGhpcywgc3RhdHVzLCBmcmFtZSA9IERpc3BsYXlTdXJmYWNlIHsgZnJhbWVTdXJmYWNlIH1d
KCkgbXV0YWJsZSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMs
IHN0YXR1cywgZnJhbWUgPSByZXRhaW5QdHIoZnJhbWVTdXJmYWNlKV0oKSBtdXRhYmxlIHsKICAg
ICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgd2Vha1RoaXMtPm5ld0ZyYW1lKHN0YXR1cywgV1RGTW92ZShmcmFtZSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NHRGlzcGxheVN0
cmVhbUNhcHR1cmVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9DR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlLmgKaW5kZXggYTE5MDM4ZGNhYWQ0YTFm
YjgzMjU3ODA2OTU2YWQwNDUxMWNmMmM2NC4uNWExMzE2NmJhNGYzZWNhZmE4YmU3NWU0NzMzNTgw
MGI0OWUxZTM4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0NHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZS5o
CkBAIC0yNyw4ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9S
TShNQUMpCiAKLSNpbmNsdWRlICJEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5oIgotI2luY2x1ZGUg
IklPU3VyZmFjZS5oIgorI2luY2x1ZGUgIkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuaCIKICNp
bmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dEaXNwbGF5Q29uZmlndXJhdGlvbi5oPgogI2luY2x1ZGUg
PENvcmVHcmFwaGljcy9DR0Rpc3BsYXlTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvQmxvY2tQdHIu
aD4KQEAgLTQwLDEwICszOSwxMCBAQCB0eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZl
ciAqQ01TYW1wbGVCdWZmZXJSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ0dE
aXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZSA6IHB1YmxpYyBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1h
Yzo6Q2FwdHVyZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDR0Rpc3BsYXlTdHJlYW1DYXB0dXJl
U291cmNlPiB7CitjbGFzcyBDR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlIDogcHVibGljIERp
c3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OkNhcHR1cmVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
Q0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZT4gewogcHVibGljOgogICAgIGV4cGxpY2l0IENH
RGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2UoKSA9IGRlZmF1bHQ7Ci0gICAgfkNHRGlzcGxheVN0
cmVhbUNhcHR1cmVTb3VyY2UoKTsKKyAgICB2aXJ0dWFsIH5DR0Rpc3BsYXlTdHJlYW1DYXB0dXJl
U291cmNlKCk7CiAKIHByb3RlY3RlZDoKICAgICB1c2luZyBGcmFtZUF2YWlsYWJsZUNhbGxiYWNr
ID0gdm9pZCAoXikoQ0dEaXNwbGF5U3RyZWFtRnJhbWVTdGF0dXMsIHVpbnQ2NF90LCBJT1N1cmZh
Y2VSZWYsIENHRGlzcGxheVN0cmVhbVVwZGF0ZVJlZik7CkBAIC02MCw1MSArNTksMTkgQEAgcHJv
dGVjdGVkOgogcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBkaXNwbGF5UmVjb25maWd1cmF0aW9u
Q2FsbEJhY2soQ0dEaXJlY3REaXNwbGF5SUQsIENHRGlzcGxheUNoYW5nZVN1bW1hcnlGbGFncywg
dm9pZCopOwogCi0gICAgLy8gRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OkNhcHR1cmVyCisgICAg
Ly8gRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Q2FwdHVyZXIKICAgICBib29sIHN0YXJ0KCkg
ZmluYWw7CiAgICAgdm9pZCBzdG9wKCkgZmluYWw7Ci0gICAgRGlzcGxheUNhcHR1cmVTb3VyY2VN
YWM6OkRpc3BsYXlGcmFtZVR5cGUgZ2VuZXJhdGVGcmFtZSgpIGZpbmFsOworICAgIERpc3BsYXlD
YXB0dXJlU291cmNlQ29jb2E6OkRpc3BsYXlGcmFtZVR5cGUgZ2VuZXJhdGVGcmFtZSgpIGZpbmFs
OwogICAgIHZvaWQgY29tbWl0Q29uZmlndXJhdGlvbihjb25zdCBSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3MmKSBmaW5hbDsKIAogICAgIHZvaWQgZGlzcGxheVdhc1JlY29uZmlndXJlZChDR0Rp
cmVjdERpc3BsYXlJRCwgQ0dEaXNwbGF5Q2hhbmdlU3VtbWFyeUZsYWdzKTsKICAgICBib29sIHN0
YXJ0RGlzcGxheVN0cmVhbSgpOwogICAgIEZyYW1lQXZhaWxhYmxlQ2FsbGJhY2sgZnJhbWVBdmFp
bGFibGVIYW5kbGVyKCk7CiAKLSAgICBjbGFzcyBEaXNwbGF5U3VyZmFjZSB7Ci0gICAgcHVibGlj
OgotICAgICAgICBEaXNwbGF5U3VyZmFjZSgpID0gZGVmYXVsdDsKLSAgICAgICAgZXhwbGljaXQg
RGlzcGxheVN1cmZhY2UoSU9TdXJmYWNlUmVmIHN1cmZhY2UpCi0gICAgICAgICAgICA6IG1fc3Vy
ZmFjZShzdXJmYWNlKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobV9zdXJmYWNlKQotICAg
ICAgICAgICAgICAgIElPU3VyZmFjZUluY3JlbWVudFVzZUNvdW50KG1fc3VyZmFjZS5nZXQoKSk7
Ci0gICAgICAgIH0KLQotICAgICAgICB+RGlzcGxheVN1cmZhY2UoKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBpZiAobV9zdXJmYWNlKQotICAgICAgICAgICAgICAgIElPU3VyZmFjZURlY3JlbWVu
dFVzZUNvdW50KG1fc3VyZmFjZS5nZXQoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBEaXNwbGF5
U3VyZmFjZSYgb3BlcmF0b3I9KElPU3VyZmFjZVJlZiBzdXJmYWNlKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBpZiAobV9zdXJmYWNlKQotICAgICAgICAgICAgICAgIElPU3VyZmFjZURlY3JlbWVu
dFVzZUNvdW50KG1fc3VyZmFjZS5nZXQoKSk7Ci0gICAgICAgICAgICBpZiAoc3VyZmFjZSkKLSAg
ICAgICAgICAgICAgICBJT1N1cmZhY2VJbmNyZW1lbnRVc2VDb3VudChzdXJmYWNlKTsKLSAgICAg
ICAgICAgIG1fc3VyZmFjZSA9IHN1cmZhY2U7Ci0gICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0g
ICAgICAgIH0KLQotICAgICAgICBJT1N1cmZhY2VSZWYgaW9TdXJmYWNlKCkgY29uc3QgeyByZXR1
cm4gbV9zdXJmYWNlLmdldCgpOyB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBSZXRhaW5QdHI8
SU9TdXJmYWNlUmVmPiBtX3N1cmZhY2U7Ci0gICAgfTsKLQotICAgIHZvaWQgbmV3RnJhbWUoQ0dE
aXNwbGF5U3RyZWFtRnJhbWVTdGF0dXMsIERpc3BsYXlTdXJmYWNlJiYpOwotCi0gICAgRGlzcGxh
eVN1cmZhY2UgbV9jdXJyZW50RnJhbWU7CisgICAgdm9pZCBuZXdGcmFtZShDR0Rpc3BsYXlTdHJl
YW1GcmFtZVN0YXR1cywgUmV0YWluUHRyPElPU3VyZmFjZVJlZj4mJik7CisKKyAgICBSZXRhaW5Q
dHI8SU9TdXJmYWNlUmVmPiBtX2N1cnJlbnRGcmFtZTsKICAgICBSZXRhaW5QdHI8Q0dEaXNwbGF5
U3RyZWFtUmVmPiBtX2Rpc3BsYXlTdHJlYW07CiAgICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVl
dWVfdD4gbV9jYXB0dXJlUXVldWU7CiAgICAgQmxvY2tQdHI8dm9pZChDR0Rpc3BsYXlTdHJlYW1G
cmFtZVN0YXR1cywgdWludDY0X3QsIElPU3VyZmFjZVJlZiwgQ0dEaXNwbGF5U3RyZWFtVXBkYXRl
UmVmKT4gbV9mcmFtZUF2YWlsYWJsZUhhbmRsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNv
dXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NHRGlzcGxh
eVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2UuaAppbmRleCBlMTYwNDQwNzVkYjQyOWM3YzA2NTE4
MzVjYTgzM2Y1OWIzZGJjYjQ2Li5lYjFiZjc5M2RhMTNiMGY2ZTVmZjBhYjE1ZjIyMjYwMzdjNTg1
YzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
Q0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291
cmNlLmgKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDR0Rp
c3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlIGZpbmFsIDogcHVibGljIENHRGlzcGxheVN0
cmVhbUNhcHR1cmVTb3VyY2UgewogcHVibGljOgotICAgIHN0YXRpYyBFeHBlY3RlZDxVbmlxdWVS
ZWY8RGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OkNhcHR1cmVyPiwgU3RyaW5nPiBjcmVhdGUoY29u
c3QgU3RyaW5nJik7CisgICAgc3RhdGljIEV4cGVjdGVkPFVuaXF1ZVJlZjxEaXNwbGF5Q2FwdHVy
ZVNvdXJjZUNvY29hOjpDYXB0dXJlcj4sIFN0cmluZz4gY3JlYXRlKGNvbnN0IFN0cmluZyYpOwog
CiAgICAgZXhwbGljaXQgQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZSh1aW50MzJf
dCk7CiAgICAgfkNHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2UoKSA9IGRlZmF1bHQ7
CkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKIAotICAgIC8vIERpc3BsYXlD
YXB0dXJlU291cmNlTWFjOjpDYXB0dXJlcgorICAgIC8vIERpc3BsYXlDYXB0dXJlU291cmNlQ29j
b2E6OkNhcHR1cmVyCiAgICAgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSBkZXZpY2VUeXBlKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuOyB9
CiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpEaXNwbGF5U3VyZmFjZVR5cGUgc3Vy
ZmFjZVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3M6OkRpc3BsYXlTdXJmYWNlVHlwZTo6TW9uaXRvcjsgfQogICAgIEludFNpemUgaW50cmluc2lj
U2l6ZSgpIGNvbnN0IGZpbmFsOwpAQCAtNjMsMzggKzYzLDYgQEAgcHJpdmF0ZToKICAgICBSZXRh
aW5QdHI8Q0dEaXNwbGF5U3RyZWFtUmVmPiBjcmVhdGVEaXNwbGF5U3RyZWFtKEZyYW1lQXZhaWxh
YmxlQ2FsbGJhY2ssIGRpc3BhdGNoX3F1ZXVlX3QpIGZpbmFsOwogICAgIGJvb2wgY2hlY2tEaXNw
bGF5U3RyZWFtKCkgZmluYWw7CiAKLSAgICBjbGFzcyBEaXNwbGF5U3VyZmFjZSB7Ci0gICAgcHVi
bGljOgotICAgICAgICBEaXNwbGF5U3VyZmFjZSgpID0gZGVmYXVsdDsKLSAgICAgICAgZXhwbGlj
aXQgRGlzcGxheVN1cmZhY2UoSU9TdXJmYWNlUmVmIHN1cmZhY2UpCi0gICAgICAgICAgICA6IG1f
c3VyZmFjZShzdXJmYWNlKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobV9zdXJmYWNlKQot
ICAgICAgICAgICAgICAgIElPU3VyZmFjZUluY3JlbWVudFVzZUNvdW50KG1fc3VyZmFjZS5nZXQo
KSk7Ci0gICAgICAgIH0KLQotICAgICAgICB+RGlzcGxheVN1cmZhY2UoKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBpZiAobV9zdXJmYWNlKQotICAgICAgICAgICAgICAgIElPU3VyZmFjZURlY3Jl
bWVudFVzZUNvdW50KG1fc3VyZmFjZS5nZXQoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBEaXNw
bGF5U3VyZmFjZSYgb3BlcmF0b3I9KElPU3VyZmFjZVJlZiBzdXJmYWNlKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBpZiAobV9zdXJmYWNlKQotICAgICAgICAgICAgICAgIElPU3VyZmFjZURlY3Jl
bWVudFVzZUNvdW50KG1fc3VyZmFjZS5nZXQoKSk7Ci0gICAgICAgICAgICBpZiAoc3VyZmFjZSkK
LSAgICAgICAgICAgICAgICBJT1N1cmZhY2VJbmNyZW1lbnRVc2VDb3VudChzdXJmYWNlKTsKLSAg
ICAgICAgICAgIG1fc3VyZmFjZSA9IHN1cmZhY2U7Ci0gICAgICAgICAgICByZXR1cm4gKnRoaXM7
Ci0gICAgICAgIH0KLQotICAgICAgICBJT1N1cmZhY2VSZWYgaW9TdXJmYWNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdXJmYWNlLmdldCgpOyB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBSZXRhaW5Q
dHI8SU9TdXJmYWNlUmVmPiBtX3N1cmZhY2U7Ci0gICAgfTsKLQogICAgIFJldGFpblB0cjxDR0Rp
c3BsYXlTdHJlYW1SZWY+IG1fZGlzcGxheVN0cmVhbTsKIAogICAgIHVpbnQzMl90IG1fZGlzcGxh
eUlEIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0NHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2UubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVy
ZVNvdXJjZS5tbQppbmRleCBiN2M3NDVkZGRmMTNkNWI3ZjYzNmFlOWVlYjRiNWM4MjQ4NDQwZTM2
Li45YmRhNzI0ZDUzNjk5ZTdiZWU4NDQxN2JlYTk5MTk5MDc5NWI5OTY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtU2Ny
ZWVuQ2FwdHVyZVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZS5tbQpAQCAtNzUsNyAr
NzUsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxDR0RpcmVjdERpc3BsYXlJRD4gdXBkYXRlRGlz
cGxheUlEKENHRGlyZWN0RGlzcGxheUlEIGRpc3BsYQogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiB9CiAKLUV4cGVjdGVkPFVuaXF1ZVJlZjxEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6Q2FwdHVy
ZXI+LCBTdHJpbmc+IENHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2U6OmNyZWF0ZShj
b25zdCBTdHJpbmcmIGRldmljZUlEKQorRXhwZWN0ZWQ8VW5pcXVlUmVmPERpc3BsYXlDYXB0dXJl
U291cmNlQ29jb2E6OkNhcHR1cmVyPiwgU3RyaW5nPiBDR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0
dXJlU291cmNlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBkZXZpY2VJRCkKIHsKICAgICBhdXRvIGRp
c3BsYXlJRCA9IHBhcnNlSW50ZWdlcjx1aW50MzJfdD4oZGV2aWNlSUQpOwogICAgIGlmICghZGlz
cGxheUlEKQpAQCAtODUsNyArODUsNyBAQCBFeHBlY3RlZDxVbmlxdWVSZWY8RGlzcGxheUNhcHR1
cmVTb3VyY2VNYWM6OkNhcHR1cmVyPiwgU3RyaW5nPiBDR0Rpc3BsYXlTdHJlYW1TYwogICAgIGlm
ICghYWN0dWFsRGlzcGxheUlEKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIkludmFs
aWQgZGlzcGxheSBJRCJfcyk7CiAKLSAgICByZXR1cm4gVW5pcXVlUmVmPERpc3BsYXlDYXB0dXJl
U291cmNlTWFjOjpDYXB0dXJlcj4obWFrZVVuaXF1ZVJlZjxDR0Rpc3BsYXlTdHJlYW1TY3JlZW5D
YXB0dXJlU291cmNlPihhY3R1YWxEaXNwbGF5SUQudmFsdWUoKSkpOworICAgIHJldHVybiBVbmlx
dWVSZWY8RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Q2FwdHVyZXI+KG1ha2VVbmlxdWVSZWY8
Q0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZT4oYWN0dWFsRGlzcGxheUlELnZhbHVl
KCkpKTsKIH0KIAogQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZTo6Q0dEaXNwbGF5
U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZSh1aW50MzJfdCBkaXNwbGF5SUQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVN
YW5hZ2VyQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0Rpc3BsYXlDYXB0dXJlTWFuYWdlckNvY29hLmNwcAppbmRleCA4ODU1NGJhYjRjMjAxYjQyM2Yy
NTExYzIyNTVkMjNkODk0OWIyYmVjLi4xOTdjNjZmNjk3MTQ5ODI5NDhkNmI0ZmYwZmMzNDljYzJj
OTRmMzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvRGlzcGxheUNhcHR1cmVNYW5hZ2VyQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZU1hbmFnZXJDb2NvYS5jcHAKQEAg
LTM0LDEwICszNCwxMSBAQAogCiAjaWYgUExBVEZPUk0oTUFDKQogI2luY2x1ZGUgIkNHRGlzcGxh
eVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2UuaCIKLSNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dE
aXJlY3REaXNwbGF5Lmg+CiAjZW5kaWYKIAotI2luY2x1ZGUgIkNvcmVWaWRlb1NvZnRMaW5rLmgi
CisjaWYgUExBVEZPUk0oSU9TKQorI2luY2x1ZGUgIlJlcGxheUtpdENhcHR1cmVTb3VyY2UuaCIK
KyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTYxLDYgKzYyLDggQEAgdm9pZCBE
aXNwbGF5Q2FwdHVyZU1hbmFnZXJDb2NvYTo6dXBkYXRlRGlzcGxheUNhcHR1cmVEZXZpY2VzKCkK
IHsKICNpZiBQTEFURk9STShNQUMpCiAgICAgQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNv
dXJjZTo6c2NyZWVuQ2FwdHVyZURldmljZXMobV9kZXZpY2VzKTsKKyNlbGlmIFBMQVRGT1JNKElP
UykKKyAgICBSZXBsYXlLaXRDYXB0dXJlU291cmNlOjpzY3JlZW5DYXB0dXJlRGV2aWNlcyhtX2Rl
dmljZXMpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMjU2NmUxM2Y3Nzk4ZjRiYzI3YTI1Njgw
NDg5ZjMyZjA1ODg4ZGRhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2Fw
dHVyZVNvdXJjZU1hYy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNzQgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIkRpc3BsYXlDYXB0dXJlU291cmNlTWFjLmgiCi0KLSNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShNQUMpCi0KLSNpbmNsdWRlICJDR0Rpc3BsYXlT
dHJlYW1TY3JlZW5DYXB0dXJlU291cmNlLmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1
ZGUgIk1lZGlhU2FtcGxlQVZGT2JqQy5oIgotI2luY2x1ZGUgIlBpeGVsQnVmZmVyQ29uZm9ybWVy
Q1YuaCIKLSNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlLmgiCi0jaW5jbHVkZSAiUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlci5oIgotI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5ncy5oIgotI2luY2x1ZGUgIlJlYWx0aW1lVmlkZW9VdGlsaXRpZXMuaCIKLSNpbmNsdWRlICJS
ZW1vdGVWaWRlb1NhbXBsZS5oIgotI2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSA8Q29yZU1l
ZGlhL0NNU3luYy5oPgotI2luY2x1ZGUgPG1hY2gvbWFjaF90aW1lLmg+Ci0jaW5jbHVkZSA8cGFs
L2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KLSNpbmNsdWRlIDxwYWwvc3Bp
L2NmL0NvcmVBdWRpb1NQSS5oPgotI2luY2x1ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJ
Lmg+Ci0jaW5jbHVkZSA8cGFsL3NwaS9jb2NvYS9JT1N1cmZhY2VTUEkuaD4KLSNpbmNsdWRlIDxz
eXMvdGltZS5oPgotI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+Ci0KLSNpbmNsdWRlICJDb3JlVmlkZW9Tb2Z0TGluay5oIgotI2luY2x1
ZGUgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LUNhcHR1cmVTb3VyY2VPckVycm9yIERpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpjcmVhdGUoY29u
c3QgQ2FwdHVyZURldmljZSYgZGV2aWNlLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJh
aW50cykKLXsKLSAgICBzd2l0Y2ggKGRldmljZS50eXBlKCkpIHsKLSAgICBjYXNlIENhcHR1cmVE
ZXZpY2U6OkRldmljZVR5cGU6OlNjcmVlbjoKLSAgICAgICAgcmV0dXJuIGNyZWF0ZShDR0Rpc3Bs
YXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlOjpjcmVhdGUoZGV2aWNlLnBlcnNpc3RlbnRJZCgp
KSwgZGV2aWNlLCBjb25zdHJhaW50cyk7Ci0gICAgY2FzZSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VU
eXBlOjpXaW5kb3c6Ci0gICAgY2FzZSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpNaWNyb3Bo
b25lOgotICAgIGNhc2UgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6U3BlYWtlcjoKLSAgICBj
YXNlIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OkNhbWVyYToKLSAgICBjYXNlIENhcHR1cmVE
ZXZpY2U6OkRldmljZVR5cGU6OlVua25vd246Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICByZXR1cm4geyB9OwotfQotCi1DYXB0dXJl
U291cmNlT3JFcnJvciBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6Y3JlYXRlKEV4cGVjdGVkPFVu
aXF1ZVJlZjxDYXB0dXJlcj4sIFN0cmluZz4mJiBjYXB0dXJlciwgY29uc3QgQ2FwdHVyZURldmlj
ZSYgZGV2aWNlLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cykKLXsKLSAgICBp
ZiAoIWNhcHR1cmVyLmhhc192YWx1ZSgpKQotICAgICAgICByZXR1cm4gQ2FwdHVyZVNvdXJjZU9y
RXJyb3IgeyBXVEZNb3ZlKGNhcHR1cmVyLmVycm9yKCkpIH07Ci0KLSAgICBhdXRvIHNvdXJjZSA9
IGFkb3B0UmVmKCpuZXcgRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMoV1RGTW92ZShjYXB0dXJlci52
YWx1ZSgpKSwgU3RyaW5nIHsgZGV2aWNlLmxhYmVsKCkgfSkpOwotICAgIGlmIChjb25zdHJhaW50
cykgewotICAgICAgICBhdXRvIHJlc3VsdCA9IHNvdXJjZS0+YXBwbHlDb25zdHJhaW50cygqY29u
c3RyYWludHMpOwotICAgICAgICBpZiAocmVzdWx0KQotICAgICAgICAgICAgcmV0dXJuIFdURk1v
dmUocmVzdWx0LnZhbHVlKCkuYmFkQ29uc3RyYWludCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIENh
cHR1cmVTb3VyY2VPckVycm9yKFdURk1vdmUoc291cmNlKSk7Ci19Ci0KLURpc3BsYXlDYXB0dXJl
U291cmNlTWFjOjpEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYyhVbmlxdWVSZWY8Q2FwdHVyZXI+JiYg
Y2FwdHVyZXIsIFN0cmluZyYmIG5hbWUpCi0gICAgOiBSZWFsdGltZU1lZGlhU291cmNlKFR5cGU6
OlZpZGVvLCBXVEZNb3ZlKG5hbWUpKQotICAgICwgbV9jYXB0dXJlcihXVEZNb3ZlKGNhcHR1cmVy
KSkKLSAgICAsIG1fdGltZXIoUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmRGlzcGxheUNhcHR1
cmVTb3VyY2VNYWM6OmVtaXRGcmFtZSkKLXsKLX0KLQotRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6
On5EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYygpCi17Ci19Ci0KLWNvbnN0IFJlYWx0aW1lTWVkaWFT
b3VyY2VDYXBhYmlsaXRpZXMmIERpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpjYXBhYmlsaXRpZXMo
KQotewotICAgIGlmICghbV9jYXBhYmlsaXRpZXMpIHsKLSAgICAgICAgUmVhbHRpbWVNZWRpYVNv
dXJjZUNhcGFiaWxpdGllcyBjYXBhYmlsaXRpZXMoc2V0dGluZ3MoKS5zdXBwb3J0ZWRDb25zdHJh
aW50cygpKTsKLQotICAgICAgICBhdXRvIGludHJpbnNpY1NpemUgPSBtX2NhcHR1cmVyLT5pbnRy
aW5zaWNTaXplKCk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5zZXRXaWR0aChDYXBhYmlsaXR5VmFs
dWVPclJhbmdlKDEsIGludHJpbnNpY1NpemUud2lkdGgoKSkpOwotICAgICAgICBjYXBhYmlsaXRp
ZXMuc2V0SGVpZ2h0KENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UoMSwgaW50cmluc2ljU2l6ZS5oZWln
aHQoKSkpOwotICAgICAgICBjYXBhYmlsaXRpZXMuc2V0RnJhbWVSYXRlKENhcGFiaWxpdHlWYWx1
ZU9yUmFuZ2UoLjAxLCAzMC4wKSk7Ci0KLSAgICAgICAgbV9jYXBhYmlsaXRpZXMgPSBXVEZNb3Zl
KGNhcGFiaWxpdGllcyk7Ci0gICAgfQotICAgIHJldHVybiBtX2NhcGFiaWxpdGllcy52YWx1ZSgp
OwotfQotCi1jb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIERpc3BsYXlDYXB0dXJl
U291cmNlTWFjOjpzZXR0aW5ncygpCi17Ci0gICAgaWYgKCFtX2N1cnJlbnRTZXR0aW5ncykgewot
ICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3Mgc2V0dGluZ3M7Ci0gICAgICAgIHNl
dHRpbmdzLnNldEZyYW1lUmF0ZShmcmFtZVJhdGUoKSk7Ci0KLSAgICAgICAgYXV0byBzaXplID0g
dGhpcy0+c2l6ZSgpOwotICAgICAgICBzZXR0aW5ncy5zZXRXaWR0aChzaXplLndpZHRoKCkpOwot
ICAgICAgICBzZXR0aW5ncy5zZXRIZWlnaHQoc2l6ZS5oZWlnaHQoKSk7Ci0KLSAgICAgICAgc2V0
dGluZ3Muc2V0RGlzcGxheVN1cmZhY2UobV9jYXB0dXJlci0+c3VyZmFjZVR5cGUoKSk7Ci0gICAg
ICAgIHNldHRpbmdzLnNldExvZ2ljYWxTdXJmYWNlKGZhbHNlKTsKLQotICAgICAgICBSZWFsdGlt
ZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMgc3VwcG9ydGVkQ29uc3RyYWludHM7Ci0g
ICAgICAgIHN1cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzRnJhbWVSYXRlKHRydWUpOwot
ICAgICAgICBzdXBwb3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c1dpZHRoKHRydWUpOwotICAg
ICAgICBzdXBwb3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c0hlaWdodCh0cnVlKTsKLSAgICAg
ICAgc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNEaXNwbGF5U3VyZmFjZSh0cnVlKTsK
LSAgICAgICAgc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNMb2dpY2FsU3VyZmFjZSh0
cnVlKTsKLQotICAgICAgICBzZXR0aW5ncy5zZXRTdXBwb3J0ZWRDb25zdHJhaW50cyhzdXBwb3J0
ZWRDb25zdHJhaW50cyk7Ci0KLSAgICAgICAgbV9jdXJyZW50U2V0dGluZ3MgPSBXVEZNb3ZlKHNl
dHRpbmdzKTsKLSAgICB9Ci0gICAgcmV0dXJuIG1fY3VycmVudFNldHRpbmdzLnZhbHVlKCk7Ci19
Ci0KLXZvaWQgRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OnNldHRpbmdzRGlkQ2hhbmdlKE9wdGlv
blNldDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc+IHNldHRpbmdzKQotewotICAg
IGlmIChzZXR0aW5ncy5jb250YWlucyhSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6
OkZyYW1lUmF0ZSkgJiYgbV90aW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBtX3RpbWVyLnN0YXJ0
UmVwZWF0aW5nKDFfcyAvIGZyYW1lUmF0ZSgpKTsKLQotICAgIG1fY3VycmVudFNldHRpbmdzID0g
eyB9OwotfQotCi12b2lkIERpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpzdGFydFByb2R1Y2luZ0Rh
dGEoKQotewotICAgIG1fc3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7Ci0gICAgbV90
aW1lci5zdGFydFJlcGVhdGluZygxX3MgLyBmcmFtZVJhdGUoKSk7Ci0KLSAgICBjb21taXRDb25m
aWd1cmF0aW9uKCk7Ci0gICAgaWYgKCFtX2NhcHR1cmVyLT5zdGFydCgpKQotICAgICAgICBjYXB0
dXJlRmFpbGVkKCk7Ci19Ci0KLXZvaWQgRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OnN0b3BQcm9k
dWNpbmdEYXRhKCkKLXsKLSAgICBtX3RpbWVyLnN0b3AoKTsKLSAgICBtX2VsYXBzZWRUaW1lICs9
IE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV9zdGFydFRpbWU7Ci0gICAgbV9zdGFydFRpbWUgPSBN
b25vdG9uaWNUaW1lOjpuYW4oKTsKLQotICAgIG1fY2FwdHVyZXItPnN0b3AoKTsKLX0KLQotU2Vj
b25kcyBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6ZWxhcHNlZFRpbWUoKQotewotICAgIGlmIChz
dGQ6OmlzbmFuKG1fc3RhcnRUaW1lKSkKLSAgICAgICAgcmV0dXJuIG1fZWxhcHNlZFRpbWU7Ci0K
LSAgICByZXR1cm4gbV9lbGFwc2VkVGltZSArIChNb25vdG9uaWNUaW1lOjpub3coKSAtIG1fc3Rh
cnRUaW1lKTsKLX0KLQotLy8gV2Uga2VlcCB0aGUgYXNwZWN0IHJhdGlvIG9mIHRoZSBpbnRyaW5z
aWMgc2l6ZSBmb3IgdGhlIGZyYW1lIHNpemUgYXMgZ2V0RGlzcGxheU1lZGlhIGFsbG93cyBtYXgg
Y29uc3RyYWludHMgb25seS4KLXZvaWQgRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OnVwZGF0ZUZy
YW1lU2l6ZSgpCi17Ci0gICAgYXV0byBpbnRyaW5zaWNTaXplID0gdGhpcy0+aW50cmluc2ljU2l6
ZSgpOwotCi0gICAgYXV0byBmcmFtZVNpemUgPSBzaXplKCk7Ci0gICAgaWYgKCFmcmFtZVNpemUu
aGVpZ2h0KCkpCi0gICAgICAgIGZyYW1lU2l6ZS5zZXRIZWlnaHQoaW50cmluc2ljU2l6ZS5oZWln
aHQoKSk7Ci0gICAgaWYgKCFmcmFtZVNpemUud2lkdGgoKSkKLSAgICAgICAgZnJhbWVTaXplLnNl
dFdpZHRoKGludHJpbnNpY1NpemUud2lkdGgoKSk7Ci0KLSAgICBhdXRvIG1heEhlaWdodCA9IHN0
ZDo6bWluKGZyYW1lU2l6ZS5oZWlnaHQoKSwgaW50cmluc2ljU2l6ZS5oZWlnaHQoKSk7Ci0gICAg
YXV0byBtYXhXaWR0aCA9IHN0ZDo6bWluKGZyYW1lU2l6ZS53aWR0aCgpLCBpbnRyaW5zaWNTaXpl
LndpZHRoKCkpOwotCi0gICAgYXV0byBoZWlnaHRGb3JNYXhXaWR0aCA9IG1heFdpZHRoICogaW50
cmluc2ljU2l6ZS5oZWlnaHQoKSAvIGludHJpbnNpY1NpemUud2lkdGgoKTsKLSAgICBhdXRvIHdp
ZHRoRm9yTWF4SGVpZ2h0ID0gbWF4SGVpZ2h0ICogaW50cmluc2ljU2l6ZS53aWR0aCgpIC8gaW50
cmluc2ljU2l6ZS5oZWlnaHQoKTsKLQotICAgIGlmIChoZWlnaHRGb3JNYXhXaWR0aCA8PSBtYXhI
ZWlnaHQpIHsKLSAgICAgICAgc2V0U2l6ZSh7IG1heFdpZHRoLCBoZWlnaHRGb3JNYXhXaWR0aCB9
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAod2lkdGhGb3JNYXhIZWlnaHQgPD0g
bWF4V2lkdGgpIHsKLSAgICAgICAgc2V0U2l6ZSh7IHdpZHRoRm9yTWF4SGVpZ2h0LCBtYXhIZWln
aHQgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgc2V0U2l6ZShpbnRyaW5zaWNTaXpl
KTsKLX0KLQotdm9pZCBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6ZW1pdEZyYW1lKCkKLXsKLSAg
ICBpZiAobXV0ZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtX2ltYWdlVHJhbnNm
ZXJTZXNzaW9uKQotICAgICAgICBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uID0gSW1hZ2VUcmFuc2Zl
clNlc3Npb25WVDo6Y3JlYXRlKHByZWZlcmVkUGl4ZWxCdWZmZXJGb3JtYXQoKSk7Ci0KLSAgICBh
dXRvIHNhbXBsZVRpbWUgPSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoKGVsYXBzZWRUaW1l
KCkgKyAxMDBfbXMpLnNlY29uZHMoKSk7Ci0KLSAgICBhdXRvIGZyYW1lID0gbV9jYXB0dXJlci0+
Z2VuZXJhdGVGcmFtZSgpOwotICAgIGF1dG8gaW1hZ2VTaXplID0gV1RGOjpzd2l0Y2hPbihmcmFt
ZSwKLSAgICAgICAgW10oUmV0YWluUHRyPElPU3VyZmFjZVJlZj4gc3VyZmFjZSkgLT4gSW50U2l6
ZSB7Ci0gICAgICAgICAgICBpZiAoIXN1cmZhY2UpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHsg
fTsKLQotICAgICAgICAgICAgcmV0dXJuIEludFNpemUoSU9TdXJmYWNlR2V0V2lkdGgoc3VyZmFj
ZS5nZXQoKSksIElPU3VyZmFjZUdldEhlaWdodChzdXJmYWNlLmdldCgpKSk7Ci0gICAgICAgIH0s
Ci0gICAgICAgIFtdKFJlZlB0cjxOYXRpdmVJbWFnZT4gaW1hZ2UpIC0+IEludFNpemUgewotICAg
ICAgICAgICAgaWYgKCFpbWFnZSkKLSAgICAgICAgICAgICAgICByZXR1cm4geyB9OwotCi0gICAg
ICAgICAgICByZXR1cm4gaW1hZ2UtPnNpemUoKTsKLSAgICAgICAgfQotICAgICk7Ci0KLSAgICBp
ZiAoaW1hZ2VTaXplLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGludHJp
bnNpY1NpemUoKSAhPSBpbWFnZVNpemUpIHsKLSAgICAgICAgc2V0SW50cmluc2ljU2l6ZShpbWFn
ZVNpemUpOwotICAgICAgICB1cGRhdGVGcmFtZVNpemUoKTsKLSAgICB9Ci0KLSAgICBhdXRvIHNh
bXBsZSA9IFdURjo6c3dpdGNoT24oZnJhbWUsCi0gICAgICAgIFt0aGlzLCBzYW1wbGVUaW1lXShS
ZXRhaW5QdHI8SU9TdXJmYWNlUmVmPiBzdXJmYWNlKSAtPiBSZWZQdHI8TWVkaWFTYW1wbGU+IHsK
LSAgICAgICAgICAgIGlmICghc3VyZmFjZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLQotICAgICAgICAgICAgcmV0dXJuIG1faW1hZ2VUcmFuc2ZlclNlc3Npb24tPmNyZWF0ZU1l
ZGlhU2FtcGxlKHN1cmZhY2UuZ2V0KCksIHNhbXBsZVRpbWUsIHNpemUoKSk7Ci0gICAgICAgIH0s
Ci0gICAgICAgIFt0aGlzLCBzYW1wbGVUaW1lXShSZWZQdHI8TmF0aXZlSW1hZ2U+IGltYWdlKSAt
PiBSZWZQdHI8TWVkaWFTYW1wbGU+IHsKLSAgICAgICAgICAgIGlmICghaW1hZ2UpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAgICAgICAgIHJldHVybiBtX2ltYWdlVHJh
bnNmZXJTZXNzaW9uLT5jcmVhdGVNZWRpYVNhbXBsZShpbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdl
dCgpLCBzYW1wbGVUaW1lLCBzaXplKCkpOwotICAgICAgICB9Ci0gICAgKTsKLQotICAgIGlmICgh
c2FtcGxlKSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgdmlkZW9TYW1wbGVBdmFpbGFibGUoKnNhbXBsZS5nZXQoKSk7Ci19Ci0K
LXZvaWQgRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OkNhcHR1cmVyOjpzZXRMb2dnZXIoY29uc3Qg
TG9nZ2VyJiBuZXdMb2dnZXIsIGNvbnN0IHZvaWQqIG5ld0xvZ0lkZW50aWZpZXIpCi17Ci0gICAg
bV9sb2dnZXIgPSAmbmV3TG9nZ2VyOwotICAgIG1fbG9nSWRlbnRpZmllciA9IG5ld0xvZ0lkZW50
aWZpZXI7Ci19Ci0KLVdURkxvZ0NoYW5uZWwmIERpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpDYXB0
dXJlcjo6bG9nQ2hhbm5lbCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIExvZ1dlYlJUQzsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkg
JiYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjkzZTc4MzhiOWM0NzczOTJmYjczOGExNGI4ZDUxNGE3
ODZlYTEwYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3Vy
Y2VNYWMuaAorKysgL2Rldi9udWxsCkBAIC0xLDExOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKE1BQykKLQotI2luY2x1ZGUgIkNhcHR1cmVE
ZXZpY2UuaCIKLSNpbmNsdWRlICJJbWFnZVRyYW5zZmVyU2Vzc2lvblZULmgiCi0jaW5jbHVkZSAi
UmVhbHRpbWVNZWRpYVNvdXJjZS5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+Ci0jaW5jbHVkZSA8
d3RmL1VuaXF1ZVJlZi5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi10eXBl
ZGVmIHN0cnVjdCBDR0ltYWdlICpDR0ltYWdlUmVmOwotdHlwZWRlZiBzdHJ1Y3QgX19DVkJ1ZmZl
ciAqQ1ZQaXhlbEJ1ZmZlclJlZjsKLXR5cGVkZWYgc3RydWN0IF9fSU9TdXJmYWNlICpJT1N1cmZh
Y2VSZWY7Ci0KLW5hbWVzcGFjZSBXVEYgewotY2xhc3MgTWVkaWFUaW1lOwotfQotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWNsYXNzIENhcHR1cmVEZXZpY2VJbmZvOwotY2xhc3MgSW1hZ2VUcmFu
c2ZlclNlc3Npb25WVDsKLWNsYXNzIFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y7Ci0KLWNsYXNzIERp
c3BsYXlDYXB0dXJlU291cmNlTWFjIGZpbmFsIDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2Ug
ewotcHVibGljOgotICAgIHVzaW5nIERpc3BsYXlGcmFtZVR5cGUgPSBzdGQ6OnZhcmlhbnQ8UmVm
UHRyPE5hdGl2ZUltYWdlPiwgUmV0YWluUHRyPElPU3VyZmFjZVJlZj4+OwotCi0gICAgY2xhc3Mg
Q2FwdHVyZXIgOiBwdWJsaWMgTG9nZ2VySGVscGVyIHsKLSAgICAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7Ci0gICAgcHVibGljOgotICAgICAgICB2aXJ0dWFsIH5DYXB0dXJlcigpID0gZGVm
YXVsdDsKLQotICAgICAgICB2aXJ0dWFsIGJvb2wgc3RhcnQoKSA9IDA7Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCBzdG9wKCkgPSAwOwotICAgICAgICB2aXJ0dWFsIERpc3BsYXlGcmFtZVR5cGUgZ2Vu
ZXJhdGVGcmFtZSgpID0gMDsKLSAgICAgICAgdmlydHVhbCBDYXB0dXJlRGV2aWNlOjpEZXZpY2VU
eXBlIGRldmljZVR5cGUoKSBjb25zdCA9IDA7Ci0gICAgICAgIHZpcnR1YWwgUmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzOjpEaXNwbGF5U3VyZmFjZVR5cGUgc3VyZmFjZVR5cGUoKSBjb25zdCA9
IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBjb21taXRDb25maWd1cmF0aW9uKGNvbnN0IFJlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYpID0gMDsKLSAgICAgICAgdmlydHVhbCBJbnRTaXplIGlu
dHJpbnNpY1NpemUoKSBjb25zdCA9IDA7Ci0KLSAgICAgICAgdmlydHVhbCB2b2lkIHNldExvZ2dl
cihjb25zdCBMb2dnZXImLCBjb25zdCB2b2lkKik7Ci0gICAgICAgIGNvbnN0IExvZ2dlciogbG9n
Z2VyUHRyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dnZXIuZ2V0KCk7IH0KLSAgICAgICAgY29uc3Qg
TG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IEFTU0VSVChtX2xvZ2dlcik7IHJldHVybiAq
bV9sb2dnZXIuZ2V0KCk7IH0KLSAgICAgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQotICAgICAgICBXVEZMb2dDaGFu
bmVsJiBsb2dDaGFubmVsKCkgY29uc3QgZmluYWw7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBS
ZWZQdHI8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKLSAgICAgICAgY29uc3Qgdm9pZCogbV9sb2dJ
ZGVudGlmaWVyOwotICAgIH07Ci0KLSAgICBzdGF0aWMgQ2FwdHVyZVNvdXJjZU9yRXJyb3IgY3Jl
YXRlKGNvbnN0IENhcHR1cmVEZXZpY2UmLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKik7Ci0gICAg
c3RhdGljIENhcHR1cmVTb3VyY2VPckVycm9yIGNyZWF0ZShFeHBlY3RlZDxVbmlxdWVSZWY8Q2Fw
dHVyZXI+LCBTdHJpbmc+JiYsIGNvbnN0IENhcHR1cmVEZXZpY2UmLCBjb25zdCBNZWRpYUNvbnN0
cmFpbnRzKik7Ci0KLSAgICBTZWNvbmRzIGVsYXBzZWRUaW1lKCk7Ci0gICAgdm9pZCB1cGRhdGVG
cmFtZVNpemUoKTsKLQotcHJpdmF0ZToKLSAgICBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYyhVbmlx
dWVSZWY8Q2FwdHVyZXI+JiYsIFN0cmluZyYmIG5hbWUpOwotICAgIH5EaXNwbGF5Q2FwdHVyZVNv
dXJjZU1hYygpOwotCi0gICAgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKLSAgICB2
b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkgZmluYWw7Ci0gICAgdm9pZCBzZXR0aW5nc0RpZENoYW5n
ZShPcHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnPikgZmluYWw7Ci0g
ICAgYm9vbCBpc0NhcHR1cmVTb3VyY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0g
ICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKCkg
ZmluYWw7Ci0gICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncygp
IGZpbmFsOwotICAgIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgZGV2aWNlVHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY2FwdHVyZXItPmRldmljZVR5cGUoKTsgfQotICAgIHZvaWQgY29tbWl0Q29u
ZmlndXJhdGlvbigpIGZpbmFsIHsgbV9jYXB0dXJlci0+Y29tbWl0Q29uZmlndXJhdGlvbihzZXR0
aW5ncygpKTsgfQotCi0gICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gIkRpc3BsYXlDYXB0dXJlU291cmNlTWFjIjsgfQotCi0gICAgdm9pZCBlbWl0RnJh
bWUoKTsKLQotICAgIFVuaXF1ZVJlZjxDYXB0dXJlcj4gbV9jYXB0dXJlcjsKLSAgICBzdGQ6Om9w
dGlvbmFsPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IG1fY2FwYWJpbGl0aWVzOwot
ICAgIHN0ZDo6b3B0aW9uYWw8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzPiBtX2N1cnJlbnRT
ZXR0aW5nczsKLSAgICBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMgbV9z
dXBwb3J0ZWRDb25zdHJhaW50czsKLQotICAgIE1vbm90b25pY1RpbWUgbV9zdGFydFRpbWUgeyBN
b25vdG9uaWNUaW1lOjpuYW4oKSB9OwotICAgIFNlY29uZHMgbV9lbGFwc2VkVGltZSB7IDBfcyB9
OwotCi0gICAgUnVuTG9vcDo6VGltZXI8RGlzcGxheUNhcHR1cmVTb3VyY2VNYWM+IG1fdGltZXI7
Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VUcmFuc2ZlclNlc3Npb25WVD4gbV9pbWFnZVRy
YW5zZmVyU2Vzc2lvbjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcAppbmRleCBjZTQ5MDkxMDNlNmNjYzhjYTI0NGFl
N2JmNTg5Yzk1MzI1NDE5YTk5Li5hNDE4YTYwNTAyYjdjZmE3ZjM3MzQ5ZjExMTljN2ExZTI2NDVi
MWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwCkBA
IC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiQVZWaWRlb0NhcHR1cmVTb3VyY2UuaCIKICNpbmNs
dWRlICJDb3JlQXVkaW9DYXB0dXJlU291cmNlLmgiCiAjaW5jbHVkZSAiRGlzcGxheUNhcHR1cmVN
YW5hZ2VyQ29jb2EuaCIKLSNpbmNsdWRlICJEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5oIgorI2lu
Y2x1ZGUgIkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgi
CiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1Qcml2YXRlLmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KQEAgLTU5LDE1ICs1OSw3IEBAIGNsYXNzIERpc3BsYXlDYXB0dXJlU291cmNlRmFjdG9y
eU1hYyBmaW5hbCA6IHB1YmxpYyBEaXNwbGF5Q2FwdHVyZUZhY3RvcnkgewogcHVibGljOgogICAg
IENhcHR1cmVTb3VyY2VPckVycm9yIGNyZWF0ZURpc3BsYXlDYXB0dXJlU291cmNlKGNvbnN0IENh
cHR1cmVEZXZpY2UmIGRldmljZSwgY29uc3QgTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMp
IGZpbmFsCiAgICAgewotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAgIFVOVVNFRF9Q
QVJBTShkZXZpY2UpOwotICAgICAgICBVTlVTRURfUEFSQU0oY29uc3RyYWludHMpOwotI2VuZGlm
Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgICAgICByZXR1cm4gRGlzcGxheUNhcHR1cmVTb3VyY2VN
YWM6OmNyZWF0ZShkZXZpY2UsIGNvbnN0cmFpbnRzKTsKLSNlbHNlCi0gICAgICAgIHJldHVybiB7
IH07Ci0jZW5kaWYKKyAgICAgICAgcmV0dXJuIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OmNy
ZWF0ZShkZXZpY2UsIGNvbnN0cmFpbnRzKTsKICAgICB9CiBwcml2YXRlOgogICAgIENhcHR1cmVE
ZXZpY2VNYW5hZ2VyJiBkaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXIoKSB7IHJldHVybiBEaXNw
bGF5Q2FwdHVyZU1hbmFnZXJDb2NvYTo6c2luZ2xldG9uKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlci5jcHAKaW5kZXggMzFkOTIxNDg4MGRmMzQyODlmZmE5ZTZhYjZjZGFmMWMzMDBhMWRmNC4u
MTY2ODRhMTNkNDZkZWRhN2EyMzE5YjhlNTNjOGEwMTEzYjA4YTUzNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlci5jcHAKQEAgLTQzLDcgKzQzLDcgQEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKQog
I2luY2x1ZGUgIkNvcmVBdWRpb0NhcHR1cmVTb3VyY2UuaCIKLSNpbmNsdWRlICJEaXNwbGF5Q2Fw
dHVyZVNvdXJjZU1hYy5oIgorI2luY2x1ZGUgIkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuaCIK
ICNpbmNsdWRlICJNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5oIgogI2VuZGlmCiAKQEAgLTEx
NSwxNCArMTE1LDE0IEBAIHByaXZhdGU6CiB9OwogCiAjaWYgUExBVEZPUk0oTUFDKQotY2xhc3Mg
TW9ja0Rpc3BsYXlDYXB0dXJlciBmaW5hbCA6IHB1YmxpYyBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1h
Yzo6Q2FwdHVyZXIgeworY2xhc3MgTW9ja0Rpc3BsYXlDYXB0dXJlciBmaW5hbCA6IHB1YmxpYyBE
aXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpDYXB0dXJlciB7CiBwdWJsaWM6CiAgICAgZXhwbGlj
aXQgTW9ja0Rpc3BsYXlDYXB0dXJlcihjb25zdCBDYXB0dXJlRGV2aWNlJik7CiAKIHByaXZhdGU6
CiAgICAgYm9vbCBzdGFydCgpIGZpbmFsOwogICAgIHZvaWQgc3RvcCgpIGZpbmFsICB7IG1fc291
cmNlLT5zdG9wKCk7IH0KLSAgICBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6RGlzcGxheUZyYW1l
VHlwZSBnZW5lcmF0ZUZyYW1lKCkgZmluYWw7CisgICAgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2Nv
YTo6RGlzcGxheUZyYW1lVHlwZSBnZW5lcmF0ZUZyYW1lKCkgZmluYWw7CiAgICAgUmVhbHRpbWVN
ZWRpYVNvdXJjZVNldHRpbmdzOjpEaXNwbGF5U3VyZmFjZVR5cGUgc3VyZmFjZVR5cGUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkRpc3BsYXlTdXJm
YWNlVHlwZTo6TW9uaXRvcjsgfQogICAgIHZvaWQgY29tbWl0Q29uZmlndXJhdGlvbihjb25zdCBS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmKSBmaW5hbDsKICAgICBDYXB0dXJlRGV2aWNlOjpE
ZXZpY2VUeXBlIGRldmljZVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBDYXB0dXJlRGV2aWNl
OjpEZXZpY2VUeXBlOjpTY3JlZW47IH0KQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIE1vY2tEaXNw
bGF5Q2FwdHVyZXI6OmNvbW1pdENvbmZpZ3VyYXRpb24oY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJj
ZVNldHRpbmdzJgogICAgIG1fc2V0dGluZ3MgPSBzZXR0aW5nczsKIH0KIAotRGlzcGxheUNhcHR1
cmVTb3VyY2VNYWM6OkRpc3BsYXlGcmFtZVR5cGUgTW9ja0Rpc3BsYXlDYXB0dXJlcjo6Z2VuZXJh
dGVGcmFtZSgpCitEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpEaXNwbGF5RnJhbWVUeXBlIE1v
Y2tEaXNwbGF5Q2FwdHVyZXI6OmdlbmVyYXRlRnJhbWUoKQogewogICAgIGlmIChhdXRvKiBpbWFn
ZUJ1ZmZlciA9IG1fc291cmNlLT5pbWFnZUJ1ZmZlcigpKQogICAgICAgICByZXR1cm4gaW1hZ2VC
dWZmZXItPmNvcHlOYXRpdmVJbWFnZSgpOwpAQCAtMTg2LDcgKzE4Niw3IEBAIHB1YmxpYzoKICAg
ICAgICAgY2FzZSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW46CiAgICAgICAgIGNh
c2UgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6V2luZG93OgogI2lmIFBMQVRGT1JNKE1BQykK
LSAgICAgICAgICAgIHJldHVybiBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6Y3JlYXRlKFVuaXF1
ZVJlZjxEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6Q2FwdHVyZXI+KG1ha2VVbmlxdWVSZWY8TW9j
a0Rpc3BsYXlDYXB0dXJlcj4oZGV2aWNlKSksIGRldmljZSwgY29uc3RyYWludHMpOworICAgICAg
ICAgICAgcmV0dXJuIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OmNyZWF0ZShVbmlxdWVSZWY8
RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Q2FwdHVyZXI+KG1ha2VVbmlxdWVSZWY8TW9ja0Rp
c3BsYXlDYXB0dXJlcj4oZGV2aWNlKSksIGRldmljZSwgY29uc3RyYWludHMpOwogI2VsaWYgVVNF
KEdTVFJFQU1FUikKICAgICAgICAgICAgIHJldHVybiBNb2NrRGlzcGxheUNhcHR1cmVTb3VyY2VH
U3RyZWFtZXI6OmNyZWF0ZShkZXZpY2UsIGNvbnN0cmFpbnRzKTsKICNlbHNlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9NZWRpYVBlcm1pc3Npb25VdGlsaXRp
ZXMubW0KaW5kZXggMWQ3NmE4ODA2ZDAxOTliZTgxMTdlNTg3OTcyMDk0ZjMxODVkMmFkZS4uMGJj
MTdmZmZmYTdhNDhlYzdhYmE0OTBjZjNhZjIzYjJiNWY2YjhkMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5t
bQpAQCAtMTQxLDYgKzE0MSw4IEBAIHN0YXRpYyBOU1N0cmluZyAqYWxlcnRNZXNzYWdlVGV4dChN
ZWRpYVBlcm1pc3Npb25SZWFzb24gcmVhc29uLCBjb25zdCBXZWJDb3JlOjpTCiAgICAgICAgIHJl
dHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpXRUJfVUlfTlNTVFJJTkcoQCJBbGxvdyDi
gJwlQOKAnSB0byB1c2UgeW91ciBjYW1lcmEgYW5kIG1pY3JvcGhvbmU/IiwgQCJNZXNzYWdlIGZv
ciB1c2VyIG1lZGlhIHByb21wdCIpLCB2aXNpYmxlT3JpZ2luXTsKICAgICBjYXNlIE1lZGlhUGVy
bWlzc2lvblJlYXNvbjo6TWljcm9waG9uZToKICAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OldFQl9VSV9OU1NUUklORyhAIkFsbG93IOKAnCVA4oCdIHRvIHVzZSB5b3Vy
IG1pY3JvcGhvbmU/IiwgQCJNZXNzYWdlIGZvciB1c2VyIG1pY3JvcGhvbmUgYWNjZXNzIHByb21w
dCIpLCB2aXNpYmxlT3JpZ2luXTsKKyAgICBjYXNlIE1lZGlhUGVybWlzc2lvblJlYXNvbjo6U2Ny
ZWVuQ2FwdHVyZToKKyAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OldF
Ql9VSV9OU1NUUklORyhAIkFsbG93IOKAnCVA4oCdIHRvIG9ic2VydmUgeW91ciBzY3JlZW4/Iiwg
QCJNZXNzYWdlIGZvciBzY3JlZW4gc2hhcmluZyBwcm9tcHQiKSwgdmlzaWJsZU9yaWdpbl07CiAg
ICAgY2FzZSBNZWRpYVBlcm1pc3Npb25SZWFzb246OkRldmljZU9yaWVudGF0aW9uOgogICAgICAg
ICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6V0VCX1VJX05TU1RSSU5HKEAi4oCc
JUDigJ0gV291bGQgTGlrZSB0byBBY2Nlc3MgTW90aW9uIGFuZCBPcmllbnRhdGlvbiIsIEAiTWVz
c2FnZSBmb3IgcmVxdWVzdGluZyBhY2Nlc3MgdG8gdGhlIGRldmljZSBtb3Rpb24gYW5kIG9yaWVu
dGF0aW9uIiksIHZpc2libGVPcmlnaW5dOwogICAgIGNhc2UgTWVkaWFQZXJtaXNzaW9uUmVhc29u
OjpHZW9sb2NhdGlvbjoKQEAgLTE1Nyw2ICsxNTksOCBAQCBzdGF0aWMgTlNTdHJpbmcgKmFsbG93
QnV0dG9uVGV4dChNZWRpYVBlcm1pc3Npb25SZWFzb24gcmVhc29uKQogICAgIGNhc2UgTWVkaWFQ
ZXJtaXNzaW9uUmVhc29uOjpDYW1lcmFBbmRNaWNyb3Bob25lOgogICAgIGNhc2UgTWVkaWFQZXJt
aXNzaW9uUmVhc29uOjpNaWNyb3Bob25lOgogICAgICAgICByZXR1cm4gV0VCX1VJX1NUUklOR19L
RVkoQCJBbGxvdyIsICJBbGxvdyAodXNlcm1lZGlhKSIsIEAiQWxsb3cgYnV0dG9uIHRpdGxlIGlu
IHVzZXIgbWVkaWEgcHJvbXB0Iik7CisgICAgY2FzZSBNZWRpYVBlcm1pc3Npb25SZWFzb246OlNj
cmVlbkNhcHR1cmU6CisgICAgICAgIHJldHVybiBXRUJfVUlfU1RSSU5HX0tFWShAIkFsbG93Iiwg
IkFsbG93IChzY3JlZW5zaGFyaW5nKSIsIEAiQWxsb3cgYnV0dG9uIHRpdGxlIGluIHNjcmVlbiBz
aGFyaW5nIHByb21wdCIpOwogICAgIGNhc2UgTWVkaWFQZXJtaXNzaW9uUmVhc29uOjpEZXZpY2VP
cmllbnRhdGlvbjoKICAgICAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkdfS0VZKEAiQWxsb3ciLCAi
QWxsb3cgKGRldmljZSBtb3Rpb24gYW5kIG9yaWVudGF0aW9uIGFjY2VzcykiLCBAIkJ1dHRvbiB0
aXRsZSBpbiBEZXZpY2UgT3JpZW50YXRpb24gUGVybWlzc2lvbiBBUEkgcHJvbXB0Iik7CiAgICAg
Y2FzZSBNZWRpYVBlcm1pc3Npb25SZWFzb246Okdlb2xvY2F0aW9uOgpAQCAtMTczLDYgKzE3Nyw4
IEBAIHN0YXRpYyBOU1N0cmluZyAqZG9Ob3RBbGxvd0J1dHRvblRleHQoTWVkaWFQZXJtaXNzaW9u
UmVhc29uIHJlYXNvbikKICAgICBjYXNlIE1lZGlhUGVybWlzc2lvblJlYXNvbjo6Q2FtZXJhQW5k
TWljcm9waG9uZToKICAgICBjYXNlIE1lZGlhUGVybWlzc2lvblJlYXNvbjo6TWljcm9waG9uZToK
ICAgICAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkdfS0VZKEAiRG9u4oCZdCBBbGxvdyIsICJEb27i
gJl0IEFsbG93ICh1c2VybWVkaWEpIiwgQCJEaXNhbGxvdyBidXR0b24gdGl0bGUgaW4gdXNlciBt
ZWRpYSBwcm9tcHQiKTsKKyAgICBjYXNlIE1lZGlhUGVybWlzc2lvblJlYXNvbjo6U2NyZWVuQ2Fw
dHVyZToKKyAgICAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkdfS0VZKEAiRG9u4oCZdCBBbGxvdyIs
ICJEb27igJl0IEFsbG93IChzY3JlZW5zaGFyaW5nKSIsIEAiRGlzYWxsb3cgYnV0dG9uIHRpdGxl
IGluIHNjcmVlbiBzaGFyaW5nIHByb21wdCIpOwogICAgIGNhc2UgTWVkaWFQZXJtaXNzaW9uUmVh
c29uOjpEZXZpY2VPcmllbnRhdGlvbjoKICAgICAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkdfS0VZ
KEAiQ2FuY2VsIiwgIkNhbmNlbCAoZGV2aWNlIG1vdGlvbiBhbmQgb3JpZW50YXRpb24gYWNjZXNz
KSIsIEAiQnV0dG9uIHRpdGxlIGluIERldmljZSBPcmllbnRhdGlvbiBQZXJtaXNzaW9uIEFQSSBw
cm9tcHQiKTsKICAgICBjYXNlIE1lZGlhUGVybWlzc2lvblJlYXNvbjo6R2VvbG9jYXRpb246CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQppbmRleCBkNzhmNGNj
MGQ1NjU1OTRjMGU4ODFhNDU4YmZkMjM4Mjc1MTIyNDVhLi45YWY0YTdhOTRmYTk3MzIwNGMxNWQ1
NjBkYmY2YjdkMzQyNDI4YTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9VSURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJ
RGVsZWdhdGUubW0KQEAgLTExMTcsNiArMTExNywxMSBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xp
ZW50OjpkZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJv
eAogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKHJlcXVlc3QucmVxdWlyZXNEaXNw
bGF5Q2FwdHVyZSgpICYmIHJlcXVlc3QuY2FuUHJvbXB0Rm9yR2V0RGlzcGxheU1lZGlhKCkpIHsK
KyAgICAgICAgcmVxdWVzdC5wcm9tcHRGb3JHZXREaXNwbGF5TWVkaWEoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKwogICAgIC8vIEZJWE1FOiBQcm92aWRlIGEgc3BlY2lmaWMgZGVsZWdhdGUg
Zm9yIGRpc3BsYXkgY2FwdHVyZS4KICAgICBpZiAoIXJlcXVlc3QucmVxdWlyZXNEaXNwbGF5Q2Fw
dHVyZSgpICYmIHJlc3BvbmRzVG9SZXF1ZXN0TWVkaWFDYXB0dXJlUGVybWlzc2lvbikgewogICAg
ICAgICBhdXRvIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUo
ZGVsZWdhdGUsIEBzZWxlY3Rvcih3ZWJWaWV3OnJlcXVlc3RNZWRpYUNhcHR1cmVQZXJtaXNzaW9u
Rm9yT3JpZ2luOmluaXRpYXRlZEJ5RnJhbWU6dHlwZTpkZWNpc2lvbkhhbmRsZXI6KSk7CkBAIC0x
MTI3LDcgKzExMzIsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lG
b3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveAogCiAgICAgICAgICAgICBz
d2l0Y2ggKGRlY2lzaW9uKSB7CiAgICAgICAgICAgICBjYXNlIFdLUGVybWlzc2lvbkRlY2lzaW9u
UHJvbXB0OgotICAgICAgICAgICAgICAgIHByb3RlY3RlZFJlcXVlc3QtPnByb21wdCgpOworICAg
ICAgICAgICAgICAgIHByb3RlY3RlZFJlcXVlc3QtPnByb21wdEZvckdldFVzZXJNZWRpYSgpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBXS1Blcm1pc3Npb25EZWNp
c2lvbkdyYW50OiB7CiAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiB2aWRlb0RldmljZVVJ
RCA9IHByb3RlY3RlZFJlcXVlc3QtPnJlcXVpcmVzVmlkZW9DYXB0dXJlKCkgPyBwcm90ZWN0ZWRS
ZXF1ZXN0LT52aWRlb0RldmljZVVJRHMoKS5maXJzdCgpIDogU3RyaW5nKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5oCmluZGV4IDQx
ZWE0MWRmZDQ3NDZhZmNiN2ZiMzI3NDVkODNmZDdlZjg0MmVjMDMuLjE3NWMyNWMwNDQ5MzJmYTVi
NmFhNjU3MTI5OTMzOWExMmExNjExOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5oCkBAIC01NCw3ICs1NCw4IEBAIGVudW0gY2xh
c3MgTWVkaWFQZXJtaXNzaW9uUmVhc29uIHsKICAgICBNaWNyb3Bob25lLAogICAgIERldmljZU9y
aWVudGF0aW9uLAogICAgIEdlb2xvY2F0aW9uLAotICAgIFNwZWVjaFJlY29nbml0aW9uCisgICAg
U3BlZWNoUmVjb2duaXRpb24sCisgICAgU2NyZWVuQ2FwdHVyZQogfTsKIAogI2lmIFBMQVRGT1JN
KENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmNwcAppbmRleCAyY2ZjYWU3NDg1ZDU5ZmQxY2FlOTM0
YWU0NTg2MDdlZDA3ZjczNDgzLi43NWJiZGMxZDAyMWFlNjU5NjEyMGZmNTY2NDVkN2ZlYmI4NGQ4
ZjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmNwcApAQCAtMTQwLDE3ICsxNDAsMjkgQEAgU3RyaW5n
IGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJv
eHk6OlVzZXJNZWRpYUFjY2UKICAgICByZXR1cm4gdmFsdWVzW3N0YXRpY19jYXN0PHNpemVfdD4o
ZW51bWVyYXRpb25WYWx1ZSldOwogfQogCi12b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
UHJveHk6OnByb21wdCgpCit2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OnBy
b21wdEZvckdldERpc3BsYXlNZWRpYSgpCiB7CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYg
UExBVEZPUk0oQ09DT0EpCi0gICAgQVNTRVJUKG1fbWFuYWdlcik7Ci0gICAgaWYgKCFtX21hbmFn
ZXIpIHsKKyAgICBBU1NFUlQobV9tYW5hZ2VyICYmIGNhblByb21wdEZvckdldERpc3BsYXlNZWRp
YSgpKTsKKyAgICBpZiAoIW1fbWFuYWdlciB8fCAhY2FuUHJvbXB0Rm9yR2V0RGlzcGxheU1lZGlh
KCkpIHsKICAgICAgICAgZGVueShVc2VyTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb246OlBlcm1pc3Np
b25EZW5pZWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKHJlcXVpcmVzRGlz
cGxheUNhcHR1cmUoKSkgewotICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGdldERpc3BsYXlN
ZWRpYSBwcm9tcHQsIGZvciBub3cgZGVueS4KKyAgICBhbGVydEZvclBlcm1pc3Npb24obV9tYW5h
Z2VyLT5wYWdlKCksIE1lZGlhUGVybWlzc2lvblJlYXNvbjo6U2NyZWVuQ2FwdHVyZSwgdG9wTGV2
ZWxEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IFJlZiB7ICp0aGlzIH1dKGJvb2wgZ3JhbnRlZCkgeworICAgICAgICBpZiAoIWdyYW50ZWQpCisg
ICAgICAgICAgICBkZW55KFVzZXJNZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbjo6UGVybWlzc2lvbkRl
bmllZCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFsbG93KCk7CisgICAgfSk7CisjZW5k
aWYKK30KKwordm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5Ojpwcm9tcHRGb3JH
ZXRVc2VyTWVkaWEoKQoreworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKENP
Q09BKQorICAgIEFTU0VSVChtX21hbmFnZXIpOworICAgIGlmICghbV9tYW5hZ2VyKSB7CiAgICAg
ICAgIGRlbnkoVXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uOjpQZXJtaXNzaW9uRGVuaWVkKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE1OCwxNSArMTcwLDQwIEBAIHZvaWQgVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6cHJvbXB0KCkKICAgICBNZWRpYVBlcm1pc3Npb25S
ZWFzb24gcmVhc29uID0gTWVkaWFQZXJtaXNzaW9uUmVhc29uOjpDYW1lcmE7CiAgICAgaWYgKHJl
cXVpcmVzQXVkaW9DYXB0dXJlKCkpCiAgICAgICAgIHJlYXNvbiA9IHJlcXVpcmVzVmlkZW9DYXB0
dXJlKCkgPyBNZWRpYVBlcm1pc3Npb25SZWFzb246OkNhbWVyYUFuZE1pY3JvcGhvbmUgOiBNZWRp
YVBlcm1pc3Npb25SZWFzb246Ok1pY3JvcGhvbmU7CisKICAgICBhbGVydEZvclBlcm1pc3Npb24o
bV9tYW5hZ2VyLT5wYWdlKCksIHJlYXNvbiwgdG9wTGV2ZWxEb2N1bWVudFNlY3VyaXR5T3JpZ2lu
KCkuZGF0YSgpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKGJvb2wgZ3Jh
bnRlZCkgewogICAgICAgICBpZiAoIWdyYW50ZWQpCiAgICAgICAgICAgICBkZW55KFVzZXJNZWRp
YUFjY2Vzc0RlbmlhbFJlYXNvbjo6UGVybWlzc2lvbkRlbmllZCk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIGFsbG93KCk7CiAgICAgfSk7CisjZW5kaWYKK30KKwordm9pZCBVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdFByb3h5Ojpkb0RlZmF1bHRBY3Rpb24oKQoreworI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKENPQ09BKQorICAgIGlmIChyZXF1aXJlc0Rpc3BsYXlD
YXB0dXJlKCkpIHsKKyAgICAgICAgaWYgKCFjYW5Qcm9tcHRGb3JHZXREaXNwbGF5TWVkaWEoKSkg
eworICAgICAgICAgICAgZGVueShVc2VyTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb246OlBlcm1pc3Np
b25EZW5pZWQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgcHJv
bXB0Rm9yR2V0RGlzcGxheU1lZGlhKCk7CisgICAgfSBlbHNlCisgICAgICAgIHByb21wdEZvckdl
dFVzZXJNZWRpYSgpOwogI2Vsc2UKICAgICBkZW55KCk7CiAjZW5kaWYKIH0KIAorYm9vbCBVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpjYW5Qcm9tcHRGb3JHZXREaXNwbGF5TWVkaWEo
KQoreworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKElPUykKKyAgICByZXR1
cm4gdHJ1ZTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5oCmluZGV4IDI0Y2VlMzhmOWJjMWQ4YTJhNmFl
NzRkMjRhYWM0NmZjYjgxZjVjMWUuLmRmNDEyYWI2NWVjMzdkZDQ3MzBlYWZjN2NiNGUzZDU1MTYz
NDlkYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmgKQEAgLTQ1LDggKzQ1LDEwIEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgYWxsb3coY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZVVJRCwgY29uc3QgU3RyaW5n
JiB2aWRlb0RldmljZVVJRCk7CiAgICAgdm9pZCBhbGxvdygpOwotICAgIHZvaWQgcHJvbXB0KCk7
Ci0gICAgdm9pZCBkb0RlZmF1bHRBY3Rpb24oKSB7IHByb21wdCgpOyB9CisgICAgdm9pZCBwcm9t
cHRGb3JHZXRVc2VyTWVkaWEoKTsKKyAgICB2b2lkIHByb21wdEZvckdldERpc3BsYXlNZWRpYSgp
OworICAgIGJvb2wgY2FuUHJvbXB0Rm9yR2V0RGlzcGxheU1lZGlhKCk7CisgICAgdm9pZCBkb0Rl
ZmF1bHRBY3Rpb24oKTsKICAgICBlbnVtIGNsYXNzIFVzZXJNZWRpYUFjY2Vzc0RlbmlhbFJlYXNv
biB7IE5vQ29uc3RyYWludHMsIFVzZXJNZWRpYURpc2FibGVkLCBOb0NhcHR1cmVEZXZpY2VzLCBJ
bnZhbGlkQ29uc3RyYWludCwgSGFyZHdhcmVFcnJvciwgUGVybWlzc2lvbkRlbmllZCwgT3RoZXJG
YWlsdXJlIH07CiAgICAgdm9pZCBkZW55KFVzZXJNZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbiA9IFVz
ZXJNZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbjo6VXNlck1lZGlhRGlzYWJsZWQpOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>