<?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>225927</bug_id>
          
          <creation_ts>2021-05-18 11:04:58 -0700</creation_ts>
          <short_desc>[Cocoa] Update AudioSession buffer size handling</short_desc>
          <delta_ts>2021-05-23 15:33:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>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>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>peng.liu6</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1761216</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-05-18 11:04:58 -0700</bug_when>
    <thetext>Update AudioSession buffer size handling</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761217</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-05-18 11:05:20 -0700</bug_when>
    <thetext>rdar://76920375</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761229</commentid>
    <comment_count>2</comment_count>
      <attachid>428959</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-05-18 12:03:23 -0700</bug_when>
    <thetext>Created attachment 428959
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761270</commentid>
    <comment_count>3</comment_count>
      <attachid>428973</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-05-18 13:11:45 -0700</bug_when>
    <thetext>Created attachment 428973
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761287</commentid>
    <comment_count>4</comment_count>
      <attachid>428973</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-05-18 13:37:16 -0700</bug_when>
    <thetext>Comment on attachment 428973
Patch

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

&gt; Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.mm:96
&gt; +                ++webAudioCount;

I am thinking whether we need to change
```
PlatformMediaSession::MediaType mediaType() const final { return isSuspended() ? PlatformMediaSession::MediaType::None : PlatformMediaSession::MediaType::WebAudio; }
```
to
```
PlatformMediaSession::MediaType mediaType() const final { return isStopped() ? PlatformMediaSession::MediaType::None : PlatformMediaSession::MediaType::WebAudio; }
```

If we make this change, then we don&apos;t need to change `MediaSessionManagerCocoa::updateSessionState()` here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761293</commentid>
    <comment_count>5</comment_count>
      <attachid>428973</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-05-18 13:54:10 -0700</bug_when>
    <thetext>Comment on attachment 428973
Patch

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

&gt;&gt; Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.mm:96
&gt;&gt; +                ++webAudioCount;
&gt; 
&gt; I am thinking whether we need to change
&gt; ```
&gt; PlatformMediaSession::MediaType mediaType() const final { return isSuspended() ? PlatformMediaSession::MediaType::None : PlatformMediaSession::MediaType::WebAudio; }
&gt; ```
&gt; to
&gt; ```
&gt; PlatformMediaSession::MediaType mediaType() const final { return isStopped() ? PlatformMediaSession::MediaType::None : PlatformMediaSession::MediaType::WebAudio; }
&gt; ```
&gt; 
&gt; If we make this change, then we don&apos;t need to change `MediaSessionManagerCocoa::updateSessionState()` here.

I don&apos;t think that is sufficient because `AudioContext.isStopped()` returns true only when the context is stopped, and we should not set the buffer size to the render quantum size when an AudioContext is reachable but not currently playing.

It also isn&apos;t sufficient because we want to reset the buffer size to the &quot;low power&quot; size when nothing at all is playing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761527</commentid>
    <comment_count>6</comment_count>
      <attachid>428973</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-05-19 07:36:14 -0700</bug_when>
    <thetext>Comment on attachment 428973
Patch

Some API test failures seem related.

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

&gt; Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.mm:129
&gt; +    if (bufferSize)

There will be cases where bufferSize will be 0, for instance when lowPowerVideoAudioBufferSizeEnabled and there are some sessions.
Is it what we want?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761635</commentid>
    <comment_count>7</comment_count>
      <attachid>428973</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-05-19 11:45:15 -0700</bug_when>
    <thetext>Comment on attachment 428973
Patch

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

&gt;&gt; Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.mm:129
&gt;&gt; +    if (bufferSize)
&gt; 
&gt; There will be cases where bufferSize will be 0, for instance when lowPowerVideoAudioBufferSizeEnabled and there are some sessions.
&gt; Is it what we want?

I&apos;ll update the patch to use the default size in this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761689</commentid>
    <comment_count>8</comment_count>
      <attachid>429096</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-05-19 14:00:18 -0700</bug_when>
    <thetext>Created attachment 429096
Update patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761962</commentid>
    <comment_count>9</comment_count>
      <attachid>429096</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-05-20 08:20:00 -0700</bug_when>
    <thetext>Comment on attachment 429096
Update patch

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

&gt; Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.mm:97
&gt; +                ++webAudioCount;

It seems some api tests are breaking, maybe due to that change?
Worth checking whether we want to update the tests or keep status quo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762182</commentid>
    <comment_count>10</comment_count>
      <attachid>429233</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-05-20 15:41:54 -0700</bug_when>
    <thetext>Created attachment 429233
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762525</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-21 12:47:23 -0700</bug_when>
    <thetext>Committed r277876 (238014@main): &lt;https://commits.webkit.org/238014@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 429233.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762968</commentid>
    <comment_count>12</comment_count>
      <attachid>429233</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-23 15:33:19 -0700</bug_when>
    <thetext>Comment on attachment 429233
Patch

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

&gt; Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.mm:202
&gt; +        m_supportedAudioHardwareBufferSizes = m_audioHardwareListener-&gt;supportedBufferSizes();

Kind of wish this and the one line in audioOutputDeviceChanged was the same.

&gt; Source/WebCore/testing/Internals.cpp:5447
&gt; +#if USE(AUDIO_SESSION)
&gt; +    return AudioSession::sharedSession().bufferSize();
&gt; +#endif
&gt; +    return 0;

Please use #else here instead of two returns in a row.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428959</attachid>
            <date>2021-05-18 12:03:23 -0700</date>
            <delta_ts>2021-05-18 13:11:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225927-20210518120322.patch</filename>
            <type>text/plain</type>
            <size>24275</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NTg5CjIwMjEtMDUtMThUMTI6MDI6NDEsNTk2OiBbMHgx
MTlmMjdlMDBdIHdoaWxlIGNvbXB1dGluZyBzb2NrbmFtZTogZmFpbGVkIHRvIGNyZWF0ZSAvdXNy
L2xvY2FsL3Zhci9ydW4vd2F0Y2htYW4vZXJpYy1zdGF0ZTogTm8gc3VjaCBmaWxlIG9yIGRpcmVj
dG9yeQpXYXRjaG1hbjogY29tbWFuZCByZXR1cm5lZCBubyBvdXRwdXQuCkZhbGxpbmcgYmFjayB0
byBzY2FubmluZy4uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDk1MDNjNjBjNDhlOGRmMThmNTQ0MWFhNDljNjU4
MDAxZjczOGFjMjMuLmQ0YTljNjZkYWZlNzMxOTJlZWJmZTNiOGQzZWJhN2U0MDRkOTkwMjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAyMS0wNS0xOCAgRXJpYyBDYXJsc29uICA8ZXJp
Yy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwZGF0ZSBBdWRpb1Nlc3Np
b24gYnVmZmVyIHNpemUgaGFuZGxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNTkyNworICAgICAgICByZGFyOi8vNzY5MjAzNzUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcmV2aW91c2x5IHdlIG9u
bHkgc2V0IHRoZSBhdWRpbyBzZXNzaW9uIGJ1ZmZlciBzaXplIHdoZW4gdGhlcmUgd2FzIGFuIGFj
dGl2ZQorICAgICAgICBNZWRpYVNlc3Npb24uIFRoaXMgbWVhbnQgdGhhdCB3aGVuIG5vIGF1ZGlv
IHdhcyBiZWluZyBwbGF5ZWQgb3IgY2FwdHVyZWQgdGhlIGJ1ZmZlcgorICAgICAgICBzaXplIHdv
dWxkIGJlIGxlZnQgYXQgd2hhdGV2ZXIgc2l6ZSB3YXMgYXBwcm9wcmlhdGUgZm9yIHRoZSBsYXN0
IE1lZGlhU2Vzc2lvbgorICAgICAgICBzdG9wcGVkLiBUaGlzIHdhcyBlc3BlY2lhbGx5IGJhZCB3
aGVuIHRoZSBsYXN0IE1lZGlhU2Vzc2lvbiBwbGF5ZWQgV2ViQXVkaW8KKyAgICAgICAgb3IgY2Fw
dHVyZWQgYXVkaW8gYmVjYXVzZSB0aG9zZSByZXF1aXJlIGEgc21hbGxlciBidWZmZXIgc2l6ZSB0
aGFuIHRoZSBkZWZhdWx0LAorICAgICAgICBhbmQgd2FzIG1hZGUgZXZlbiB3b3JzZSB3aGVuIHVz
aW5nIHRoZSBHUFUgcHJvY2VzcyBiZWNhdXNlIGl0IG1heSBsaXZlIGZvciBtdWNoCisgICAgICAg
IGxvbmdlciB0aGFuIHRoZSBsYXN0IHdlYiBwcm9jZXNzIHRoYXQgcGxheWVkIGF1ZGlvLiBGaXgg
dGhpcyBieSB1c2luZyB0aGUgbG93IHBvd2VyCisgICAgICAgIGJ1ZmZlciBzaXplIHdoZW4gcGxh
eWluZyBhdWRpbyBvciB3aGVuIHRoZXJlIGlzIG5vIE1lZGlhU2Vzc2lvbiBhdCBhbGwuCisgICAg
ICAgIAorICAgICAgICBBZGQgQXVkaW9CdWZmZXJTaXplIEFQSSB0ZXN0LgorCisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9Db250ZXh0OjpjYW5Qcm9kdWNlQXVkaW8gY29uc3QpOiBDYWxjdWxhdGUgc3RhdGUgaW5zdGVh
ZCBvZiBhbHdheXMKKyAgICAgICAgcmV0dXJuaW5nIGB0cnVlYC4gTG9naWMgdG8gY2FsY3VsYXRl
IHN0YXRlIG1vdmVkIGZyb20gQXVkaW9Db250ZXh0OjptZWRpYVN0YXRlLgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9Db250ZXh0OjptZWRpYVN0YXRlIGNvbnN0KTogVXNlIGNhblByb2R1Y2VBdWRp
by4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6aXNQbGF5aW5nQXVkaW9EaWRDaGFu
Z2UpOiBJbmZvcm0gbWVkaWEgc2Vzc2lvbiB3aGVuIHN0YXRlIGNoYW5nZXMuCisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaDoKKworICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6dXBkYXRlU2Vzc2lvblN0YXRlKTogT25seSBj
b25zaWRlciBXZWJBdWRpbyBzZXNzaW9ucworICAgICAgICB0aGF0IGNhbiBwcm9kdWNlIGF1ZGlv
LiBBbHdheXMgdXNlICJsb3cgcG93ZXIiIGJ1ZmZlciBzaXplIHdoZW4gdGhlcmUgaXMgbm8gV2Vi
QXVkaW8gb3IKKyAgICAgICAgYXVkaW8gY2FwdHVyZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYTo6YWRkU2Vzc2lvbik6IENhY2hlIHN1cHBvcnRlZCBoYXJkd2Fy
ZSBidWZmZXIgc2l6ZXMuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyQ29j
b2E6OmF1ZGlvT3V0cHV0RGV2aWNlQ2hhbmdlZCk6IFVwZGF0ZSBjYWNoZWQgYnVmZmVyCisgICAg
ICAgIHNpemVzLgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxzOjpjdXJyZW50QXVkaW9CdWZmZXJTaXplIGNvbnN0KTogRXhwb3Nl
IGN1cnJlbnQgYXVkaW8gc2Vzc2lvbiBidWZmZXIKKyAgICAgICAgc2l6ZSBmb3IgdGVzdGluZy4K
KyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJu
YWxzLmlkbDoKKwogMjAyMS0wNS0xNyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+
CiAKICAgICAgICAgWyBCaWdTdXIgRGVidWcgd2syIEFSTTY0IF0gaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2ZyYW1lLXRyYW5zZm9ybS1y
ZWFkYWJsZS5odG1sIGlzIGZsYWt5IGNyYXNoaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggZjA0ODA2NzVmZWU1N2ZkNzVjZTFl
MThkNzY5MGYyN2YwM2U4NTkwZS4uNzlkM2ZmYjcxODkyNTcwOWNkZjExYzJlODAzNGFhMTc5MGU0
YTA4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250
ZXh0LmNwcApAQCAtMzYyLDkgKzM2MiwxNCBAQCBib29sIEF1ZGlvQ29udGV4dDo6d2lsbFBhdXNl
UGxheWJhY2soKQogICAgIHJldHVybiBtX21lZGlhU2Vzc2lvbi0+Y2xpZW50V2lsbFBhdXNlUGxh
eWJhY2soKTsKIH0KIAorYm9vbCBBdWRpb0NvbnRleHQ6OmNhblByb2R1Y2VBdWRpbygpIGNvbnN0
Cit7CisgICAgcmV0dXJuICFpc1N0b3BwZWQoKSAmJiBkZXN0aW5hdGlvbigpLmlzUGxheWluZ0F1
ZGlvKCk7Cit9CisKIE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBBdWRpb0NvbnRleHQ6
Om1lZGlhU3RhdGUoKSBjb25zdAogewotICAgIGlmICghaXNTdG9wcGVkKCkgJiYgZGVzdGluYXRp
b24oKS5pc1BsYXlpbmdBdWRpbygpKQorICAgIGlmIChjYW5Qcm9kdWNlQXVkaW8oKSkKICAgICAg
ICAgcmV0dXJuIE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGU6OklzUGxheWluZ0F1ZGlvOwogCiAg
ICAgcmV0dXJuIE1lZGlhUHJvZHVjZXI6OklzTm90UGxheWluZzsKQEAgLTUxNSw2ICs1MjAsNyBA
QCB2b2lkIEF1ZGlvQ29udGV4dDo6aXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoKQogICAgIGNhbGxP
bk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gewogICAgICAgICBp
ZiAoYXV0byogZG9jdW1lbnQgPSBwcm90ZWN0ZWRUaGlzLT5kb2N1bWVudCgpKQogICAgICAgICAg
ICAgZG9jdW1lbnQtPnVwZGF0ZUlzUGxheWluZ01lZGlhKCk7CisgICAgICAgIHByb3RlY3RlZFRo
aXMtPm1fbWVkaWFTZXNzaW9uLT5jYW5Qcm9kdWNlQXVkaW9DaGFuZ2VkKCk7CiAgICAgfSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250
ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCmlu
ZGV4IGVlZWNlNDUwOGRkYzdhMmJmYmExMGJjMjBkYTg4MjAzYmJjMjI5MzQuLjAxYTZjMzliNjMw
MWUzNzU4OGU0Y2YzYzQ4NTgwYmY3OGYyNWQ4YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaApAQCAtMTI4LDcgKzEyOCw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRpYVNl
c3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Np
b246OlJlbW90ZUNvbW1hbmRBcmd1bWVudCYpIGZpbmFsIHsgfQogICAgIGJvb2wgc3VwcG9ydHNT
ZWVraW5nKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIHNob3VsZE92
ZXJyaWRlQmFja2dyb3VuZFBsYXliYWNrUmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246
OkludGVycnVwdGlvblR5cGUpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9v
bCBjYW5Qcm9kdWNlQXVkaW8oKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgYm9v
bCBjYW5Qcm9kdWNlQXVkaW8oKSBjb25zdCBmaW5hbDsKICAgICBib29sIGlzU3VzcGVuZGVkKCkg
Y29uc3QgZmluYWw7CiAgICAgTWVkaWFTZXNzaW9uR3JvdXBJZGVudGlmaWVyIG1lZGlhU2Vzc2lv
bkdyb3VwSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2Nv
YS5oCmluZGV4IDg1N2Y3MmI4ZjRmYWJlMTcyNDI3OTA5ZTRlYmY2OGIyMTliYTNjOTMuLjViYTU5
OTEzMDQzYTY1ZmE5MGM4MWU5NGI5M2Y5YTM5MWEwMGZlYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFn
ZXJDb2NvYS5oCkBAIC0xMTUsNiArMTE1LDggQEAgcHJpdmF0ZToKIAogICAgIGNvbnN0IHN0ZDo6
dW5pcXVlX3B0cjxOb3dQbGF5aW5nTWFuYWdlcj4gbV9ub3dQbGF5aW5nTWFuYWdlcjsKICAgICBS
ZWZQdHI8QXVkaW9IYXJkd2FyZUxpc3RlbmVyPiBtX2F1ZGlvSGFyZHdhcmVMaXN0ZW5lcjsKKwor
ICAgIEF1ZGlvSGFyZHdhcmVMaXN0ZW5lcjo6QnVmZmVyU2l6ZVJhbmdlIG1fc3VwcG9ydGVkQXVk
aW9IYXJkd2FyZUJ1ZmZlclNpemVzOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29h
Lm1tCmluZGV4IDU2NTQ2ZWJmMDc5MTdhNDRjMGIxOGY1MmU5ZjQ3ODdmMWI0MTVmOTEuLmU1MzRl
M2RiOWFkZDVhOTVhOWE0MGMxMGZkYzg5YTIyNzY5YTAyMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5h
Z2VyQ29jb2EubW0KQEAgLTkyLDcgKzkyLDggQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyQ29j
b2E6OnVwZGF0ZVNlc3Npb25TdGF0ZSgpCiAgICAgICAgICAgICArK2F1ZGlvQ291bnQ7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFU
eXBlOjpXZWJBdWRpbzoKLSAgICAgICAgICAgICsrd2ViQXVkaW9Db3VudDsKKyAgICAgICAgICAg
IGlmIChzZXNzaW9uLmNhblByb2R1Y2VBdWRpbygpKQorICAgICAgICAgICAgICAgICsrd2ViQXVk
aW9Db3VudDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTExMSwyMSArMTEy
LDIyIEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjp1cGRhdGVTZXNzaW9uU3RhdGUo
KQogICAgICAgICAiVmlkZW9BdWRpbygiLCB2aWRlb0F1ZGlvQ291bnQsICIpLCAiCiAgICAgICAg
ICJXZWJBdWRpbygiLCB3ZWJBdWRpb0NvdW50LCAiKSIpOwogCisgICAgc2l6ZV90IGJ1ZmZlclNp
emUgPSAwOwogICAgIGlmICh3ZWJBdWRpb0NvdW50KQotICAgICAgICBBdWRpb1Nlc3Npb246OnNo
YXJlZFNlc3Npb24oKS5zZXRQcmVmZXJyZWRCdWZmZXJTaXplKEF1ZGlvVXRpbGl0aWVzOjpyZW5k
ZXJRdWFudHVtU2l6ZSk7CisgICAgICAgIGJ1ZmZlclNpemUgPSBBdWRpb1V0aWxpdGllczo6cmVu
ZGVyUXVhbnR1bVNpemU7CiAgICAgLy8gSW4gY2FzZSBvZiBhdWRpbyBjYXB0dXJlLCB3ZSB3YW50
IHRvIGdyYWIgMjAgbXMgY2h1bmtzIHRvIGxpbWl0IHRoZSBsYXRlbmN5IHNvIHRoYXQgaXQgaXMg
bm90IG5vdGljZWFibGUgYnkgdXNlcnMKICAgICAvLyB3aGlsZSBoYXZpbmcgYSBsYXJnZSBlbm91
Z2ggYnVmZmVyIHNvIHRoYXQgdGhlIGF1ZGlvIHJlbmRlcmluZyByZW1haW5zIHN0YWJsZSwgaGVu
Y2UgYSBjb21wdXRhdGlvbiBiYXNlZCBvbiBzYW1wbGUgcmF0ZS4KICAgICBlbHNlIGlmIChjYXB0
dXJlQ291bnQpCi0gICAgICAgIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLnNldFByZWZl
cnJlZEJ1ZmZlclNpemUoQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuc2FtcGxlUmF0ZSgp
IC8gNTApOwotICAgIGVsc2UgaWYgKCh2aWRlb0F1ZGlvQ291bnQgfHwgYXVkaW9Db3VudCkgJiYg
RGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjpsb3dQb3dlclZpZGVvQXVkaW9CdWZmZXJTaXplRW5h
YmxlZCgpKSB7Ci0gICAgICAgIHNpemVfdCBidWZmZXJTaXplOwotICAgICAgICBpZiAobV9hdWRp
b0hhcmR3YXJlTGlzdGVuZXIgJiYgbV9hdWRpb0hhcmR3YXJlTGlzdGVuZXItPnN1cHBvcnRlZEJ1
ZmZlclNpemVzKCkpCi0gICAgICAgICAgICBidWZmZXJTaXplID0gbV9hdWRpb0hhcmR3YXJlTGlz
dGVuZXItPnN1cHBvcnRlZEJ1ZmZlclNpemVzKCkubmVhcmVzdChrTG93UG93ZXJWaWRlb0J1ZmZl
clNpemUpOwotICAgICAgICBlbHNlCisgICAgICAgIGJ1ZmZlclNpemUgPSBBdWRpb1Nlc3Npb246
OnNoYXJlZFNlc3Npb24oKS5zYW1wbGVSYXRlKCkgLyA1MDsKKyAgICBlbHNlIHsKKyAgICAgICAg
aWYgKG1fc3VwcG9ydGVkQXVkaW9IYXJkd2FyZUJ1ZmZlclNpemVzICYmIERlcHJlY2F0ZWRHbG9i
YWxTZXR0aW5nczo6bG93UG93ZXJWaWRlb0F1ZGlvQnVmZmVyU2l6ZUVuYWJsZWQoKSkKKyAgICAg
ICAgICAgIGJ1ZmZlclNpemUgPSBtX3N1cHBvcnRlZEF1ZGlvSGFyZHdhcmVCdWZmZXJTaXplcy5u
ZWFyZXN0KGtMb3dQb3dlclZpZGVvQnVmZmVyU2l6ZSk7CisgICAgICAgIGVsc2UgaWYgKCFoYXNO
b1Nlc3Npb24oKSkKICAgICAgICAgICAgIGJ1ZmZlclNpemUgPSBBdWRpb1V0aWxpdGllczo6cmVu
ZGVyUXVhbnR1bVNpemU7CisgICAgfQogCisgICAgaWYgKGJ1ZmZlclNpemUpCiAgICAgICAgIEF1
ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLnNldFByZWZlcnJlZEJ1ZmZlclNpemUoYnVmZmVy
U2l6ZSk7Ci0gICAgfQogCiAgICAgaWYgKCFEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OnNob3Vs
ZE1hbmFnZUF1ZGlvU2Vzc2lvbkNhdGVnb3J5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE5MCw4
ICsxOTIsMTAgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OmFkZFNlc3Npb24oUGxh
dGZvcm1NZWRpYVNlc3Npb24mIHNlc3Npb24pCiB7CiAgICAgbV9ub3dQbGF5aW5nTWFuYWdlci0+
YWRkQ2xpZW50KCp0aGlzKTsKIAotICAgIGlmICghbV9hdWRpb0hhcmR3YXJlTGlzdGVuZXIpCisg
ICAgaWYgKCFtX2F1ZGlvSGFyZHdhcmVMaXN0ZW5lcikgewogICAgICAgICBtX2F1ZGlvSGFyZHdh
cmVMaXN0ZW5lciA9IEF1ZGlvSGFyZHdhcmVMaXN0ZW5lcjo6Y3JlYXRlKCp0aGlzKTsKKyAgICAg
ICAgbV9zdXBwb3J0ZWRBdWRpb0hhcmR3YXJlQnVmZmVyU2l6ZXMgPSBtX2F1ZGlvSGFyZHdhcmVM
aXN0ZW5lci0+c3VwcG9ydGVkQnVmZmVyU2l6ZXMoKTsKKyAgICB9CiAKICAgICBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OmFkZFNlc3Npb24oc2Vzc2lvbik7CiB9CkBAIC00MDMsNiArNDA3
LDggQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnVwZGF0ZU5vd1BsYXlpbmdJbmZv
KCkKIAogdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OmF1ZGlvT3V0cHV0RGV2aWNlQ2hh
bmdlZCgpCiB7CisgICAgQVNTRVJUKG1fYXVkaW9IYXJkd2FyZUxpc3RlbmVyKTsKKyAgICBtX3N1
cHBvcnRlZEF1ZGlvSGFyZHdhcmVCdWZmZXJTaXplcyA9IG1fYXVkaW9IYXJkd2FyZUxpc3RlbmVy
LT5zdXBwb3J0ZWRCdWZmZXJTaXplcygpOwogICAgIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lv
bigpLmF1ZGlvT3V0cHV0RGV2aWNlQ2hhbmdlZCgpOwogICAgIHVwZGF0ZVNlc3Npb25TdGF0ZSgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDMyZDE1ZmQyN2E4NGFi
MWMzNDM3MzQ1OWU1OWM0NzllZDU5YjRkOTMuLjMzN2ZjNmY3YzNkMGQ4NTY1ZGFmMmYwNWM1MzE0
M2FjNDExMTI0NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTU0MzIs
NiArNTQzMiwxNSBAQCBkb3VibGUgSW50ZXJuYWxzOjpwcmVmZXJyZWRBdWRpb0J1ZmZlclNpemUo
KSBjb25zdAogICAgIHJldHVybiAwOwogfQogCitkb3VibGUgSW50ZXJuYWxzOjpjdXJyZW50QXVk
aW9CdWZmZXJTaXplKCkgY29uc3QKK3sKKyNpZiBVU0UoQVVESU9fU0VTU0lPTikKKyAgICByZXR1
cm4gQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuYnVmZmVyU2l6ZSgpOworI2VuZGlmCisg
ICAgcmV0dXJuIDA7Cit9CisKKwogYm9vbCBJbnRlcm5hbHM6OmF1ZGlvU2Vzc2lvbkFjdGl2ZSgp
IGNvbnN0CiB7CiAjaWYgVVNFKEFVRElPX1NFU1NJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaAppbmRleCA0Mjk1MWUyZDE0NDg4ZGRiYjQ2N2RkNGYzZGYyZDc5OTRjMzk5YWYzLi4zZTc1
MGNjN2U5ZDQ0ZWFhNzQ4NmVkYjM3YWJjNGQ1MTE3Y2YyN2RiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmgKQEAgLTg0Myw2ICs4NDMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdXBwb3J0
c0F1ZGlvU2Vzc2lvbigpIGNvbnN0OwogICAgIFN0cmluZyBhdWRpb1Nlc3Npb25DYXRlZ29yeSgp
IGNvbnN0OwogICAgIGRvdWJsZSBwcmVmZXJyZWRBdWRpb0J1ZmZlclNpemUoKSBjb25zdDsKKyAg
ICBkb3VibGUgY3VycmVudEF1ZGlvQnVmZmVyU2l6ZSgpIGNvbnN0OwogICAgIGJvb2wgYXVkaW9T
ZXNzaW9uQWN0aXZlKCkgY29uc3Q7CiAKICAgICB2b2lkIHN0b3JlUmVnaXN0cmF0aW9uc09uRGlz
ayhET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5pZGwKaW5kZXggMGUwMTRiODBmMjczZWNkODUwMzBhZGQ4NTgxNmRiZmVhYjM2OTBjNy4uMTE5
YWZmNDJjMjg5ZjIyZDMxNWM4Y2I5NjVhOTdiODA3NDBhZDllNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmlkbApAQCAtODkzLDYgKzg5Myw3IEBAIGVudW0gVHJlZVR5cGUgewogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHN1cHBvcnRzQXVkaW9TZXNzaW9uOwogICAgIERP
TVN0cmluZyBhdWRpb1Nlc3Npb25DYXRlZ29yeSgpOwogICAgIGRvdWJsZSBwcmVmZXJyZWRBdWRp
b0J1ZmZlclNpemUoKTsKKyAgICBkb3VibGUgY3VycmVudEF1ZGlvQnVmZmVyU2l6ZSgpOwogICAg
IGJvb2xlYW4gYXVkaW9TZXNzaW9uQWN0aXZlKCk7CiAKICAgICBbQ29uZGl0aW9uYWw9U0VSVklD
RV9XT1JLRVJdIFByb21pc2U8Ym9vbGVhbj4gaGFzU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbihE
T01TdHJpbmcgc2NvcGVVUkwpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IDI1MGIzMjkwYmIzZDg2MTljOGJjYzgwNGE4YTVmOTY2NmNlYmUxNTEu
LmMwNTk2YTZmMjVhODM1MTk3YTdhZDY1ZjAwOGU4ODkyOTA4MDMzMWEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAy
MS0wNS0xOCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAg
ICBbQ29jb2FdIFVwZGF0ZSBBdWRpb1Nlc3Npb24gYnVmZmVyIHNpemUgaGFuZGxpbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTkyNworICAgICAg
ICByZGFyOi8vNzY5MjAzNzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L2F1ZGlvLWJ1
ZmZlci1zaXplLmh0bWw6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvQXVkaW9CdWZmZXJTaXplLm1tOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OndhaXRGb3JCdWZmZXJTaXplQ2hhbmdlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QpOgorCiAyMDIxLTA1LTE1ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAg
ICAgICAgIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yIHN1cnZpdmVzIHBhZ2UgcmVsb2FkL25hdmln
YXRpb24KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjQ2Zjg0MjA3YTBlZTM4OThhYzdjOTlh
YTdiM2I4YjVkMjg0OGUzOC4uOTQyNGJiNWMxZjIzMTAyYmJlMjVjYjU4ZThkNWZkNWFiNDYyN2My
NSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ4LDYgKzQ4LDggQEAKIAkJMDQxQTFFMzQy
MTZGRkRCQzAwNzg5RTBBIC8qIFB1YmxpY1N1ZmZpeC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNDFBMUUzMzIxNkZGREJDMDA3ODlFMEEgLyogUHVi
bGljU3VmZml4LmNwcCAqLzsgfTsKIAkJMDREQjIzOTYyMzVFNDNFQzAwMzI4RjE3IC8qIEJ1bXBQ
b2ludGVyQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA0NTFBNUE2MjM1RTQzOEUwMDlERjk0NSAvKiBCdW1wUG9pbnRlckFsbG9jYXRv
ci5jcHAgKi87IH07CiAJCTA3MTFERjUyMjI2QTk1RkMwMDNERDJGNyAvKiBBVkZvdW5kYXRpb25T
b2Z0TGlua1Rlc3QubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwNzExREY1MTIyNkE5NUZCMDAzREQyRjcgLyogQVZGb3VuZGF0aW9uU29mdExpbmtUZXN0
Lm1tICovOyB9OworCQkwNzEzNzA0QTI2NTMyMEU1MDBDQTJDOUEgLyogQXVkaW9CdWZmZXJTaXpl
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcxMzcw
NDkyNjUzMjBFNTAwQ0EyQzlBIC8qIEF1ZGlvQnVmZmVyU2l6ZS5tbSAqLzsgfTsKKwkJMDcxMzcw
NTUyNjUzMkUzOTAwQ0EyQzlBIC8qIGF1ZGlvLWJ1ZmZlci1zaXplLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcxMzcwNTQyNjUzMkUz
OTAwQ0EyQzlBIC8qIGF1ZGlvLWJ1ZmZlci1zaXplLmh0bWwgKi87IH07CiAJCTA3NDkyQjNCMURG
OEIxNEMwMDYzM0RFMSAvKiBFbnVtZXJhdGVNZWRpYURldmljZXMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc0OTJCM0ExREY4QUUyRDAwNjMzREUx
IC8qIEVudW1lcmF0ZU1lZGlhRGV2aWNlcy5jcHAgKi87IH07CiAJCTA3NDkyQjNDMURGOEI4NjYw
MDYzM0RFMSAvKiBlbnVtZXJhdGVNZWRpYURldmljZXMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzQ5MkIzOTFERjhBREE0MDA2MzNE
RTEgLyogZW51bWVyYXRlTWVkaWFEZXZpY2VzLmh0bWwgKi87IH07CiAJCTA3NDk5NDQyMUVBNTAz
NEIwMDBEQTQ0RSAvKiBnZXRVc2VyTWVkaWEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTQxMEY0RDE5QUY3QkVGMDAyRUJBQjUgLyog
Z2V0VXNlck1lZGlhLmh0bWwgKi87IH07CkBAIC0xMzc1LDYgKzEzNzcsNyBAQAogCQkJCUY0MkJE
N0Q5MjQ1Q0M1MDgwMDFFMjA3QSAvKiBhdHRyaWJ1dGVkU3RyaW5nTmV3bGluZUF0RW5kT2ZEb2N1
bWVudC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTdDOUVEOThCMTdBMTlGNEIwMEU0
REMzMyAvKiBhdHRyaWJ1dGVkU3RyaW5nU3RyaWtldGhyb3VnaC5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovLAogCQkJCTM3MTM3RTRCMjExMjREMDEwMDJCRUVBNCAvKiBBdHRyU3R5bGUuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLywKKwkJCQkwNzEzNzA1NTI2NTMyRTM5MDBDQTJDOUEgLyogYXVk
aW8tYnVmZmVyLXNpemUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk0NkYwM0MxQzI1
NUIyRDVBMDBBQTUxQzUgLyogYXVkaW8tY29udGV4dC1wbGF5aW5nLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8sCiAJCQkJQ0Q5RTI5MkUxQzkwQzMzRjAwMEJCODAwIC8qIGF1ZGlvLW9ubHkuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlDOTQ0MTYwMDIxNDMwRTg5MDBCMUVEREEgLyog
YXVkaW8td2l0aC1jb250cm9scy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMTc3Myw2
ICsxNzc2LDggQEAKIAkJMDQxQTFFMzMyMTZGRkRCQzAwNzg5RTBBIC8qIFB1YmxpY1N1ZmZpeC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQdWJsaWNTdWZmaXguY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNDUxQTVBNjIzNUU0MzhFMDA5REY5NDUg
LyogQnVtcFBvaW50ZXJBbGxvY2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQnVtcFBvaW50ZXJBbGxvY2F0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwNzExREY1MTIyNkE5NUZCMDAzREQyRjcgLyogQVZGb3VuZGF0aW9uU29mdExpbmtU
ZXN0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQVZGb3VuZGF0
aW9uU29mdExpbmtUZXN0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzEzNzA0
OTI2NTMyMEU1MDBDQTJDOUEgLyogQXVkaW9CdWZmZXJTaXplLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXVkaW9CdWZmZXJTaXplLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwNzEzNzA1NDI2NTMyRTM5MDBDQTJDOUEgLyogYXVkaW8tYnVmZmVy
LXNpemUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQuaHRtbDsgbmFtZSA9ICJhdWRpby1idWZmZXItc2l6ZS5odG1sIjsgcGF0aCA9ICJU
ZXN0cy9XZWJLaXQvYXVkaW8tYnVmZmVyLXNpemUuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTA3NDY2NDU3MjJGRjYyRDAwMEUzNDUxQSAvKiBBY2Nlc3NpYmlsaXR5VGVzdFN1
cHBvcnRQcm90b2NvbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmlsaXR5VGVzdFN1cHBvcnRQ
cm90b2NvbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzQ2NjQ1ODIyRkY2MzA1
MDBFMzQ1MUEgLyogQWNjZXNzaWJpbGl0eVRlc3RQbHVnaW4ubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBBY2Nlc3NpYmlsaXR5VGVzdFBsdWdpbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMDc0OTJCMzkxREY4QURBNDAwNjMzREUxIC8qIGVudW1lcmF0ZU1lZGlhRGV2aWNlcy5o
dG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gZW51bWVyYXRlTWVkaWFEZXZpY2VzLmh0
bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMTg5LDYgKzMxOTQsNyBAQAogCQkw
OEZCNzc5NEZFODQxNTVEQzAyQUFDMDcgLyogVGVzdFdlYktpdEFQSSAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMDcxMzcwNTQyNjUzMkUzOTAwQ0EyQzlB
IC8qIGF1ZGlvLWJ1ZmZlci1zaXplLmh0bWwgKi8sCiAJCQkJNDlBRUVGNjgyNDA3Mjc2RjAwQzg3
RTRDIC8qIEluZm8ucGxpc3QgKi8sCiAJCQkJNUM5RDkyMjYyMkQ3REQ3QjAwOEU5MjY2IC8qIERl
cml2ZWQgU291cmNlcyAqLywKIAkJCQk1QzlEOTIxRDIyRDdEQkY3MDA4RTkyNjYgLyogU291cmNl
cy50eHQgKi8sCkBAIC0zMzU3LDYgKzMzNjMsNyBAQAogCQkJCTUxQjQwRDlEMjNBQzk2MEUwMEUw
NTI0MSAvKiBBc3luY0Z1bmN0aW9uLm1tICovLAogCQkJCTgzNDEzOEM2MjAzMjYxQjkwMEYyNjk2
MCAvKiBBc3luY1BvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZS5tbSAqLywKIAkJCQkzNzYwQzRG
MDIxMTI0OUFGMDAyMzNBQ0MgLyogQXR0clN0eWxlLm1tICovLAorCQkJCTA3MTM3MDQ5MjY1MzIw
RTUwMENBMkM5QSAvKiBBdWRpb0J1ZmZlclNpemUubW0gKi8sCiAJCQkJQ0RFRDM0MkUyNDlEREQ5
RDAwMDJBRTdBIC8qIEF1ZGlvUm91dGluZ0FyYml0cmF0aW9uLm1tICovLAogCQkJCTc1NENFQzgw
MUY2NzIyREMwMEQwMDM5QSAvKiBBdXRvRmlsbEF2YWlsYWJsZS5tbSAqLywKIAkJCQkyREQzNTUz
NTFCRDA4Mzc4MDA1REY0QTcgLyogQXV0b0xheW91dEludGVncmF0aW9uLm1tICovLApAQCAtNTI5
NSw2ICs1MzAyLDcgQEAKIAkJCQk3Q0NFN0VCNDFBNDExQTdFMDA0NDdDNEMgLyogQXR0cmlidXRl
ZFN0cmluZy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0RkEyQTRGMjREMUYwNTcwMDYxOEE0NiAv
KiBBdHRyaWJ1dGVkU3Vic3RyaW5nRm9yUHJvcG9zZWRSYW5nZS5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTM3NjBDNEYxMjExMjQ5QUYwMDIzM0FDQyAvKiBBdHRyU3R5bGUubW0gaW4gU291cmNlcyAq
LywKKwkJCQkwNzEzNzA0QTI2NTMyMEU1MDBDQTJDOUEgLyogQXVkaW9CdWZmZXJTaXplLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQ0RFRDM0MkYyNDlEREUwRTAwMDJBRTdBIC8qIEF1ZGlvUm91dGlu
Z0FyYml0cmF0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RDOEU0OEQxQkM1Q0I0NTAwNTk0
RkVDIC8qIEF1ZGlvU2Vzc2lvbkNhdGVnb3J5SU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjQy
RDYzNDQyMkExNzI5RjAwRDJGQjNBIC8qIEF1dG9jb3JyZWN0aW9uVGVzdHNJT1MubW0gaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L2F1
ZGlvLWJ1ZmZlci1zaXplLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9h
dWRpby1idWZmZXItc2l6ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdhZThiZTE0YmVmYWU5OTQ3M2JlOWQx
YTExYjlkZDZjNDM1N2UwOTcKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdC9hdWRpby1idWZmZXItc2l6ZS5odG1sCkBAIC0wLDAgKzEsODMgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzY3JpcHQ+CisKK2xl
dCBjb250ZXh0OworbGV0IG9zY2lsbGF0b3I7CitsZXQgc3RyZWFtOworbGV0IGdhaW47CisKK2Z1
bmN0aW9uIHNlbmRNZXNzYWdlKG1lc3NhZ2UpCit7CisgICAgdHJ5IHsKKyAgICAgICAgaWYgKHdp
bmRvdy53ZWJraXQpCisgICAgICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50
ZXN0SGFuZGxlci5wb3N0TWVzc2FnZShtZXNzYWdlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgY29uc29sZS5sb2coYE1FU1NBR0UgLSAke21lc3NhZ2V9YCk7CisgICAgfSBjYXRjaChlcnIp
IHsKKyAgICAgICAgY29uc29sZS5sb2coYGZhaWxlZCB0byBzZW5kIG1lc3NhZ2UgJHttZXNzYWdl
fTogJHtlcnJ9YCk7CisgICAgfQorfQorCitmdW5jdGlvbiBjcmVhdGVXZWJBdWRpb05vZGUoKQor
eworICAgIGNvbnRleHQgPSBuZXcgQXVkaW9Db250ZXh0KCk7CisKKyAgICBnYWluID0gbmV3IEdh
aW5Ob2RlKGNvbnRleHQsIHtnYWluOiAwLjA1fSk7CisgICAgZ2Fpbi5jb25uZWN0KGNvbnRleHQu
ZGVzdGluYXRpb24pOworCisgICAgb3NjaWxsYXRvciA9IG5ldyBPc2NpbGxhdG9yTm9kZShjb250
ZXh0KTsKKyAgICBvc2NpbGxhdG9yLmNvbm5lY3QoZ2Fpbik7CisgICAgb3NjaWxsYXRvci5zdGFy
dCgpOworICAgIAorICAgIGNvbnRleHQuc3RhcnRSZW5kZXJpbmcoKTsKK30KKworZnVuY3Rpb24g
ZGlzY29ubmVjdFdlYkF1ZGlvTm9kZSgpCit7CisgICAgb3NjaWxsYXRvci5zdG9wKCk7CisgICAg
b3NjaWxsYXRvci5kaXNjb25uZWN0KCk7CisgICAgZ2Fpbi5kaXNjb25uZWN0KCk7CisgICAgY29u
dGV4dC5jbG9zZSgpOworfQorCithc3luYyBmdW5jdGlvbiBzdGFydENhcHR1cmUoKQoreworICAg
IHN0cmVhbSA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHsgdmlk
ZW86IHRydWUsIGF1ZGlvOiB7IHZvbHVtZTogMC4wNSB9IH0pOworfQorCitmdW5jdGlvbiBzdG9w
Q2FwdHVyZSgpCit7CisgICAgc3RyZWFtLmdldFRyYWNrcygpLmZvckVhY2godHJhY2sgPT4gdHJh
Y2suc3RvcCgpKTsKK30KKworYXN5bmMgZnVuY3Rpb24gcGxheVZpZGVvKCkgCit7CisgICAgbGV0
IHZpZGVvID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3ZpZGVvJylbMF07CisgICAg
dmlkZW8uc3JjID0gJ3Rlc3QtbXNlLm1wNCc7CisgICAgdmlkZW8udm9sdW1lID0gMC4wNTsKKyAg
ICBhd2FpdCB2aWRlby5wbGF5KCk7CisgICAgc2VuZE1lc3NhZ2UoJ3BsYXlpbmcnKTsKK30KKwor
ZnVuY3Rpb24gcGF1c2VWaWRlbygpIAoreworICAgIHZpZGVvID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoJ3ZpZGVvJylbMF0ucGF1c2UoKTsKK30KKyAgICAgICAgPC9zY3JpcHQ+Cisg
ICAgPGhlYWQ+CisKKyAgICA8Ym9keT4KKyAgICAgICAgPHZpZGVvIGNvbnRyb2xzPjwvdmlkZW8+
CisgICAgICAgIDxicj4KKyAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJjcmVhdGVXZWJBdWRpb05v
ZGUoKSI+Q3JlYXRlIEF1ZGlvIE5vZGU8L2J1dHRvbj4KKyAgICAgICAgPGJ1dHRvbiBvbmNsaWNr
PSJkaXNjb25uZWN0V2ViQXVkaW9Ob2RlKCkiPkRpc2Nvbm5lY3QgQXVkaW8gTm9kZTwvYnV0dG9u
PgorICAgICAgICA8YnI+CisgICAgICAgIDxidXR0b24gb25jbGljaz0ic3RhcnRDYXB0dXJlKCki
PlN0YXJ0IENhcHR1cmU8L2J1dHRvbj4KKyAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJzdG9wQ2Fw
dHVyZSgpIj5TdG9wIENhcHR1cmU8L2J1dHRvbj4KKyAgICAgICAgPGJyPgorICAgICAgICA8YnV0
dG9uIG9uY2xpY2s9InBsYXlWaWRlbygpIj5QbGF5ICZsdDt2aWRlbyZndDs8L2J1dHRvbj4KKyAg
ICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJwYXVzZVZpZGVvKCkiPlBhdXNlICZsdDt2aWRlbyZndDs8
L2J1dHRvbj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0F1ZGlvQnVmZmVyU2l6ZS5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXVkaW9CdWZmZXJTaXplLm1tCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjYzYjE1ODFkY2I2ZGQyOTlhNzMwZjU2MGM5M2MyY2ZiZmNmNGM5N2EKLS0tIC9kZXYvbnVsbAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0F1ZGlvQnVmZmVyU2l6
ZS5tbQpAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgor
CisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdC5oIgorI2ltcG9y
dCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCAiVXNlck1lZGlhQ2FwdHVyZVVJRGVsZWdhdGUu
aCIKKyNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2Vi
S2l0L1dLVUlEZWxlZ2F0ZVByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25m
aWd1cmF0aW9uLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZh
dGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJL
aXQvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmcuaD4KKworCisjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CisjaW1wb3J0IDx3dGYvU2Vjb25kcy5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SSB7CisKK2RvdWJsZSB3YWl0Rm9yQnVmZmVyU2l6ZUNoYW5nZShXS1dlYlZpZXcqIHdlYlZpZXcs
IGRvdWJsZSBvbGRTaXplKQoreworICAgIGludCB0cmllcyA9IDA7CisgICAgZG8geworICAgICAg
ICBhdXRvIHNpemUgPSBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAid2lu
ZG93LmludGVybmFscy5jdXJyZW50QXVkaW9CdWZmZXJTaXplKCkiXS5kb3VibGVWYWx1ZTsKKyAg
ICAgICAgaWYgKHNpemUgIT0gb2xkU2l6ZSkKKyAgICAgICAgICAgIHJldHVybiBzaXplOworCisg
ICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNsZWVwKDAuMSk7CisgICAgfSB3aGlsZSAoKyt0
cmllcyA8PSAxMDApOworCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIDA7
Cit9CisKK1RFU1QoV2ViS2l0LCBBdWRpb0J1ZmZlclNpemUpCit7CisgICAgYXV0byBjb25maWd1
cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsK
KyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdFdLKFRlc3RXZWJLaXRBUEk6OlV0aWw6OmNyZWF0ZUNv
bnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIkludGVybmFsc0luamVjdGVkQnVuZGxlVGVzdCIp
KTsKKworI2lmIFBMQVRGT1JNKElPUykKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLmFsbG93c0lu
bGluZU1lZGlhUGxheWJhY2sgPSBZRVM7CisgICAgY29uZmlndXJhdGlvbi5nZXQoKS5faW5saW5l
TWVkaWFQbGF5YmFja1JlcXVpcmVzUGxheXNJbmxpbmVBdHRyaWJ1dGUgPSBOTzsKKyNlbmRpZgor
ICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkuX21lZGlhRGF0YUxvYWRzQXV0b21hdGljYWxseSA9IFlF
UzsKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLm1lZGlhVHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9u
Rm9yUGxheWJhY2sgPSBXS0F1ZGlvdmlzdWFsTWVkaWFUeXBlTm9uZTsKKyAgICBjb25maWd1cmF0
aW9uLmdldCgpLnByb2Nlc3NQb29sID0gKFdLUHJvY2Vzc1Bvb2wgKiljb250ZXh0LmdldCgpOwor
ICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkuX21lZGlhQ2FwdHVyZUVuYWJsZWQgPSBZRVM7CisgICAg
YXV0byBwcmVmZXJlbmNlcyA9IFtjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXTsKKyAgICBwcmVm
ZXJlbmNlcy5fbWVkaWFDYXB0dXJlUmVxdWlyZXNTZWN1cmVDb25uZWN0aW9uID0gTk87CisgICAg
cHJlZmVyZW5jZXMuX21vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQgPSBZRVM7CisKKyAgICBhdXRv
IHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDMwMCwgMzAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0
KCkgYWRkVG9XaW5kb3c6WUVTXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tVc2Vy
TWVkaWFDYXB0dXJlVUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIHdlYlZpZXcuZ2V0KCku
VUlEZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNs
eUxvYWRUZXN0UGFnZU5hbWVkOkAiYXVkaW8tYnVmZmVyLXNpemUiXTsKKworICAgIF9fYmxvY2sg
Ym9vbCBnb3RNZXNzYWdlID0gZmFsc2U7CisgICAgW3dlYlZpZXcgcGVyZm9ybUFmdGVyUmVjZWl2
aW5nTWVzc2FnZTpAInBsYXlpbmciIGFjdGlvbjpeeyBnb3RNZXNzYWdlID0gdHJ1ZTsgfV07Cisg
ICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAicGxheVZpZGVvKCkiIGNvbXBsZXRpb25I
YW5kbGVyOm5pbF07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZnb3RNZXNzYWdlKTsK
KyAgICBhdXRvIGJ1ZmZlclNpemVQbGF5aW5nQXVkaW8gPSBbd2ViVmlldyBzdHJpbmdCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OkAid2luZG93LmludGVybmFscy5jdXJyZW50QXVkaW9CdWZmZXJTaXpl
KCkiXS5kb3VibGVWYWx1ZTsKKworICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAInN0
YXJ0Q2FwdHVyZSgpIiBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOworICAgIFtkZWxlZ2F0ZSB3YWl0
VW50aWxQcm9tcHRlZF07CisgICAgYXV0byBidWZmZXJTaXplQ2FwdHVyaW5nQXVkaW8gPSB3YWl0
Rm9yQnVmZmVyU2l6ZUNoYW5nZSh3ZWJWaWV3LmdldCgpLCBidWZmZXJTaXplUGxheWluZ0F1ZGlv
KTsKKyAgICBBU1NFUlRfTFQoYnVmZmVyU2l6ZUNhcHR1cmluZ0F1ZGlvLCBidWZmZXJTaXplUGxh
eWluZ0F1ZGlvKTsKKworICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAImNyZWF0ZVdl
YkF1ZGlvTm9kZSgpIiBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOworICAgIGF1dG8gYnVmZmVyU2l6
ZVdpdGhXZWJBdWRpbyA9IHdhaXRGb3JCdWZmZXJTaXplQ2hhbmdlKHdlYlZpZXcuZ2V0KCksIGJ1
ZmZlclNpemVDYXB0dXJpbmdBdWRpbyk7CisgICAgQVNTRVJUX0xUKGJ1ZmZlclNpemVXaXRoV2Vi
QXVkaW8sIGJ1ZmZlclNpemVDYXB0dXJpbmdBdWRpbyk7CisKKyAgICBbd2ViVmlldyBldmFsdWF0
ZUphdmFTY3JpcHQ6QCJkaXNjb25uZWN0V2ViQXVkaW9Ob2RlKCkiIGNvbXBsZXRpb25IYW5kbGVy
Om5pbF07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZnb3RNZXNzYWdlKTsKKyAgICBh
dXRvIGJ1ZmZlclNpemVXaXRob3V0V2ViQXVkaW8gPSB3YWl0Rm9yQnVmZmVyU2l6ZUNoYW5nZSh3
ZWJWaWV3LmdldCgpLCBidWZmZXJTaXplV2l0aFdlYkF1ZGlvKTsKKyAgICBBU1NFUlRfR1QoYnVm
ZmVyU2l6ZVdpdGhvdXRXZWJBdWRpbywgYnVmZmVyU2l6ZVdpdGhXZWJBdWRpbyk7CisgICAgQVNT
RVJUX0VRKGJ1ZmZlclNpemVXaXRob3V0V2ViQXVkaW8sIGJ1ZmZlclNpemVDYXB0dXJpbmdBdWRp
byk7CisKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJzdG9wcGVkQ2FwdHVyZSgp
IiBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOworICAgIGF1dG8gYnVmZmVyU2l6ZVdpdGhvdXRDYXB0
dXJlID0gd2FpdEZvckJ1ZmZlclNpemVDaGFuZ2Uod2ViVmlldy5nZXQoKSwgYnVmZmVyU2l6ZVdp
dGhXZWJBdWRpbyk7CisgICAgQVNTRVJUX0dUKGJ1ZmZlclNpemVXaXRob3V0Q2FwdHVyZSwgYnVm
ZmVyU2l6ZVdpdGhvdXRXZWJBdWRpbyk7CisgICAgQVNTRVJUX0VRKGJ1ZmZlclNpemVXaXRob3V0
Q2FwdHVyZSwgYnVmZmVyU2l6ZVBsYXlpbmdBdWRpbyk7CisKKyAgICBbd2ViVmlldyByZW1vdmVG
cm9tU3VwZXJ2aWV3XTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428973</attachid>
            <date>2021-05-18 13:11:45 -0700</date>
            <delta_ts>2021-05-19 14:00:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225927-20210518131144.patch</filename>
            <type>text/plain</type>
            <size>24234</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NTg5CjIwMjEtMDUtMThUMTM6MTE6MzEsODUyOiBbMHgx
MWI5MWFlMDBdIHdoaWxlIGNvbXB1dGluZyBzb2NrbmFtZTogZmFpbGVkIHRvIGNyZWF0ZSAvdXNy
L2xvY2FsL3Zhci9ydW4vd2F0Y2htYW4vZXJpYy1zdGF0ZTogTm8gc3VjaCBmaWxlIG9yIGRpcmVj
dG9yeQpXYXRjaG1hbjogY29tbWFuZCByZXR1cm5lZCBubyBvdXRwdXQuCkZhbGxpbmcgYmFjayB0
byBzY2FubmluZy4uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDk1MDNjNjBjNDhlOGRmMThmNTQ0MWFhNDljNjU4
MDAxZjczOGFjMjMuLmQ0YTljNjZkYWZlNzMxOTJlZWJmZTNiOGQzZWJhN2U0MDRkOTkwMjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAyMS0wNS0xOCAgRXJpYyBDYXJsc29uICA8ZXJp
Yy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwZGF0ZSBBdWRpb1Nlc3Np
b24gYnVmZmVyIHNpemUgaGFuZGxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNTkyNworICAgICAgICByZGFyOi8vNzY5MjAzNzUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcmV2aW91c2x5IHdlIG9u
bHkgc2V0IHRoZSBhdWRpbyBzZXNzaW9uIGJ1ZmZlciBzaXplIHdoZW4gdGhlcmUgd2FzIGFuIGFj
dGl2ZQorICAgICAgICBNZWRpYVNlc3Npb24uIFRoaXMgbWVhbnQgdGhhdCB3aGVuIG5vIGF1ZGlv
IHdhcyBiZWluZyBwbGF5ZWQgb3IgY2FwdHVyZWQgdGhlIGJ1ZmZlcgorICAgICAgICBzaXplIHdv
dWxkIGJlIGxlZnQgYXQgd2hhdGV2ZXIgc2l6ZSB3YXMgYXBwcm9wcmlhdGUgZm9yIHRoZSBsYXN0
IE1lZGlhU2Vzc2lvbgorICAgICAgICBzdG9wcGVkLiBUaGlzIHdhcyBlc3BlY2lhbGx5IGJhZCB3
aGVuIHRoZSBsYXN0IE1lZGlhU2Vzc2lvbiBwbGF5ZWQgV2ViQXVkaW8KKyAgICAgICAgb3IgY2Fw
dHVyZWQgYXVkaW8gYmVjYXVzZSB0aG9zZSByZXF1aXJlIGEgc21hbGxlciBidWZmZXIgc2l6ZSB0
aGFuIHRoZSBkZWZhdWx0LAorICAgICAgICBhbmQgd2FzIG1hZGUgZXZlbiB3b3JzZSB3aGVuIHVz
aW5nIHRoZSBHUFUgcHJvY2VzcyBiZWNhdXNlIGl0IG1heSBsaXZlIGZvciBtdWNoCisgICAgICAg
IGxvbmdlciB0aGFuIHRoZSBsYXN0IHdlYiBwcm9jZXNzIHRoYXQgcGxheWVkIGF1ZGlvLiBGaXgg
dGhpcyBieSB1c2luZyB0aGUgbG93IHBvd2VyCisgICAgICAgIGJ1ZmZlciBzaXplIHdoZW4gcGxh
eWluZyBhdWRpbyBvciB3aGVuIHRoZXJlIGlzIG5vIE1lZGlhU2Vzc2lvbiBhdCBhbGwuCisgICAg
ICAgIAorICAgICAgICBBZGQgQXVkaW9CdWZmZXJTaXplIEFQSSB0ZXN0LgorCisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9Db250ZXh0OjpjYW5Qcm9kdWNlQXVkaW8gY29uc3QpOiBDYWxjdWxhdGUgc3RhdGUgaW5zdGVh
ZCBvZiBhbHdheXMKKyAgICAgICAgcmV0dXJuaW5nIGB0cnVlYC4gTG9naWMgdG8gY2FsY3VsYXRl
IHN0YXRlIG1vdmVkIGZyb20gQXVkaW9Db250ZXh0OjptZWRpYVN0YXRlLgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9Db250ZXh0OjptZWRpYVN0YXRlIGNvbnN0KTogVXNlIGNhblByb2R1Y2VBdWRp
by4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6aXNQbGF5aW5nQXVkaW9EaWRDaGFu
Z2UpOiBJbmZvcm0gbWVkaWEgc2Vzc2lvbiB3aGVuIHN0YXRlIGNoYW5nZXMuCisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaDoKKworICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6dXBkYXRlU2Vzc2lvblN0YXRlKTogT25seSBj
b25zaWRlciBXZWJBdWRpbyBzZXNzaW9ucworICAgICAgICB0aGF0IGNhbiBwcm9kdWNlIGF1ZGlv
LiBBbHdheXMgdXNlICJsb3cgcG93ZXIiIGJ1ZmZlciBzaXplIHdoZW4gdGhlcmUgaXMgbm8gV2Vi
QXVkaW8gb3IKKyAgICAgICAgYXVkaW8gY2FwdHVyZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYTo6YWRkU2Vzc2lvbik6IENhY2hlIHN1cHBvcnRlZCBoYXJkd2Fy
ZSBidWZmZXIgc2l6ZXMuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyQ29j
b2E6OmF1ZGlvT3V0cHV0RGV2aWNlQ2hhbmdlZCk6IFVwZGF0ZSBjYWNoZWQgYnVmZmVyCisgICAg
ICAgIHNpemVzLgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxzOjpjdXJyZW50QXVkaW9CdWZmZXJTaXplIGNvbnN0KTogRXhwb3Nl
IGN1cnJlbnQgYXVkaW8gc2Vzc2lvbiBidWZmZXIKKyAgICAgICAgc2l6ZSBmb3IgdGVzdGluZy4K
KyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJu
YWxzLmlkbDoKKwogMjAyMS0wNS0xNyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+
CiAKICAgICAgICAgWyBCaWdTdXIgRGVidWcgd2syIEFSTTY0IF0gaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2ZyYW1lLXRyYW5zZm9ybS1y
ZWFkYWJsZS5odG1sIGlzIGZsYWt5IGNyYXNoaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggZjA0ODA2NzVmZWU1N2ZkNzVjZTFl
MThkNzY5MGYyN2YwM2U4NTkwZS4uNzlkM2ZmYjcxODkyNTcwOWNkZjExYzJlODAzNGFhMTc5MGU0
YTA4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250
ZXh0LmNwcApAQCAtMzYyLDkgKzM2MiwxNCBAQCBib29sIEF1ZGlvQ29udGV4dDo6d2lsbFBhdXNl
UGxheWJhY2soKQogICAgIHJldHVybiBtX21lZGlhU2Vzc2lvbi0+Y2xpZW50V2lsbFBhdXNlUGxh
eWJhY2soKTsKIH0KIAorYm9vbCBBdWRpb0NvbnRleHQ6OmNhblByb2R1Y2VBdWRpbygpIGNvbnN0
Cit7CisgICAgcmV0dXJuICFpc1N0b3BwZWQoKSAmJiBkZXN0aW5hdGlvbigpLmlzUGxheWluZ0F1
ZGlvKCk7Cit9CisKIE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBBdWRpb0NvbnRleHQ6
Om1lZGlhU3RhdGUoKSBjb25zdAogewotICAgIGlmICghaXNTdG9wcGVkKCkgJiYgZGVzdGluYXRp
b24oKS5pc1BsYXlpbmdBdWRpbygpKQorICAgIGlmIChjYW5Qcm9kdWNlQXVkaW8oKSkKICAgICAg
ICAgcmV0dXJuIE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGU6OklzUGxheWluZ0F1ZGlvOwogCiAg
ICAgcmV0dXJuIE1lZGlhUHJvZHVjZXI6OklzTm90UGxheWluZzsKQEAgLTUxNSw2ICs1MjAsNyBA
QCB2b2lkIEF1ZGlvQ29udGV4dDo6aXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoKQogICAgIGNhbGxP
bk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gewogICAgICAgICBp
ZiAoYXV0byogZG9jdW1lbnQgPSBwcm90ZWN0ZWRUaGlzLT5kb2N1bWVudCgpKQogICAgICAgICAg
ICAgZG9jdW1lbnQtPnVwZGF0ZUlzUGxheWluZ01lZGlhKCk7CisgICAgICAgIHByb3RlY3RlZFRo
aXMtPm1fbWVkaWFTZXNzaW9uLT5jYW5Qcm9kdWNlQXVkaW9DaGFuZ2VkKCk7CiAgICAgfSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250
ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCmlu
ZGV4IGVlZWNlNDUwOGRkYzdhMmJmYmExMGJjMjBkYTg4MjAzYmJjMjI5MzQuLjAxYTZjMzliNjMw
MWUzNzU4OGU0Y2YzYzQ4NTgwYmY3OGYyNWQ4YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaApAQCAtMTI4LDcgKzEyOCw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRpYVNl
c3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Np
b246OlJlbW90ZUNvbW1hbmRBcmd1bWVudCYpIGZpbmFsIHsgfQogICAgIGJvb2wgc3VwcG9ydHNT
ZWVraW5nKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIHNob3VsZE92
ZXJyaWRlQmFja2dyb3VuZFBsYXliYWNrUmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246
OkludGVycnVwdGlvblR5cGUpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9v
bCBjYW5Qcm9kdWNlQXVkaW8oKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgYm9v
bCBjYW5Qcm9kdWNlQXVkaW8oKSBjb25zdCBmaW5hbDsKICAgICBib29sIGlzU3VzcGVuZGVkKCkg
Y29uc3QgZmluYWw7CiAgICAgTWVkaWFTZXNzaW9uR3JvdXBJZGVudGlmaWVyIG1lZGlhU2Vzc2lv
bkdyb3VwSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2Nv
YS5oCmluZGV4IDg1N2Y3MmI4ZjRmYWJlMTcyNDI3OTA5ZTRlYmY2OGIyMTliYTNjOTMuLjViYTU5
OTEzMDQzYTY1ZmE5MGM4MWU5NGI5M2Y5YTM5MWEwMGZlYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFn
ZXJDb2NvYS5oCkBAIC0xMTUsNiArMTE1LDggQEAgcHJpdmF0ZToKIAogICAgIGNvbnN0IHN0ZDo6
dW5pcXVlX3B0cjxOb3dQbGF5aW5nTWFuYWdlcj4gbV9ub3dQbGF5aW5nTWFuYWdlcjsKICAgICBS
ZWZQdHI8QXVkaW9IYXJkd2FyZUxpc3RlbmVyPiBtX2F1ZGlvSGFyZHdhcmVMaXN0ZW5lcjsKKwor
ICAgIEF1ZGlvSGFyZHdhcmVMaXN0ZW5lcjo6QnVmZmVyU2l6ZVJhbmdlIG1fc3VwcG9ydGVkQXVk
aW9IYXJkd2FyZUJ1ZmZlclNpemVzOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29h
Lm1tCmluZGV4IDU2NTQ2ZWJmMDc5MTdhNDRjMGIxOGY1MmU5ZjQ3ODdmMWI0MTVmOTEuLmU1MzRl
M2RiOWFkZDVhOTVhOWE0MGMxMGZkYzg5YTIyNzY5YTAyMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5h
Z2VyQ29jb2EubW0KQEAgLTkyLDcgKzkyLDggQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyQ29j
b2E6OnVwZGF0ZVNlc3Npb25TdGF0ZSgpCiAgICAgICAgICAgICArK2F1ZGlvQ291bnQ7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFU
eXBlOjpXZWJBdWRpbzoKLSAgICAgICAgICAgICsrd2ViQXVkaW9Db3VudDsKKyAgICAgICAgICAg
IGlmIChzZXNzaW9uLmNhblByb2R1Y2VBdWRpbygpKQorICAgICAgICAgICAgICAgICsrd2ViQXVk
aW9Db3VudDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTExMSwyMSArMTEy
LDIyIEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjp1cGRhdGVTZXNzaW9uU3RhdGUo
KQogICAgICAgICAiVmlkZW9BdWRpbygiLCB2aWRlb0F1ZGlvQ291bnQsICIpLCAiCiAgICAgICAg
ICJXZWJBdWRpbygiLCB3ZWJBdWRpb0NvdW50LCAiKSIpOwogCisgICAgc2l6ZV90IGJ1ZmZlclNp
emUgPSAwOwogICAgIGlmICh3ZWJBdWRpb0NvdW50KQotICAgICAgICBBdWRpb1Nlc3Npb246OnNo
YXJlZFNlc3Npb24oKS5zZXRQcmVmZXJyZWRCdWZmZXJTaXplKEF1ZGlvVXRpbGl0aWVzOjpyZW5k
ZXJRdWFudHVtU2l6ZSk7CisgICAgICAgIGJ1ZmZlclNpemUgPSBBdWRpb1V0aWxpdGllczo6cmVu
ZGVyUXVhbnR1bVNpemU7CiAgICAgLy8gSW4gY2FzZSBvZiBhdWRpbyBjYXB0dXJlLCB3ZSB3YW50
IHRvIGdyYWIgMjAgbXMgY2h1bmtzIHRvIGxpbWl0IHRoZSBsYXRlbmN5IHNvIHRoYXQgaXQgaXMg
bm90IG5vdGljZWFibGUgYnkgdXNlcnMKICAgICAvLyB3aGlsZSBoYXZpbmcgYSBsYXJnZSBlbm91
Z2ggYnVmZmVyIHNvIHRoYXQgdGhlIGF1ZGlvIHJlbmRlcmluZyByZW1haW5zIHN0YWJsZSwgaGVu
Y2UgYSBjb21wdXRhdGlvbiBiYXNlZCBvbiBzYW1wbGUgcmF0ZS4KICAgICBlbHNlIGlmIChjYXB0
dXJlQ291bnQpCi0gICAgICAgIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLnNldFByZWZl
cnJlZEJ1ZmZlclNpemUoQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuc2FtcGxlUmF0ZSgp
IC8gNTApOwotICAgIGVsc2UgaWYgKCh2aWRlb0F1ZGlvQ291bnQgfHwgYXVkaW9Db3VudCkgJiYg
RGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjpsb3dQb3dlclZpZGVvQXVkaW9CdWZmZXJTaXplRW5h
YmxlZCgpKSB7Ci0gICAgICAgIHNpemVfdCBidWZmZXJTaXplOwotICAgICAgICBpZiAobV9hdWRp
b0hhcmR3YXJlTGlzdGVuZXIgJiYgbV9hdWRpb0hhcmR3YXJlTGlzdGVuZXItPnN1cHBvcnRlZEJ1
ZmZlclNpemVzKCkpCi0gICAgICAgICAgICBidWZmZXJTaXplID0gbV9hdWRpb0hhcmR3YXJlTGlz
dGVuZXItPnN1cHBvcnRlZEJ1ZmZlclNpemVzKCkubmVhcmVzdChrTG93UG93ZXJWaWRlb0J1ZmZl
clNpemUpOwotICAgICAgICBlbHNlCisgICAgICAgIGJ1ZmZlclNpemUgPSBBdWRpb1Nlc3Npb246
OnNoYXJlZFNlc3Npb24oKS5zYW1wbGVSYXRlKCkgLyA1MDsKKyAgICBlbHNlIHsKKyAgICAgICAg
aWYgKG1fc3VwcG9ydGVkQXVkaW9IYXJkd2FyZUJ1ZmZlclNpemVzICYmIERlcHJlY2F0ZWRHbG9i
YWxTZXR0aW5nczo6bG93UG93ZXJWaWRlb0F1ZGlvQnVmZmVyU2l6ZUVuYWJsZWQoKSkKKyAgICAg
ICAgICAgIGJ1ZmZlclNpemUgPSBtX3N1cHBvcnRlZEF1ZGlvSGFyZHdhcmVCdWZmZXJTaXplcy5u
ZWFyZXN0KGtMb3dQb3dlclZpZGVvQnVmZmVyU2l6ZSk7CisgICAgICAgIGVsc2UgaWYgKCFoYXNO
b1Nlc3Npb24oKSkKICAgICAgICAgICAgIGJ1ZmZlclNpemUgPSBBdWRpb1V0aWxpdGllczo6cmVu
ZGVyUXVhbnR1bVNpemU7CisgICAgfQogCisgICAgaWYgKGJ1ZmZlclNpemUpCiAgICAgICAgIEF1
ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLnNldFByZWZlcnJlZEJ1ZmZlclNpemUoYnVmZmVy
U2l6ZSk7Ci0gICAgfQogCiAgICAgaWYgKCFEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OnNob3Vs
ZE1hbmFnZUF1ZGlvU2Vzc2lvbkNhdGVnb3J5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE5MCw4
ICsxOTIsMTAgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OmFkZFNlc3Npb24oUGxh
dGZvcm1NZWRpYVNlc3Npb24mIHNlc3Npb24pCiB7CiAgICAgbV9ub3dQbGF5aW5nTWFuYWdlci0+
YWRkQ2xpZW50KCp0aGlzKTsKIAotICAgIGlmICghbV9hdWRpb0hhcmR3YXJlTGlzdGVuZXIpCisg
ICAgaWYgKCFtX2F1ZGlvSGFyZHdhcmVMaXN0ZW5lcikgewogICAgICAgICBtX2F1ZGlvSGFyZHdh
cmVMaXN0ZW5lciA9IEF1ZGlvSGFyZHdhcmVMaXN0ZW5lcjo6Y3JlYXRlKCp0aGlzKTsKKyAgICAg
ICAgbV9zdXBwb3J0ZWRBdWRpb0hhcmR3YXJlQnVmZmVyU2l6ZXMgPSBtX2F1ZGlvSGFyZHdhcmVM
aXN0ZW5lci0+c3VwcG9ydGVkQnVmZmVyU2l6ZXMoKTsKKyAgICB9CiAKICAgICBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OmFkZFNlc3Npb24oc2Vzc2lvbik7CiB9CkBAIC00MDMsNiArNDA3
LDggQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnVwZGF0ZU5vd1BsYXlpbmdJbmZv
KCkKIAogdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OmF1ZGlvT3V0cHV0RGV2aWNlQ2hh
bmdlZCgpCiB7CisgICAgQVNTRVJUKG1fYXVkaW9IYXJkd2FyZUxpc3RlbmVyKTsKKyAgICBtX3N1
cHBvcnRlZEF1ZGlvSGFyZHdhcmVCdWZmZXJTaXplcyA9IG1fYXVkaW9IYXJkd2FyZUxpc3RlbmVy
LT5zdXBwb3J0ZWRCdWZmZXJTaXplcygpOwogICAgIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lv
bigpLmF1ZGlvT3V0cHV0RGV2aWNlQ2hhbmdlZCgpOwogICAgIHVwZGF0ZVNlc3Npb25TdGF0ZSgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDMyZDE1ZmQyN2E4NGFi
MWMzNDM3MzQ1OWU1OWM0NzllZDU5YjRkOTMuLjMzN2ZjNmY3YzNkMGQ4NTY1ZGFmMmYwNWM1MzE0
M2FjNDExMTI0NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTU0MzIs
NiArNTQzMiwxNSBAQCBkb3VibGUgSW50ZXJuYWxzOjpwcmVmZXJyZWRBdWRpb0J1ZmZlclNpemUo
KSBjb25zdAogICAgIHJldHVybiAwOwogfQogCitkb3VibGUgSW50ZXJuYWxzOjpjdXJyZW50QXVk
aW9CdWZmZXJTaXplKCkgY29uc3QKK3sKKyNpZiBVU0UoQVVESU9fU0VTU0lPTikKKyAgICByZXR1
cm4gQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuYnVmZmVyU2l6ZSgpOworI2VuZGlmCisg
ICAgcmV0dXJuIDA7Cit9CisKKwogYm9vbCBJbnRlcm5hbHM6OmF1ZGlvU2Vzc2lvbkFjdGl2ZSgp
IGNvbnN0CiB7CiAjaWYgVVNFKEFVRElPX1NFU1NJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaAppbmRleCA0Mjk1MWUyZDE0NDg4ZGRiYjQ2N2RkNGYzZGYyZDc5OTRjMzk5YWYzLi4zZTc1
MGNjN2U5ZDQ0ZWFhNzQ4NmVkYjM3YWJjNGQ1MTE3Y2YyN2RiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmgKQEAgLTg0Myw2ICs4NDMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdXBwb3J0
c0F1ZGlvU2Vzc2lvbigpIGNvbnN0OwogICAgIFN0cmluZyBhdWRpb1Nlc3Npb25DYXRlZ29yeSgp
IGNvbnN0OwogICAgIGRvdWJsZSBwcmVmZXJyZWRBdWRpb0J1ZmZlclNpemUoKSBjb25zdDsKKyAg
ICBkb3VibGUgY3VycmVudEF1ZGlvQnVmZmVyU2l6ZSgpIGNvbnN0OwogICAgIGJvb2wgYXVkaW9T
ZXNzaW9uQWN0aXZlKCkgY29uc3Q7CiAKICAgICB2b2lkIHN0b3JlUmVnaXN0cmF0aW9uc09uRGlz
ayhET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5pZGwKaW5kZXggMGUwMTRiODBmMjczZWNkODUwMzBhZGQ4NTgxNmRiZmVhYjM2OTBjNy4uMTE5
YWZmNDJjMjg5ZjIyZDMxNWM4Y2I5NjVhOTdiODA3NDBhZDllNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmlkbApAQCAtODkzLDYgKzg5Myw3IEBAIGVudW0gVHJlZVR5cGUgewogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHN1cHBvcnRzQXVkaW9TZXNzaW9uOwogICAgIERP
TVN0cmluZyBhdWRpb1Nlc3Npb25DYXRlZ29yeSgpOwogICAgIGRvdWJsZSBwcmVmZXJyZWRBdWRp
b0J1ZmZlclNpemUoKTsKKyAgICBkb3VibGUgY3VycmVudEF1ZGlvQnVmZmVyU2l6ZSgpOwogICAg
IGJvb2xlYW4gYXVkaW9TZXNzaW9uQWN0aXZlKCk7CiAKICAgICBbQ29uZGl0aW9uYWw9U0VSVklD
RV9XT1JLRVJdIFByb21pc2U8Ym9vbGVhbj4gaGFzU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbihE
T01TdHJpbmcgc2NvcGVVUkwpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IDI1MGIzMjkwYmIzZDg2MTljOGJjYzgwNGE4YTVmOTY2NmNlYmUxNTEu
LmMwNTk2YTZmMjVhODM1MTk3YTdhZDY1ZjAwOGU4ODkyOTA4MDMzMWEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAy
MS0wNS0xOCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAg
ICBbQ29jb2FdIFVwZGF0ZSBBdWRpb1Nlc3Npb24gYnVmZmVyIHNpemUgaGFuZGxpbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTkyNworICAgICAg
ICByZGFyOi8vNzY5MjAzNzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L2F1ZGlvLWJ1
ZmZlci1zaXplLmh0bWw6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvQXVkaW9CdWZmZXJTaXplLm1tOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OndhaXRGb3JCdWZmZXJTaXplQ2hhbmdlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QpOgorCiAyMDIxLTA1LTE1ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAg
ICAgICAgIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yIHN1cnZpdmVzIHBhZ2UgcmVsb2FkL25hdmln
YXRpb24KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjQ2Zjg0MjA3YTBlZTM4OThhYzdjOTlh
YTdiM2I4YjVkMjg0OGUzOC4uOTQyNGJiNWMxZjIzMTAyYmJlMjVjYjU4ZThkNWZkNWFiNDYyN2My
NSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ4LDYgKzQ4LDggQEAKIAkJMDQxQTFFMzQy
MTZGRkRCQzAwNzg5RTBBIC8qIFB1YmxpY1N1ZmZpeC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNDFBMUUzMzIxNkZGREJDMDA3ODlFMEEgLyogUHVi
bGljU3VmZml4LmNwcCAqLzsgfTsKIAkJMDREQjIzOTYyMzVFNDNFQzAwMzI4RjE3IC8qIEJ1bXBQ
b2ludGVyQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA0NTFBNUE2MjM1RTQzOEUwMDlERjk0NSAvKiBCdW1wUG9pbnRlckFsbG9jYXRv
ci5jcHAgKi87IH07CiAJCTA3MTFERjUyMjI2QTk1RkMwMDNERDJGNyAvKiBBVkZvdW5kYXRpb25T
b2Z0TGlua1Rlc3QubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwNzExREY1MTIyNkE5NUZCMDAzREQyRjcgLyogQVZGb3VuZGF0aW9uU29mdExpbmtUZXN0
Lm1tICovOyB9OworCQkwNzEzNzA0QTI2NTMyMEU1MDBDQTJDOUEgLyogQXVkaW9CdWZmZXJTaXpl
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcxMzcw
NDkyNjUzMjBFNTAwQ0EyQzlBIC8qIEF1ZGlvQnVmZmVyU2l6ZS5tbSAqLzsgfTsKKwkJMDcxMzcw
NTUyNjUzMkUzOTAwQ0EyQzlBIC8qIGF1ZGlvLWJ1ZmZlci1zaXplLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcxMzcwNTQyNjUzMkUz
OTAwQ0EyQzlBIC8qIGF1ZGlvLWJ1ZmZlci1zaXplLmh0bWwgKi87IH07CiAJCTA3NDkyQjNCMURG
OEIxNEMwMDYzM0RFMSAvKiBFbnVtZXJhdGVNZWRpYURldmljZXMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc0OTJCM0ExREY4QUUyRDAwNjMzREUx
IC8qIEVudW1lcmF0ZU1lZGlhRGV2aWNlcy5jcHAgKi87IH07CiAJCTA3NDkyQjNDMURGOEI4NjYw
MDYzM0RFMSAvKiBlbnVtZXJhdGVNZWRpYURldmljZXMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzQ5MkIzOTFERjhBREE0MDA2MzNE
RTEgLyogZW51bWVyYXRlTWVkaWFEZXZpY2VzLmh0bWwgKi87IH07CiAJCTA3NDk5NDQyMUVBNTAz
NEIwMDBEQTQ0RSAvKiBnZXRVc2VyTWVkaWEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTQxMEY0RDE5QUY3QkVGMDAyRUJBQjUgLyog
Z2V0VXNlck1lZGlhLmh0bWwgKi87IH07CkBAIC0xMzc1LDYgKzEzNzcsNyBAQAogCQkJCUY0MkJE
N0Q5MjQ1Q0M1MDgwMDFFMjA3QSAvKiBhdHRyaWJ1dGVkU3RyaW5nTmV3bGluZUF0RW5kT2ZEb2N1
bWVudC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTdDOUVEOThCMTdBMTlGNEIwMEU0
REMzMyAvKiBhdHRyaWJ1dGVkU3RyaW5nU3RyaWtldGhyb3VnaC5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovLAogCQkJCTM3MTM3RTRCMjExMjREMDEwMDJCRUVBNCAvKiBBdHRyU3R5bGUuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLywKKwkJCQkwNzEzNzA1NTI2NTMyRTM5MDBDQTJDOUEgLyogYXVk
aW8tYnVmZmVyLXNpemUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk0NkYwM0MxQzI1
NUIyRDVBMDBBQTUxQzUgLyogYXVkaW8tY29udGV4dC1wbGF5aW5nLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8sCiAJCQkJQ0Q5RTI5MkUxQzkwQzMzRjAwMEJCODAwIC8qIGF1ZGlvLW9ubHkuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlDOTQ0MTYwMDIxNDMwRTg5MDBCMUVEREEgLyog
YXVkaW8td2l0aC1jb250cm9scy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMTc3Myw2
ICsxNzc2LDggQEAKIAkJMDQxQTFFMzMyMTZGRkRCQzAwNzg5RTBBIC8qIFB1YmxpY1N1ZmZpeC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQdWJsaWNTdWZmaXguY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNDUxQTVBNjIzNUU0MzhFMDA5REY5NDUg
LyogQnVtcFBvaW50ZXJBbGxvY2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQnVtcFBvaW50ZXJBbGxvY2F0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwNzExREY1MTIyNkE5NUZCMDAzREQyRjcgLyogQVZGb3VuZGF0aW9uU29mdExpbmtU
ZXN0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQVZGb3VuZGF0
aW9uU29mdExpbmtUZXN0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzEzNzA0
OTI2NTMyMEU1MDBDQTJDOUEgLyogQXVkaW9CdWZmZXJTaXplLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXVkaW9CdWZmZXJTaXplLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwNzEzNzA1NDI2NTMyRTM5MDBDQTJDOUEgLyogYXVkaW8tYnVmZmVy
LXNpemUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQuaHRtbDsgbmFtZSA9ICJhdWRpby1idWZmZXItc2l6ZS5odG1sIjsgcGF0aCA9ICJU
ZXN0cy9XZWJLaXQvYXVkaW8tYnVmZmVyLXNpemUuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTA3NDY2NDU3MjJGRjYyRDAwMEUzNDUxQSAvKiBBY2Nlc3NpYmlsaXR5VGVzdFN1
cHBvcnRQcm90b2NvbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmlsaXR5VGVzdFN1cHBvcnRQ
cm90b2NvbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzQ2NjQ1ODIyRkY2MzA1
MDBFMzQ1MUEgLyogQWNjZXNzaWJpbGl0eVRlc3RQbHVnaW4ubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBBY2Nlc3NpYmlsaXR5VGVzdFBsdWdpbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMDc0OTJCMzkxREY4QURBNDAwNjMzREUxIC8qIGVudW1lcmF0ZU1lZGlhRGV2aWNlcy5o
dG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gZW51bWVyYXRlTWVkaWFEZXZpY2VzLmh0
bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMTg5LDYgKzMxOTQsNyBAQAogCQkw
OEZCNzc5NEZFODQxNTVEQzAyQUFDMDcgLyogVGVzdFdlYktpdEFQSSAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMDcxMzcwNTQyNjUzMkUzOTAwQ0EyQzlB
IC8qIGF1ZGlvLWJ1ZmZlci1zaXplLmh0bWwgKi8sCiAJCQkJNDlBRUVGNjgyNDA3Mjc2RjAwQzg3
RTRDIC8qIEluZm8ucGxpc3QgKi8sCiAJCQkJNUM5RDkyMjYyMkQ3REQ3QjAwOEU5MjY2IC8qIERl
cml2ZWQgU291cmNlcyAqLywKIAkJCQk1QzlEOTIxRDIyRDdEQkY3MDA4RTkyNjYgLyogU291cmNl
cy50eHQgKi8sCkBAIC0zMzU3LDYgKzMzNjMsNyBAQAogCQkJCTUxQjQwRDlEMjNBQzk2MEUwMEUw
NTI0MSAvKiBBc3luY0Z1bmN0aW9uLm1tICovLAogCQkJCTgzNDEzOEM2MjAzMjYxQjkwMEYyNjk2
MCAvKiBBc3luY1BvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZS5tbSAqLywKIAkJCQkzNzYwQzRG
MDIxMTI0OUFGMDAyMzNBQ0MgLyogQXR0clN0eWxlLm1tICovLAorCQkJCTA3MTM3MDQ5MjY1MzIw
RTUwMENBMkM5QSAvKiBBdWRpb0J1ZmZlclNpemUubW0gKi8sCiAJCQkJQ0RFRDM0MkUyNDlEREQ5
RDAwMDJBRTdBIC8qIEF1ZGlvUm91dGluZ0FyYml0cmF0aW9uLm1tICovLAogCQkJCTc1NENFQzgw
MUY2NzIyREMwMEQwMDM5QSAvKiBBdXRvRmlsbEF2YWlsYWJsZS5tbSAqLywKIAkJCQkyREQzNTUz
NTFCRDA4Mzc4MDA1REY0QTcgLyogQXV0b0xheW91dEludGVncmF0aW9uLm1tICovLApAQCAtNTI5
NSw2ICs1MzAyLDcgQEAKIAkJCQk3Q0NFN0VCNDFBNDExQTdFMDA0NDdDNEMgLyogQXR0cmlidXRl
ZFN0cmluZy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0RkEyQTRGMjREMUYwNTcwMDYxOEE0NiAv
KiBBdHRyaWJ1dGVkU3Vic3RyaW5nRm9yUHJvcG9zZWRSYW5nZS5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTM3NjBDNEYxMjExMjQ5QUYwMDIzM0FDQyAvKiBBdHRyU3R5bGUubW0gaW4gU291cmNlcyAq
LywKKwkJCQkwNzEzNzA0QTI2NTMyMEU1MDBDQTJDOUEgLyogQXVkaW9CdWZmZXJTaXplLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQ0RFRDM0MkYyNDlEREUwRTAwMDJBRTdBIC8qIEF1ZGlvUm91dGlu
Z0FyYml0cmF0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RDOEU0OEQxQkM1Q0I0NTAwNTk0
RkVDIC8qIEF1ZGlvU2Vzc2lvbkNhdGVnb3J5SU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjQy
RDYzNDQyMkExNzI5RjAwRDJGQjNBIC8qIEF1dG9jb3JyZWN0aW9uVGVzdHNJT1MubW0gaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L2F1
ZGlvLWJ1ZmZlci1zaXplLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9h
dWRpby1idWZmZXItc2l6ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdhZThiZTE0YmVmYWU5OTQ3M2JlOWQx
YTExYjlkZDZjNDM1N2UwOTcKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdC9hdWRpby1idWZmZXItc2l6ZS5odG1sCkBAIC0wLDAgKzEsODMgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzY3JpcHQ+CisKK2xl
dCBjb250ZXh0OworbGV0IG9zY2lsbGF0b3I7CitsZXQgc3RyZWFtOworbGV0IGdhaW47CisKK2Z1
bmN0aW9uIHNlbmRNZXNzYWdlKG1lc3NhZ2UpCit7CisgICAgdHJ5IHsKKyAgICAgICAgaWYgKHdp
bmRvdy53ZWJraXQpCisgICAgICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50
ZXN0SGFuZGxlci5wb3N0TWVzc2FnZShtZXNzYWdlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgY29uc29sZS5sb2coYE1FU1NBR0UgLSAke21lc3NhZ2V9YCk7CisgICAgfSBjYXRjaChlcnIp
IHsKKyAgICAgICAgY29uc29sZS5sb2coYGZhaWxlZCB0byBzZW5kIG1lc3NhZ2UgJHttZXNzYWdl
fTogJHtlcnJ9YCk7CisgICAgfQorfQorCitmdW5jdGlvbiBjcmVhdGVXZWJBdWRpb05vZGUoKQor
eworICAgIGNvbnRleHQgPSBuZXcgQXVkaW9Db250ZXh0KCk7CisKKyAgICBnYWluID0gbmV3IEdh
aW5Ob2RlKGNvbnRleHQsIHtnYWluOiAwLjA1fSk7CisgICAgZ2Fpbi5jb25uZWN0KGNvbnRleHQu
ZGVzdGluYXRpb24pOworCisgICAgb3NjaWxsYXRvciA9IG5ldyBPc2NpbGxhdG9yTm9kZShjb250
ZXh0KTsKKyAgICBvc2NpbGxhdG9yLmNvbm5lY3QoZ2Fpbik7CisgICAgb3NjaWxsYXRvci5zdGFy
dCgpOworICAgIAorICAgIGNvbnRleHQuc3RhcnRSZW5kZXJpbmcoKTsKK30KKworZnVuY3Rpb24g
ZGlzY29ubmVjdFdlYkF1ZGlvTm9kZSgpCit7CisgICAgb3NjaWxsYXRvci5zdG9wKCk7CisgICAg
b3NjaWxsYXRvci5kaXNjb25uZWN0KCk7CisgICAgZ2Fpbi5kaXNjb25uZWN0KCk7CisgICAgY29u
dGV4dC5jbG9zZSgpOworfQorCithc3luYyBmdW5jdGlvbiBzdGFydENhcHR1cmUoKQoreworICAg
IHN0cmVhbSA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHsgdmlk
ZW86IHRydWUsIGF1ZGlvOiB7IHZvbHVtZTogMC4wNSB9IH0pOworfQorCitmdW5jdGlvbiBzdG9w
Q2FwdHVyZSgpCit7CisgICAgc3RyZWFtLmdldFRyYWNrcygpLmZvckVhY2godHJhY2sgPT4gdHJh
Y2suc3RvcCgpKTsKK30KKworYXN5bmMgZnVuY3Rpb24gcGxheVZpZGVvKCkgCit7CisgICAgbGV0
IHZpZGVvID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3ZpZGVvJylbMF07CisgICAg
dmlkZW8uc3JjID0gJ3Rlc3QtbXNlLm1wNCc7CisgICAgdmlkZW8udm9sdW1lID0gMC4wNTsKKyAg
ICBhd2FpdCB2aWRlby5wbGF5KCk7CisgICAgc2VuZE1lc3NhZ2UoJ3BsYXlpbmcnKTsKK30KKwor
ZnVuY3Rpb24gcGF1c2VWaWRlbygpIAoreworICAgIHZpZGVvID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoJ3ZpZGVvJylbMF0ucGF1c2UoKTsKK30KKyAgICAgICAgPC9zY3JpcHQ+Cisg
ICAgPGhlYWQ+CisKKyAgICA8Ym9keT4KKyAgICAgICAgPHZpZGVvIGNvbnRyb2xzPjwvdmlkZW8+
CisgICAgICAgIDxicj4KKyAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJjcmVhdGVXZWJBdWRpb05v
ZGUoKSI+Q3JlYXRlIEF1ZGlvIE5vZGU8L2J1dHRvbj4KKyAgICAgICAgPGJ1dHRvbiBvbmNsaWNr
PSJkaXNjb25uZWN0V2ViQXVkaW9Ob2RlKCkiPkRpc2Nvbm5lY3QgQXVkaW8gTm9kZTwvYnV0dG9u
PgorICAgICAgICA8YnI+CisgICAgICAgIDxidXR0b24gb25jbGljaz0ic3RhcnRDYXB0dXJlKCki
PlN0YXJ0IENhcHR1cmU8L2J1dHRvbj4KKyAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJzdG9wQ2Fw
dHVyZSgpIj5TdG9wIENhcHR1cmU8L2J1dHRvbj4KKyAgICAgICAgPGJyPgorICAgICAgICA8YnV0
dG9uIG9uY2xpY2s9InBsYXlWaWRlbygpIj5QbGF5ICZsdDt2aWRlbyZndDs8L2J1dHRvbj4KKyAg
ICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJwYXVzZVZpZGVvKCkiPlBhdXNlICZsdDt2aWRlbyZndDs8
L2J1dHRvbj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0F1ZGlvQnVmZmVyU2l6ZS5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXVkaW9CdWZmZXJTaXplLm1tCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmVjMWNjNDY4NmU5NjQ3MWVmMTAwNGFjNWMzZGM5OGUyYTFiNWQyZWUKLS0tIC9kZXYvbnVsbAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0F1ZGlvQnVmZmVyU2l6
ZS5tbQpAQCAtMCwwICsxLDExMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgor
CisjaWYgV0tfSEFWRV9DX1NQSQorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2lt
cG9ydCAiVGVzdC5oIgorI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCAiVXNlck1l
ZGlhQ2FwdHVyZVVJRGVsZWdhdGUuaCIKKyNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUHJp
dmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb24uaD4KKyNpbXBv
cnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2Vi
S2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KKworI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2lt
cG9ydCA8d3RmL1NlY29uZHMuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitkb3Vi
bGUgd2FpdEZvckJ1ZmZlclNpemVDaGFuZ2UoV0tXZWJWaWV3KiB3ZWJWaWV3LCBkb3VibGUgb2xk
U2l6ZSkKK3sKKyAgICBpbnQgdHJpZXMgPSAwOworICAgIGRvIHsKKyAgICAgICAgYXV0byBzaXpl
ID0gW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIndpbmRvdy5pbnRlcm5h
bHMuY3VycmVudEF1ZGlvQnVmZmVyU2l6ZSgpIl0uZG91YmxlVmFsdWU7CisgICAgICAgIGlmIChz
aXplICE9IG9sZFNpemUpCisgICAgICAgICAgICByZXR1cm4gc2l6ZTsKKworICAgICAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpzbGVlcCgwLjEpOworICAgIH0gd2hpbGUgKCsrdHJpZXMgPD0gMTAw
KTsKKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOworfQorCitURVNU
KFdlYktpdCwgQXVkaW9CdWZmZXJTaXplKQoreworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBj
b250ZXh0ID0gYWRvcHRXSyhUZXN0V2ViS2l0QVBJOjpVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5q
ZWN0ZWRCdW5kbGVUZXN0KCJJbnRlcm5hbHNJbmplY3RlZEJ1bmRsZVRlc3QiKSk7CisKKyNpZiBQ
TEFURk9STShJT1MpCisgICAgY29uZmlndXJhdGlvbi5nZXQoKS5hbGxvd3NJbmxpbmVNZWRpYVBs
YXliYWNrID0gWUVTOworICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkuX2lubGluZU1lZGlhUGxheWJh
Y2tSZXF1aXJlc1BsYXlzSW5saW5lQXR0cmlidXRlID0gTk87CisjZW5kaWYKKyAgICBjb25maWd1
cmF0aW9uLmdldCgpLl9tZWRpYURhdGFMb2Fkc0F1dG9tYXRpY2FsbHkgPSBZRVM7CisgICAgY29u
ZmlndXJhdGlvbi5nZXQoKS5tZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBsYXliYWNr
ID0gV0tBdWRpb3Zpc3VhbE1lZGlhVHlwZU5vbmU7CisgICAgY29uZmlndXJhdGlvbi5nZXQoKS5w
cm9jZXNzUG9vbCA9IChXS1Byb2Nlc3NQb29sICopY29udGV4dC5nZXQoKTsKKyAgICBjb25maWd1
cmF0aW9uLmdldCgpLl9tZWRpYUNhcHR1cmVFbmFibGVkID0gWUVTOworICAgIGF1dG8gcHJlZmVy
ZW5jZXMgPSBbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc107CisgICAgcHJlZmVyZW5jZXMuX21l
ZGlhQ2FwdHVyZVJlcXVpcmVzU2VjdXJlQ29ubmVjdGlvbiA9IE5POworICAgIHByZWZlcmVuY2Vz
Ll9tb2NrQ2FwdHVyZURldmljZXNFbmFibGVkID0gWUVTOworCisgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCAzMDAsIDMwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIGFkZFRvV2lu
ZG93OllFU10pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVXNlck1lZGlhQ2FwdHVy
ZVVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICB3ZWJWaWV3LmdldCgpLlVJRGVsZWdhdGUg
PSBkZWxlZ2F0ZS5nZXQoKTsKKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBh
Z2VOYW1lZDpAImF1ZGlvLWJ1ZmZlci1zaXplIl07CisKKyAgICBfX2Jsb2NrIGJvb2wgZ290TWVz
c2FnZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IHBlcmZvcm1BZnRlclJlY2VpdmluZ01lc3NhZ2U6
QCJwbGF5aW5nIiBhY3Rpb246XnsgZ290TWVzc2FnZSA9IHRydWU7IH1dOworICAgIFt3ZWJWaWV3
IGV2YWx1YXRlSmF2YVNjcmlwdDpAInBsYXlWaWRlbygpIiBjb21wbGV0aW9uSGFuZGxlcjpuaWxd
OworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZ290TWVzc2FnZSk7CisgICAgYXV0byBi
dWZmZXJTaXplUGxheWluZ0F1ZGlvID0gW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNj
cmlwdDpAIndpbmRvdy5pbnRlcm5hbHMuY3VycmVudEF1ZGlvQnVmZmVyU2l6ZSgpIl0uZG91Ymxl
VmFsdWU7CisKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJzdGFydENhcHR1cmUo
KSIgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKKyAgICBbZGVsZWdhdGUgd2FpdFVudGlsUHJvbXB0
ZWRdOworICAgIGF1dG8gYnVmZmVyU2l6ZUNhcHR1cmluZ0F1ZGlvID0gd2FpdEZvckJ1ZmZlclNp
emVDaGFuZ2Uod2ViVmlldy5nZXQoKSwgYnVmZmVyU2l6ZVBsYXlpbmdBdWRpbyk7CisgICAgQVNT
RVJUX0xUKGJ1ZmZlclNpemVDYXB0dXJpbmdBdWRpbywgYnVmZmVyU2l6ZVBsYXlpbmdBdWRpbyk7
CisKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJjcmVhdGVXZWJBdWRpb05vZGUo
KSIgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKKyAgICBhdXRvIGJ1ZmZlclNpemVXaXRoV2ViQXVk
aW8gPSB3YWl0Rm9yQnVmZmVyU2l6ZUNoYW5nZSh3ZWJWaWV3LmdldCgpLCBidWZmZXJTaXplQ2Fw
dHVyaW5nQXVkaW8pOworICAgIEFTU0VSVF9MVChidWZmZXJTaXplV2l0aFdlYkF1ZGlvLCBidWZm
ZXJTaXplQ2FwdHVyaW5nQXVkaW8pOworCisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0
OkAiZGlzY29ubmVjdFdlYkF1ZGlvTm9kZSgpIiBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZ290TWVzc2FnZSk7CisgICAgYXV0byBidWZmZXJT
aXplV2l0aG91dFdlYkF1ZGlvID0gd2FpdEZvckJ1ZmZlclNpemVDaGFuZ2Uod2ViVmlldy5nZXQo
KSwgYnVmZmVyU2l6ZVdpdGhXZWJBdWRpbyk7CisgICAgQVNTRVJUX0dUKGJ1ZmZlclNpemVXaXRo
b3V0V2ViQXVkaW8sIGJ1ZmZlclNpemVXaXRoV2ViQXVkaW8pOworICAgIEFTU0VSVF9FUShidWZm
ZXJTaXplV2l0aG91dFdlYkF1ZGlvLCBidWZmZXJTaXplQ2FwdHVyaW5nQXVkaW8pOworCisgICAg
W3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAic3RvcHBlZENhcHR1cmUoKSIgY29tcGxldGlv
bkhhbmRsZXI6bmlsXTsKKyAgICBhdXRvIGJ1ZmZlclNpemVXaXRob3V0Q2FwdHVyZSA9IHdhaXRG
b3JCdWZmZXJTaXplQ2hhbmdlKHdlYlZpZXcuZ2V0KCksIGJ1ZmZlclNpemVXaXRoV2ViQXVkaW8p
OworICAgIEFTU0VSVF9HVChidWZmZXJTaXplV2l0aG91dENhcHR1cmUsIGJ1ZmZlclNpemVXaXRo
b3V0V2ViQXVkaW8pOworICAgIEFTU0VSVF9FUShidWZmZXJTaXplV2l0aG91dENhcHR1cmUsIGJ1
ZmZlclNpemVQbGF5aW5nQXVkaW8pOworCisgICAgW3dlYlZpZXcgcmVtb3ZlRnJvbVN1cGVydmll
d107Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKworI2VuZGlmIC8vIFdLX0hB
VkVfQ19TUEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429096</attachid>
            <date>2021-05-19 14:00:18 -0700</date>
            <delta_ts>2021-05-20 15:41:53 -0700</delta_ts>
            <desc>Update patch</desc>
            <filename>bug-225927-20210519140018.patch</filename>
            <type>text/plain</type>
            <size>28271</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NjgwCjIwMjEtMDUtMTlUMTM6NTc6NTYsODQ0OiBbMHgx
MTkyYjRlMDBdIHdoaWxlIGNvbXB1dGluZyBzb2NrbmFtZTogZmFpbGVkIHRvIGNyZWF0ZSAvdXNy
L2xvY2FsL3Zhci9ydW4vd2F0Y2htYW4vZXJpYy1zdGF0ZTogTm8gc3VjaCBmaWxlIG9yIGRpcmVj
dG9yeQpXYXRjaG1hbjogY29tbWFuZCByZXR1cm5lZCBubyBvdXRwdXQuCkZhbGxpbmcgYmFjayB0
byBzY2FubmluZy4uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQ4YjVkMGE2NDkyM2QyMjY1YjY3MjZlM2Y0Yjkw
Mjc1N2NiMGZlZjcuLmQ3MThjYjFkMWZkMDY1M2IzNjZjYmU5MDc1YjVkMWZkZmRlYjdiMjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAyMS0wNS0xOSAgRXJpYyBDYXJsc29uICA8ZXJp
Yy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwZGF0ZSBBdWRpb1Nlc3Np
b24gYnVmZmVyIHNpemUgaGFuZGxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNTkyNworICAgICAgICByZGFyOi8vNzY5MjAzNzUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcmV2aW91c2x5IHdlIG9u
bHkgc2V0IHRoZSBhdWRpbyBzZXNzaW9uIGJ1ZmZlciBzaXplIHdoZW4gdGhlcmUgd2FzIGFuIGFj
dGl2ZQorICAgICAgICBNZWRpYVNlc3Npb24uIFRoaXMgbWVhbnQgdGhhdCB3aGVuIG5vIGF1ZGlv
IHdhcyBiZWluZyBwbGF5ZWQgb3IgY2FwdHVyZWQsIHRoZSBidWZmZXIKKyAgICAgICAgc2l6ZSB3
b3VsZCBiZSBsZWZ0IGF0IHdoYXRldmVyIHNpemUgd2FzIGFwcHJvcHJpYXRlIGZvciB0aGUgbGFz
dCBNZWRpYVNlc3Npb24KKyAgICAgICAgc3RvcHBlZC4gVGhpcyB3YXMgZXNwZWNpYWxseSBiYWQg
d2hlbiB0aGUgbGFzdCBNZWRpYVNlc3Npb24gcGxheWVkIFdlYkF1ZGlvCisgICAgICAgIG9yIGNh
cHR1cmVkIGF1ZGlvIGJlY2F1c2UgdGhvc2UgcmVxdWlyZSBhIHNtYWxsZXIgYnVmZmVyIHNpemUg
dGhhbiB0aGUgZGVmYXVsdCwKKyAgICAgICAgYW5kIHdhcyBtYWRlIGV2ZW4gd29yc2Ugd2hlbiB1
c2luZyB0aGUgR1BVIHByb2Nlc3MgYmVjYXVzZSBpdCBtYXkgbGl2ZSBmb3IgbXVjaAorICAgICAg
ICBsb25nZXIgdGhhbiB0aGUgbGFzdCB3ZWIgcHJvY2VzcyB0aGF0IHBsYXllZCBhdWRpby4gRml4
IHRoaXMgYnkgdXNpbmcgdGhlIGxvdyBwb3dlcgorICAgICAgICBidWZmZXIgc2l6ZSB3aGVuIHBs
YXlpbmcgYXVkaW8gb3Igd2hlbiB0aGVyZSBpcyBubyBNZWRpYVNlc3Npb24gYXQgYWxsLgorICAg
ICAgICAKKyAgICAgICAgQWRkIEF1ZGlvQnVmZmVyU2l6ZSBBUEkgdGVzdC4KKworICAgICAgICAq
IE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvQ29udGV4dDo6Y2FuUHJvZHVjZUF1ZGlvIGNvbnN0KTogQ2FsY3VsYXRlIHN0YXRlIGluc3Rl
YWQgb2YgYWx3YXlzCisgICAgICAgIHJldHVybmluZyBgdHJ1ZWAuIExvZ2ljIHRvIGNhbGN1bGF0
ZSBzdGF0ZSBtb3ZlZCBmcm9tIEF1ZGlvQ29udGV4dDo6bWVkaWFTdGF0ZS4KKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvQ29udGV4dDo6bWVkaWFTdGF0ZSBjb25zdCk6IFVzZSBjYW5Qcm9kdWNlQXVk
aW8uCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmlzUGxheWluZ0F1ZGlvRGlkQ2hh
bmdlKTogSW5mb3JtIG1lZGlhIHNlc3Npb24gd2hlbiBzdGF0ZSBjaGFuZ2VzLgorICAgICAgICAq
IE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0Lmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnVwZGF0ZVNlc3Npb25TdGF0ZSk6IE9ubHkg
Y29uc2lkZXIgV2ViQXVkaW8gc2Vzc2lvbnMKKyAgICAgICAgdGhhdCBjYW4gcHJvZHVjZSBhdWRp
by4gQWx3YXlzIHVzZSAibG93IHBvd2VyIiBidWZmZXIgc2l6ZSB3aGVuIHRoZXJlIGlzIG5vIFdl
YkF1ZGlvIG9yCisgICAgICAgIGF1ZGlvIGNhcHR1cmUuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNlc3Npb25NYW5hZ2VyQ29jb2E6OmFkZFNlc3Npb24pOiBDYWNoZSBzdXBwb3J0ZWQgaGFyZHdh
cmUgYnVmZmVyIHNpemVzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlckNv
Y29hOjphdWRpb091dHB1dERldmljZUNoYW5nZWQpOiBVcGRhdGUgY2FjaGVkIGJ1ZmZlcgorICAg
ICAgICBzaXplcy4KKworICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkludGVybmFsczo6Y3VycmVudEF1ZGlvQnVmZmVyU2l6ZSBjb25zdCk6IEV4cG9z
ZSBjdXJyZW50IGF1ZGlvIHNlc3Npb24gYnVmZmVyCisgICAgICAgIHNpemUgZm9yIHRlc3Rpbmcu
CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVy
bmFscy5pZGw6CisKIDIwMjEtMDUtMTggIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+
CiAKICAgICAgICAgW0dQVVBdIFJlbW90ZUF1ZGlvU2Vzc2lvbiBjYWxscyBpbnRvIEFWQXVkaW9T
ZXNzaW9uIHdoZW4gR1BVUCBpcyBlbmFibGVkLCBjYXVzaW5nIGhhbmdzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggZjA0ODA2NzVm
ZWU1N2ZkNzVjZTFlMThkNzY5MGYyN2YwM2U4NTkwZS4uNzlkM2ZmYjcxODkyNTcwOWNkZjExYzJl
ODAzNGFhMTc5MGU0YTA4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmNwcApAQCAtMzYyLDkgKzM2MiwxNCBAQCBib29sIEF1ZGlvQ29udGV4
dDo6d2lsbFBhdXNlUGxheWJhY2soKQogICAgIHJldHVybiBtX21lZGlhU2Vzc2lvbi0+Y2xpZW50
V2lsbFBhdXNlUGxheWJhY2soKTsKIH0KIAorYm9vbCBBdWRpb0NvbnRleHQ6OmNhblByb2R1Y2VB
dWRpbygpIGNvbnN0Cit7CisgICAgcmV0dXJuICFpc1N0b3BwZWQoKSAmJiBkZXN0aW5hdGlvbigp
LmlzUGxheWluZ0F1ZGlvKCk7Cit9CisKIE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBB
dWRpb0NvbnRleHQ6Om1lZGlhU3RhdGUoKSBjb25zdAogewotICAgIGlmICghaXNTdG9wcGVkKCkg
JiYgZGVzdGluYXRpb24oKS5pc1BsYXlpbmdBdWRpbygpKQorICAgIGlmIChjYW5Qcm9kdWNlQXVk
aW8oKSkKICAgICAgICAgcmV0dXJuIE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGU6OklzUGxheWlu
Z0F1ZGlvOwogCiAgICAgcmV0dXJuIE1lZGlhUHJvZHVjZXI6OklzTm90UGxheWluZzsKQEAgLTUx
NSw2ICs1MjAsNyBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6aXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2Uo
KQogICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0g
ewogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBwcm90ZWN0ZWRUaGlzLT5kb2N1bWVudCgp
KQogICAgICAgICAgICAgZG9jdW1lbnQtPnVwZGF0ZUlzUGxheWluZ01lZGlhKCk7CisgICAgICAg
IHByb3RlY3RlZFRoaXMtPm1fbWVkaWFTZXNzaW9uLT5jYW5Qcm9kdWNlQXVkaW9DaGFuZ2VkKCk7
CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Q29udGV4dC5oCmluZGV4IGVlZWNlNDUwOGRkYzdhMmJmYmExMGJjMjBkYTg4MjAzYmJjMjI5MzQu
LjAxYTZjMzliNjMwMWUzNzU4OGU0Y2YzYzQ4NTgwYmY3OGYyNWQ4YmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaApAQCAtMTI4LDcgKzEyOCw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxh
dGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgY29uc3QgUGxhdGZv
cm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbW1hbmRBcmd1bWVudCYpIGZpbmFsIHsgfQogICAgIGJv
b2wgc3VwcG9ydHNTZWVraW5nKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICBi
b29sIHNob3VsZE92ZXJyaWRlQmFja2dyb3VuZFBsYXliYWNrUmVzdHJpY3Rpb24oUGxhdGZvcm1N
ZWRpYVNlc3Npb246OkludGVycnVwdGlvblR5cGUpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgYm9vbCBjYW5Qcm9kdWNlQXVkaW8oKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVl
OyB9CisgICAgYm9vbCBjYW5Qcm9kdWNlQXVkaW8oKSBjb25zdCBmaW5hbDsKICAgICBib29sIGlz
U3VzcGVuZGVkKCkgY29uc3QgZmluYWw7CiAgICAgTWVkaWFTZXNzaW9uR3JvdXBJZGVudGlmaWVy
IG1lZGlhU2Vzc2lvbkdyb3VwSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2Vy
Q29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lv
bk1hbmFnZXJDb2NvYS5oCmluZGV4IDg1N2Y3MmI4ZjRmYWJlMTcyNDI3OTA5ZTRlYmY2OGIyMTli
YTNjOTMuLjNiYTc4NjExOTU2OGE3M2U2ZGM5ZTdiODUwZTY3NTU3MGUyYTNiNmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFn
ZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYS5oCkBAIC0xMTUsNiArMTE1LDkgQEAgcHJpdmF0ZToKIAogICAg
IGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxOb3dQbGF5aW5nTWFuYWdlcj4gbV9ub3dQbGF5aW5nTWFu
YWdlcjsKICAgICBSZWZQdHI8QXVkaW9IYXJkd2FyZUxpc3RlbmVyPiBtX2F1ZGlvSGFyZHdhcmVM
aXN0ZW5lcjsKKworICAgIEF1ZGlvSGFyZHdhcmVMaXN0ZW5lcjo6QnVmZmVyU2l6ZVJhbmdlIG1f
c3VwcG9ydGVkQXVkaW9IYXJkd2FyZUJ1ZmZlclNpemVzOworICAgIHNpemVfdCBtX2RlZmF1bHRC
dWZmZXJTaXplOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCmluZGV4IDU2
NTQ2ZWJmMDc5MTdhNDRjMGIxOGY1MmU5ZjQ3ODdmMWI0MTVmOTEuLjFmODQwOTg1YjFmY2I0OTNi
M2VhNGI0YTc0ZmFkZDU3NGUwYTU1ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0K
QEAgLTU4LDYgKzU4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFu
YWdlcj4gUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpjcmVhdGUKIAogTWVkaWFTZXNzaW9u
TWFuYWdlckNvY29hOjpNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EoKQogICAgIDogbV9ub3dQbGF5
aW5nTWFuYWdlcihwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bWVkaWFTdHJhdGVneSgpLmNyZWF0ZU5v
d1BsYXlpbmdNYW5hZ2VyKCkpCisgICAgLCBtX2RlZmF1bHRCdWZmZXJTaXplKEF1ZGlvU2Vzc2lv
bjo6c2hhcmVkU2Vzc2lvbigpLnByZWZlcnJlZEJ1ZmZlclNpemUoKSkKIHsKICNpZiBFTkFCTEUo
VlA5KQogICAgIGlmIChzaG91bGRFbmFibGVWUDlEZWNvZGVyKCkpCkBAIC05Miw3ICs5Myw4IEBA
IHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjp1cGRhdGVTZXNzaW9uU3RhdGUoKQogICAg
ICAgICAgICAgKythdWRpb0NvdW50OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
UGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZTo6V2ViQXVkaW86Ci0gICAgICAgICAgICAr
K3dlYkF1ZGlvQ291bnQ7CisgICAgICAgICAgICBpZiAoc2Vzc2lvbi5jYW5Qcm9kdWNlQXVkaW8o
KSkKKyAgICAgICAgICAgICAgICArK3dlYkF1ZGlvQ291bnQ7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogCkBAIC0xMTEsMjEgKzExMywxNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFn
ZXJDb2NvYTo6dXBkYXRlU2Vzc2lvblN0YXRlKCkKICAgICAgICAgIlZpZGVvQXVkaW8oIiwgdmlk
ZW9BdWRpb0NvdW50LCAiKSwgIgogICAgICAgICAiV2ViQXVkaW8oIiwgd2ViQXVkaW9Db3VudCwg
IikiKTsKIAorICAgIHNpemVfdCBidWZmZXJTaXplID0gbV9kZWZhdWx0QnVmZmVyU2l6ZTsKICAg
ICBpZiAod2ViQXVkaW9Db3VudCkKLSAgICAgICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9u
KCkuc2V0UHJlZmVycmVkQnVmZmVyU2l6ZShBdWRpb1V0aWxpdGllczo6cmVuZGVyUXVhbnR1bVNp
emUpOwotICAgIC8vIEluIGNhc2Ugb2YgYXVkaW8gY2FwdHVyZSwgd2Ugd2FudCB0byBncmFiIDIw
IG1zIGNodW5rcyB0byBsaW1pdCB0aGUgbGF0ZW5jeSBzbyB0aGF0IGl0IGlzIG5vdCBub3RpY2Vh
YmxlIGJ5IHVzZXJzCi0gICAgLy8gd2hpbGUgaGF2aW5nIGEgbGFyZ2UgZW5vdWdoIGJ1ZmZlciBz
byB0aGF0IHRoZSBhdWRpbyByZW5kZXJpbmcgcmVtYWlucyBzdGFibGUsIGhlbmNlIGEgY29tcHV0
YXRpb24gYmFzZWQgb24gc2FtcGxlIHJhdGUuCi0gICAgZWxzZSBpZiAoY2FwdHVyZUNvdW50KQot
ICAgICAgICBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS5zZXRQcmVmZXJyZWRCdWZmZXJT
aXplKEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLnNhbXBsZVJhdGUoKSAvIDUwKTsKLSAg
ICBlbHNlIGlmICgodmlkZW9BdWRpb0NvdW50IHx8IGF1ZGlvQ291bnQpICYmIERlcHJlY2F0ZWRH
bG9iYWxTZXR0aW5nczo6bG93UG93ZXJWaWRlb0F1ZGlvQnVmZmVyU2l6ZUVuYWJsZWQoKSkgewot
ICAgICAgICBzaXplX3QgYnVmZmVyU2l6ZTsKLSAgICAgICAgaWYgKG1fYXVkaW9IYXJkd2FyZUxp
c3RlbmVyICYmIG1fYXVkaW9IYXJkd2FyZUxpc3RlbmVyLT5zdXBwb3J0ZWRCdWZmZXJTaXplcygp
KQotICAgICAgICAgICAgYnVmZmVyU2l6ZSA9IG1fYXVkaW9IYXJkd2FyZUxpc3RlbmVyLT5zdXBw
b3J0ZWRCdWZmZXJTaXplcygpLm5lYXJlc3Qoa0xvd1Bvd2VyVmlkZW9CdWZmZXJTaXplKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgYnVmZmVyU2l6ZSA9IEF1ZGlvVXRpbGl0aWVzOjpyZW5k
ZXJRdWFudHVtU2l6ZTsKLQotICAgICAgICBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS5z
ZXRQcmVmZXJyZWRCdWZmZXJTaXplKGJ1ZmZlclNpemUpOwotICAgIH0KKyAgICAgICAgYnVmZmVy
U2l6ZSA9IEF1ZGlvVXRpbGl0aWVzOjpyZW5kZXJRdWFudHVtU2l6ZTsKKyAgICBlbHNlIGlmIChj
YXB0dXJlQ291bnQpIHsKKyAgICAgICAgLy8gSW4gY2FzZSBvZiBhdWRpbyBjYXB0dXJlLCB3ZSB3
YW50IHRvIGdyYWIgMjAgbXMgY2h1bmtzIHRvIGxpbWl0IHRoZSBsYXRlbmN5IHNvIHRoYXQgaXQg
aXMgbm90IG5vdGljZWFibGUgYnkgdXNlcnMKKyAgICAgICAgLy8gd2hpbGUgaGF2aW5nIGEgbGFy
Z2UgZW5vdWdoIGJ1ZmZlciBzbyB0aGF0IHRoZSBhdWRpbyByZW5kZXJpbmcgcmVtYWlucyBzdGFi
bGUsIGhlbmNlIGEgY29tcHV0YXRpb24gYmFzZWQgb24gc2FtcGxlIHJhdGUuCisgICAgICAgIGJ1
ZmZlclNpemUgPSBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS5zYW1wbGVSYXRlKCkgLyA1
MDsKKyAgICB9IGVsc2UgaWYgKG1fc3VwcG9ydGVkQXVkaW9IYXJkd2FyZUJ1ZmZlclNpemVzICYm
IERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6bG93UG93ZXJWaWRlb0F1ZGlvQnVmZmVyU2l6ZUVu
YWJsZWQoKSkKKyAgICAgICAgYnVmZmVyU2l6ZSA9IG1fc3VwcG9ydGVkQXVkaW9IYXJkd2FyZUJ1
ZmZlclNpemVzLm5lYXJlc3Qoa0xvd1Bvd2VyVmlkZW9CdWZmZXJTaXplKTsKKworICAgIEF1ZGlv
U2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLnNldFByZWZlcnJlZEJ1ZmZlclNpemUoYnVmZmVyU2l6
ZSk7CiAKICAgICBpZiAoIURlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6c2hvdWxkTWFuYWdlQXVk
aW9TZXNzaW9uQ2F0ZWdvcnkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTkwLDggKzE4OCwxMCBA
QCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6YWRkU2Vzc2lvbihQbGF0Zm9ybU1lZGlh
U2Vzc2lvbiYgc2Vzc2lvbikKIHsKICAgICBtX25vd1BsYXlpbmdNYW5hZ2VyLT5hZGRDbGllbnQo
KnRoaXMpOwogCi0gICAgaWYgKCFtX2F1ZGlvSGFyZHdhcmVMaXN0ZW5lcikKKyAgICBpZiAoIW1f
YXVkaW9IYXJkd2FyZUxpc3RlbmVyKSB7CiAgICAgICAgIG1fYXVkaW9IYXJkd2FyZUxpc3RlbmVy
ID0gQXVkaW9IYXJkd2FyZUxpc3RlbmVyOjpjcmVhdGUoKnRoaXMpOworICAgICAgICBtX3N1cHBv
cnRlZEF1ZGlvSGFyZHdhcmVCdWZmZXJTaXplcyA9IG1fYXVkaW9IYXJkd2FyZUxpc3RlbmVyLT5z
dXBwb3J0ZWRCdWZmZXJTaXplcygpOworICAgIH0KIAogICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlcjo6YWRkU2Vzc2lvbihzZXNzaW9uKTsKIH0KQEAgLTQwMyw2ICs0MDMsOSBAQCB2b2lk
IE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6dXBkYXRlTm93UGxheWluZ0luZm8oKQogCiB2b2lk
IE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6YXVkaW9PdXRwdXREZXZpY2VDaGFuZ2VkKCkKIHsK
KyAgICBBU1NFUlQobV9hdWRpb0hhcmR3YXJlTGlzdGVuZXIpOworICAgIG1fc3VwcG9ydGVkQXVk
aW9IYXJkd2FyZUJ1ZmZlclNpemVzID0gbV9hdWRpb0hhcmR3YXJlTGlzdGVuZXItPnN1cHBvcnRl
ZEJ1ZmZlclNpemVzKCk7CisgICAgbV9kZWZhdWx0QnVmZmVyU2l6ZSA9IEF1ZGlvU2Vzc2lvbjo6
c2hhcmVkU2Vzc2lvbigpLnByZWZlcnJlZEJ1ZmZlclNpemUoKTsKICAgICBBdWRpb1Nlc3Npb246
OnNoYXJlZFNlc3Npb24oKS5hdWRpb091dHB1dERldmljZUNoYW5nZWQoKTsKICAgICB1cGRhdGVT
ZXNzaW9uU3RhdGUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAz
MmQxNWZkMjdhODRhYjFjMzQzNzM0NTllNTljNDc5ZWQ1OWI0ZDkzLi4zMzdmYzZmN2MzZDBkODU2
NWRhZjJmMDVjNTMxNDNhYzQxMTEyNDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCkBAIC01NDMyLDYgKzU0MzIsMTUgQEAgZG91YmxlIEludGVybmFsczo6cHJlZmVycmVkQXVk
aW9CdWZmZXJTaXplKCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAorZG91YmxlIEludGVybmFs
czo6Y3VycmVudEF1ZGlvQnVmZmVyU2l6ZSgpIGNvbnN0Cit7CisjaWYgVVNFKEFVRElPX1NFU1NJ
T04pCisgICAgcmV0dXJuIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLmJ1ZmZlclNpemUo
KTsKKyNlbmRpZgorICAgIHJldHVybiAwOworfQorCisKIGJvb2wgSW50ZXJuYWxzOjphdWRpb1Nl
c3Npb25BY3RpdmUoKSBjb25zdAogewogI2lmIFVTRShBVURJT19TRVNTSU9OKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggNDI5NTFlMmQxNDQ4OGRkYmI0NjdkZDRmM2RmMmQ3OTk0
YzM5OWFmMy4uM2U3NTBjYzdlOWQ0NGVhYTc0ODZlZGIzN2FiYzRkNTExN2NmMjdkYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC04NDMsNiArODQzLDcgQEAgcHVibGljOgogICAg
IGJvb2wgc3VwcG9ydHNBdWRpb1Nlc3Npb24oKSBjb25zdDsKICAgICBTdHJpbmcgYXVkaW9TZXNz
aW9uQ2F0ZWdvcnkoKSBjb25zdDsKICAgICBkb3VibGUgcHJlZmVycmVkQXVkaW9CdWZmZXJTaXpl
KCkgY29uc3Q7CisgICAgZG91YmxlIGN1cnJlbnRBdWRpb0J1ZmZlclNpemUoKSBjb25zdDsKICAg
ICBib29sIGF1ZGlvU2Vzc2lvbkFjdGl2ZSgpIGNvbnN0OwogCiAgICAgdm9pZCBzdG9yZVJlZ2lz
dHJhdGlvbnNPbkRpc2soRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDBlMDE0YjgwZjI3M2VjZDg1MDMwYWRkODU4MTZkYmZl
YWIzNjkwYzcuLjExOWFmZjQyYzI4OWYyMmQzMTVjOGNiOTY1YTk3YjgwNzQwYWQ5ZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTg5Myw2ICs4OTMsNyBAQCBlbnVtIFRy
ZWVUeXBlIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBzdXBwb3J0c0F1ZGlvU2Vz
c2lvbjsKICAgICBET01TdHJpbmcgYXVkaW9TZXNzaW9uQ2F0ZWdvcnkoKTsKICAgICBkb3VibGUg
cHJlZmVycmVkQXVkaW9CdWZmZXJTaXplKCk7CisgICAgZG91YmxlIGN1cnJlbnRBdWRpb0J1ZmZl
clNpemUoKTsKICAgICBib29sZWFuIGF1ZGlvU2Vzc2lvbkFjdGl2ZSgpOwogCiAgICAgW0NvbmRp
dGlvbmFsPVNFUlZJQ0VfV09SS0VSXSBQcm9taXNlPGJvb2xlYW4+IGhhc1NlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb24oRE9NU3RyaW5nIHNjb3BlVVJMKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAzZTVkMTNiZTBiNmY5MGFiNmEzZGViMjYwNjE0
MWE5YzA2NWI2ZjM3Li44NzczMGZhMmRhYjFjNzYwYWY2MmU5MTM0MjAxOTExMjZhMjIwZjExIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjQgQEAKKzIwMjEtMDUtMTkgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5j
b20+CisKKyAgICAgICAgW0NvY29hXSBVcGRhdGUgQXVkaW9TZXNzaW9uIGJ1ZmZlciBzaXplIGhh
bmRsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjU5MjcKKyAgICAgICAgcmRhcjovLzc2OTIwMzc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0L2F1ZGlvLWJ1ZmZlci1zaXplLmh0bWw6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXVkaW9CdWZmZXJTaXplLm1tOiBBZGRlZC4KKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OndhaXRGb3JCdWZmZXJTaXplQ2hhbmdlKToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1QpOgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9QcmVmZXJyZWRBdWRpb0J1ZmZlclNpemUubW06CisgICAgICAgIChURVNUX0YpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvYXVkaW8td2l0aC13ZWIt
YXVkaW8uaHRtbDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3Zp
ZGVvLXdpdGgtYXVkaW8tYW5kLXdlYi1hdWRpby5odG1sOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1ZGlvLW9ubHkuaHRtbDoKKwogMjAyMS0wNS0xOCAg
Sm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgW3dlYmtpdHB5
XSBGb3J3YXJkIGJvb3RlZCBzaW11bGF0b3JzIHRvIGNoaWxkcmVuIHByb2Nlc3NlcwpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCAyZTdmYTQ0NTQ4NzYwYWFlZjk0Y2FjYTNmODIwZDIyYmM4NDlk
ZWY1Li45NTc5ZTAyNjcwMzZlZjMyNGZlMTRlNDI2Mzk5ZjdkYTg5MzIxNGY4IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtNDgsNiArNDgsOCBAQAogCQkwNDFBMUUzNDIxNkZGREJDMDA3ODlF
MEEgLyogUHVibGljU3VmZml4LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA0MUExRTMzMjE2RkZEQkMwMDc4OUUwQSAvKiBQdWJsaWNTdWZmaXguY3Bw
ICovOyB9OwogCQkwNERCMjM5NjIzNUU0M0VDMDAzMjhGMTcgLyogQnVtcFBvaW50ZXJBbGxvY2F0
b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDQ1
MUE1QTYyMzVFNDM4RTAwOURGOTQ1IC8qIEJ1bXBQb2ludGVyQWxsb2NhdG9yLmNwcCAqLzsgfTsK
IAkJMDcxMURGNTIyMjZBOTVGQzAwM0REMkY3IC8qIEFWRm91bmRhdGlvblNvZnRMaW5rVGVzdC5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MTFERjUx
MjI2QTk1RkIwMDNERDJGNyAvKiBBVkZvdW5kYXRpb25Tb2Z0TGlua1Rlc3QubW0gKi87IH07CisJ
CTA3MTM3MDRBMjY1MzIwRTUwMENBMkM5QSAvKiBBdWRpb0J1ZmZlclNpemUubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzEzNzA0OTI2NTMyMEU1MDBD
QTJDOUEgLyogQXVkaW9CdWZmZXJTaXplLm1tICovOyB9OworCQkwNzEzNzA1NTI2NTMyRTM5MDBD
QTJDOUEgLyogYXVkaW8tYnVmZmVyLXNpemUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzEzNzA1NDI2NTMyRTM5MDBDQTJDOUEgLyog
YXVkaW8tYnVmZmVyLXNpemUuaHRtbCAqLzsgfTsKIAkJMDc0OTJCM0IxREY4QjE0QzAwNjMzREUx
IC8qIEVudW1lcmF0ZU1lZGlhRGV2aWNlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwNzQ5MkIzQTFERjhBRTJEMDA2MzNERTEgLyogRW51bWVyYXRl
TWVkaWFEZXZpY2VzLmNwcCAqLzsgfTsKIAkJMDc0OTJCM0MxREY4Qjg2NjAwNjMzREUxIC8qIGVu
dW1lcmF0ZU1lZGlhRGV2aWNlcy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NDkyQjM5MURGOEFEQTQwMDYzM0RFMSAvKiBlbnVtZXJh
dGVNZWRpYURldmljZXMuaHRtbCAqLzsgfTsKIAkJMDc0OTk0NDIxRUE1MDM0QjAwMERBNDRFIC8q
IGdldFVzZXJNZWRpYS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDRBNDEwRjREMTlBRjdCRUYwMDJFQkFCNSAvKiBnZXRVc2VyTWVkaWEu
aHRtbCAqLzsgfTsKQEAgLTEzNzYsNiArMTM3OCw3IEBACiAJCQkJRjQyQkQ3RDkyNDVDQzUwODAw
MUUyMDdBIC8qIGF0dHJpYnV0ZWRTdHJpbmdOZXdsaW5lQXRFbmRPZkRvY3VtZW50Lmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8sCiAJCQkJN0M5RUQ5OEIxN0ExOUY0QjAwRTREQzMzIC8qIGF0dHJp
YnV0ZWRTdHJpbmdTdHJpa2V0aHJvdWdoLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJ
MzcxMzdFNEIyMTEyNEQwMTAwMkJFRUE0IC8qIEF0dHJTdHlsZS5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovLAorCQkJCTA3MTM3MDU1MjY1MzJFMzkwMENBMkM5QSAvKiBhdWRpby1idWZmZXItc2l6
ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTQ2RjAzQzFDMjU1QjJENUEwMEFBNTFD
NSAvKiBhdWRpby1jb250ZXh0LXBsYXlpbmcuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJ
CQlDRDlFMjkyRTFDOTBDMzNGMDAwQkI4MDAgLyogYXVkaW8tb25seS5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovLAogCQkJCUM5NDQxNjAwMjE0MzBFODkwMEIxRUREQSAvKiBhdWRpby13aXRoLWNv
bnRyb2xzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC0xNzc0LDYgKzE3NzcsOCBAQAog
CQkwNDFBMUUzMzIxNkZGREJDMDA3ODlFMEEgLyogUHVibGljU3VmZml4LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFB1YmxpY1N1ZmZpeC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTA0NTFBNUE2MjM1RTQzOEUwMDlERjk0NSAvKiBCdW1wUG9pbnRl
ckFsbG9jYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCdW1w
UG9pbnRlckFsbG9jYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MTFE
RjUxMjI2QTk1RkIwMDNERDJGNyAvKiBBVkZvdW5kYXRpb25Tb2Z0TGlua1Rlc3QubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBVkZvdW5kYXRpb25Tb2Z0TGlua1Rl
c3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MTM3MDQ5MjY1MzIwRTUwMENB
MkM5QSAvKiBBdWRpb0J1ZmZlclNpemUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBBdWRpb0J1ZmZlclNpemUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTA3MTM3MDU0MjY1MzJFMzkwMENBMkM5QSAvKiBhdWRpby1idWZmZXItc2l6ZS5odG1sICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1s
OyBuYW1lID0gImF1ZGlvLWJ1ZmZlci1zaXplLmh0bWwiOyBwYXRoID0gIlRlc3RzL1dlYktpdC9h
dWRpby1idWZmZXItc2l6ZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc0
NjY0NTcyMkZGNjJEMDAwRTM0NTFBIC8qIEFjY2Vzc2liaWxpdHlUZXN0U3VwcG9ydFByb3RvY29s
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlUZXN0U3VwcG9ydFByb3RvY29sLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NDY2NDU4MjJGRjYzMDUwMEUzNDUxQSAvKiBB
Y2Nlc3NpYmlsaXR5VGVzdFBsdWdpbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFjY2Vzc2li
aWxpdHlUZXN0UGx1Z2luLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzQ5MkIz
OTFERjhBREE0MDA2MzNERTEgLyogZW51bWVyYXRlTWVkaWFEZXZpY2VzLmh0bWwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0Lmh0bWw7IHBhdGggPSBlbnVtZXJhdGVNZWRpYURldmljZXMuaHRtbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMxOTEsNiArMzE5Niw3IEBACiAJCTA4RkI3Nzk0RkU4NDE1
NURDMDJBQUMwNyAvKiBUZXN0V2ViS2l0QVBJICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQkwNzEzNzA1NDI2NTMyRTM5MDBDQTJDOUEgLyogYXVkaW8tYnVm
ZmVyLXNpemUuaHRtbCAqLywKIAkJCQk0OUFFRUY2ODI0MDcyNzZGMDBDODdFNEMgLyogSW5mby5w
bGlzdCAqLywKIAkJCQk1QzlEOTIyNjIyRDdERDdCMDA4RTkyNjYgLyogRGVyaXZlZCBTb3VyY2Vz
ICovLAogCQkJCTVDOUQ5MjFEMjJEN0RCRjcwMDhFOTI2NiAvKiBTb3VyY2VzLnR4dCAqLywKQEAg
LTMzNTksNiArMzM2NSw3IEBACiAJCQkJNTFCNDBEOUQyM0FDOTYwRTAwRTA1MjQxIC8qIEFzeW5j
RnVuY3Rpb24ubW0gKi8sCiAJCQkJODM0MTM4QzYyMDMyNjFCOTAwRjI2OTYwIC8qIEFzeW5jUG9s
aWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlLm1tICovLAogCQkJCTM3NjBDNEYwMjExMjQ5QUYwMDIz
M0FDQyAvKiBBdHRyU3R5bGUubW0gKi8sCisJCQkJMDcxMzcwNDkyNjUzMjBFNTAwQ0EyQzlBIC8q
IEF1ZGlvQnVmZmVyU2l6ZS5tbSAqLywKIAkJCQlDREVEMzQyRTI0OURERDlEMDAwMkFFN0EgLyog
QXVkaW9Sb3V0aW5nQXJiaXRyYXRpb24ubW0gKi8sCiAJCQkJNzU0Q0VDODAxRjY3MjJEQzAwRDAw
MzlBIC8qIEF1dG9GaWxsQXZhaWxhYmxlLm1tICovLAogCQkJCTJERDM1NTM1MUJEMDgzNzgwMDVE
RjRBNyAvKiBBdXRvTGF5b3V0SW50ZWdyYXRpb24ubW0gKi8sCkBAIC01Mjk4LDYgKzUzMDUsNyBA
QAogCQkJCTdDQ0U3RUI0MUE0MTFBN0UwMDQ0N0M0QyAvKiBBdHRyaWJ1dGVkU3RyaW5nLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRjRGQTJBNEYyNEQxRjA1NzAwNjE4QTQ2IC8qIEF0dHJpYnV0ZWRT
dWJzdHJpbmdGb3JQcm9wb3NlZFJhbmdlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzc2MEM0RjEy
MTEyNDlBRjAwMjMzQUNDIC8qIEF0dHJTdHlsZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTA3MTM3
MDRBMjY1MzIwRTUwMENBMkM5QSAvKiBBdWRpb0J1ZmZlclNpemUubW0gaW4gU291cmNlcyAqLywK
IAkJCQlDREVEMzQyRjI0OURERTBFMDAwMkFFN0EgLyogQXVkaW9Sb3V0aW5nQXJiaXRyYXRpb24u
bW0gaW4gU291cmNlcyAqLywKIAkJCQlDREM4RTQ4RDFCQzVDQjQ1MDA1OTRGRUMgLyogQXVkaW9T
ZXNzaW9uQ2F0ZWdvcnlJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNDJENjM0NDIyQTE3MjlG
MDBEMkZCM0EgLyogQXV0b2NvcnJlY3Rpb25UZXN0c0lPUy5tbSBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvYXVkaW8tYnVmZmVyLXNp
emUuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L2F1ZGlvLWJ1ZmZlci1z
aXplLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNTQwNTcwMzQ3NDRiMmE3ZDJjMTQ0Yzg4ZTY0MjA1NGYyMDRl
YjBiZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
L2F1ZGlvLWJ1ZmZlci1zaXplLmh0bWwKQEAgLTAsMCArMSw4MSBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHNjcmlwdD4KKworbGV0IGNvbnRleHQ7Cits
ZXQgb3NjaWxsYXRvcjsKK2xldCBzdHJlYW07CitsZXQgZ2FpbjsKKworZnVuY3Rpb24gc2VuZE1l
c3NhZ2UobWVzc2FnZSkKK3sKKyAgICB0cnkgeworICAgICAgICBpZiAod2luZG93LndlYmtpdCkK
KyAgICAgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBv
c3RNZXNzYWdlKG1lc3NhZ2UpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb25zb2xlLmxv
ZyhgTUVTU0FHRSAtICR7bWVzc2FnZX1gKTsKKyAgICB9IGNhdGNoKGVycikgeworICAgICAgICBj
b25zb2xlLmxvZyhgZmFpbGVkIHRvIHNlbmQgbWVzc2FnZSAke21lc3NhZ2V9OiAke2Vycn1gKTsK
KyAgICB9Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZVdlYkF1ZGlvTm9kZSgpCit7CisgICAgY29udGV4
dCA9IG5ldyBBdWRpb0NvbnRleHQoKTsKKworICAgIGdhaW4gPSBuZXcgR2Fpbk5vZGUoY29udGV4
dCwge2dhaW46IDAuMDV9KTsKKyAgICBnYWluLmNvbm5lY3QoY29udGV4dC5kZXN0aW5hdGlvbik7
CisKKyAgICBvc2NpbGxhdG9yID0gbmV3IE9zY2lsbGF0b3JOb2RlKGNvbnRleHQpOworICAgIG9z
Y2lsbGF0b3IuY29ubmVjdChnYWluKTsKKyAgICBvc2NpbGxhdG9yLnN0YXJ0KCk7Cit9CisKK2Z1
bmN0aW9uIGRpc2Nvbm5lY3RXZWJBdWRpb05vZGUoKQoreworICAgIG9zY2lsbGF0b3Iuc3RvcCgp
OworICAgIG9zY2lsbGF0b3IuZGlzY29ubmVjdCgpOworICAgIGdhaW4uZGlzY29ubmVjdCgpOwor
ICAgIGNvbnRleHQuY2xvc2UoKTsKK30KKworYXN5bmMgZnVuY3Rpb24gc3RhcnRDYXB0dXJlKCkK
K3sKKyAgICBzdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRp
YSh7IHZpZGVvOiB0cnVlLCBhdWRpbzogeyB2b2x1bWU6IDAuMDUgfSB9KTsKK30KKworZnVuY3Rp
b24gc3RvcENhcHR1cmUoKQoreworICAgIHN0cmVhbS5nZXRUcmFja3MoKS5mb3JFYWNoKHRyYWNr
ID0+IHRyYWNrLnN0b3AoKSk7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHBsYXlWaWRlbygpIAorewor
ICAgIGxldCB2aWRlbyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd2aWRlbycpWzBd
OworICAgIHZpZGVvLnNyYyA9ICd0ZXN0LW1zZS5tcDQnOworICAgIHZpZGVvLnZvbHVtZSA9IDAu
MDU7CisgICAgYXdhaXQgdmlkZW8ucGxheSgpOworICAgIHNlbmRNZXNzYWdlKCdwbGF5aW5nJyk7
Cit9CisKK2Z1bmN0aW9uIHBhdXNlVmlkZW8oKSAKK3sKKyAgICB2aWRlbyA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCd2aWRlbycpWzBdLnBhdXNlKCk7Cit9CisgICAgICAgIDwvc2Ny
aXB0PgorICAgIDxoZWFkPgorCisgICAgPGJvZHk+CisgICAgICAgIDx2aWRlbyBjb250cm9scz48
L3ZpZGVvPgorICAgICAgICA8YnI+CisgICAgICAgIDxidXR0b24gb25jbGljaz0iY3JlYXRlV2Vi
QXVkaW9Ob2RlKCkiPkNyZWF0ZSBBdWRpbyBOb2RlPC9idXR0b24+CisgICAgICAgIDxidXR0b24g
b25jbGljaz0iZGlzY29ubmVjdFdlYkF1ZGlvTm9kZSgpIj5EaXNjb25uZWN0IEF1ZGlvIE5vZGU8
L2J1dHRvbj4KKyAgICAgICAgPGJyPgorICAgICAgICA8YnV0dG9uIG9uY2xpY2s9InN0YXJ0Q2Fw
dHVyZSgpIj5TdGFydCBDYXB0dXJlPC9idXR0b24+CisgICAgICAgIDxidXR0b24gb25jbGljaz0i
c3RvcENhcHR1cmUoKSI+U3RvcCBDYXB0dXJlPC9idXR0b24+CisgICAgICAgIDxicj4KKyAgICAg
ICAgPGJ1dHRvbiBvbmNsaWNrPSJwbGF5VmlkZW8oKSI+UGxheSAmbHQ7dmlkZW8mZ3Q7PC9idXR0
b24+CisgICAgICAgIDxidXR0b24gb25jbGljaz0icGF1c2VWaWRlbygpIj5QYXVzZSAmbHQ7dmlk
ZW8mZ3Q7PC9idXR0b24+CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BdWRpb0J1ZmZlclNpemUubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0F1ZGlvQnVmZmVyU2l6ZS5tbQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jZTVjZDRhZDJmZjJmNmFjMmIyZTQ0NTJkMGJiZmI5Y2U1OWY3YTlmCi0tLSAvZGV2
L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BdWRpb0J1
ZmZlclNpemUubW0KQEAgLTAsMCArMSwxMTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKworI2lmIFdLX0hBVkVfQ19TUEkKKworI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMu
aCIKKyNpbXBvcnQgIlRlc3QuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQg
IlVzZXJNZWRpYUNhcHR1cmVVSURlbGVnYXRlLmgiCisjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJl
bmNlc1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uLmg+
CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaD4KKyNpbXBv
cnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisKKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIu
aD4KKyNpbXBvcnQgPHd0Zi9TZWNvbmRzLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsK
KworZG91YmxlIHdhaXRGb3JCdWZmZXJTaXplQ2hhbmdlKFdLV2ViVmlldyogd2ViVmlldywgZG91
YmxlIG9sZFNpemUpCit7CisgICAgaW50IHRyaWVzID0gMDsKKyAgICBkbyB7CisgICAgICAgIGF1
dG8gc2l6ZSA9IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ3aW5kb3cu
aW50ZXJuYWxzLmN1cnJlbnRBdWRpb0J1ZmZlclNpemUoKSJdLmRvdWJsZVZhbHVlOworICAgICAg
ICBpZiAoc2l6ZSAhPSBvbGRTaXplKQorICAgICAgICAgICAgcmV0dXJuIHNpemU7CisKKyAgICAg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c2xlZXAoMC4xKTsKKyAgICB9IHdoaWxlICgrK3RyaWVz
IDw9IDEwMCk7CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30K
KworVEVTVChXZWJLaXQsIEF1ZGlvQnVmZmVyU2l6ZSkKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAg
IGF1dG8gY29udGV4dCA9IGFkb3B0V0soVGVzdFdlYktpdEFQSTo6VXRpbDo6Y3JlYXRlQ29udGV4
dEZvckluamVjdGVkQnVuZGxlVGVzdCgiSW50ZXJuYWxzSW5qZWN0ZWRCdW5kbGVUZXN0IikpOwor
CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkuYWxsb3dzSW5saW5l
TWVkaWFQbGF5YmFjayA9IFlFUzsKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLl9pbmxpbmVNZWRp
YVBsYXliYWNrUmVxdWlyZXNQbGF5c0lubGluZUF0dHJpYnV0ZSA9IE5POworI2VuZGlmCisgICAg
Y29uZmlndXJhdGlvbi5nZXQoKS5fbWVkaWFEYXRhTG9hZHNBdXRvbWF0aWNhbGx5ID0gWUVTOwor
ICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkubWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQ
bGF5YmFjayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOworICAgIGNvbmZpZ3VyYXRpb24u
Z2V0KCkucHJvY2Vzc1Bvb2wgPSAoV0tQcm9jZXNzUG9vbCAqKWNvbnRleHQuZ2V0KCk7CisgICAg
Y29uZmlndXJhdGlvbi5nZXQoKS5fbWVkaWFDYXB0dXJlRW5hYmxlZCA9IFlFUzsKKyAgICBhdXRv
IHByZWZlcmVuY2VzID0gW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdOworICAgIHByZWZlcmVu
Y2VzLl9tZWRpYUNhcHR1cmVSZXF1aXJlc1NlY3VyZUNvbm5lY3Rpb24gPSBOTzsKKyAgICBwcmVm
ZXJlbmNlcy5fbW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCA9IFlFUzsKKworICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgMzAwLCAzMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBh
ZGRUb1dpbmRvdzpZRVNdKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1VzZXJNZWRp
YUNhcHR1cmVVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgd2ViVmlldy5nZXQoKS5VSURl
bGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9h
ZFRlc3RQYWdlTmFtZWQ6QCJhdWRpby1idWZmZXItc2l6ZSJdOworCisgICAgX19ibG9jayBib29s
IGdvdE1lc3NhZ2UgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBwZXJmb3JtQWZ0ZXJSZWNlaXZpbmdN
ZXNzYWdlOkAicGxheWluZyIgYWN0aW9uOl57IGdvdE1lc3NhZ2UgPSB0cnVlOyB9XTsKKyAgICBb
d2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJwbGF5VmlkZW8oKSIgY29tcGxldGlvbkhhbmRs
ZXI6bmlsXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdvdE1lc3NhZ2UpOworICAg
IGF1dG8gYnVmZmVyU2l6ZVBsYXlpbmdBdWRpbyA9IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6QCJ3aW5kb3cuaW50ZXJuYWxzLmN1cnJlbnRBdWRpb0J1ZmZlclNpemUoKSJd
LmRvdWJsZVZhbHVlOworCisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAic3RhcnRD
YXB0dXJlKCkiIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CisgICAgW2RlbGVnYXRlIHdhaXRVbnRp
bFByb21wdGVkXTsKKyAgICBhdXRvIGJ1ZmZlclNpemVDYXB0dXJpbmdBdWRpbyA9IHdhaXRGb3JC
dWZmZXJTaXplQ2hhbmdlKHdlYlZpZXcuZ2V0KCksIGJ1ZmZlclNpemVQbGF5aW5nQXVkaW8pOwor
ICAgIEFTU0VSVF9MVChidWZmZXJTaXplQ2FwdHVyaW5nQXVkaW8sIGJ1ZmZlclNpemVQbGF5aW5n
QXVkaW8pOworCisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAiY3JlYXRlV2ViQXVk
aW9Ob2RlKCkiIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CisgICAgYXV0byBidWZmZXJTaXplV2l0
aFdlYkF1ZGlvID0gd2FpdEZvckJ1ZmZlclNpemVDaGFuZ2Uod2ViVmlldy5nZXQoKSwgYnVmZmVy
U2l6ZUNhcHR1cmluZ0F1ZGlvKTsKKyAgICBBU1NFUlRfTFQoYnVmZmVyU2l6ZVdpdGhXZWJBdWRp
bywgYnVmZmVyU2l6ZUNhcHR1cmluZ0F1ZGlvKTsKKworICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2
YVNjcmlwdDpAImRpc2Nvbm5lY3RXZWJBdWRpb05vZGUoKSIgY29tcGxldGlvbkhhbmRsZXI6bmls
XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdvdE1lc3NhZ2UpOworICAgIGF1dG8g
YnVmZmVyU2l6ZVdpdGhvdXRXZWJBdWRpbyA9IHdhaXRGb3JCdWZmZXJTaXplQ2hhbmdlKHdlYlZp
ZXcuZ2V0KCksIGJ1ZmZlclNpemVXaXRoV2ViQXVkaW8pOworICAgIEFTU0VSVF9HVChidWZmZXJT
aXplV2l0aG91dFdlYkF1ZGlvLCBidWZmZXJTaXplV2l0aFdlYkF1ZGlvKTsKKyAgICBBU1NFUlRf
RVEoYnVmZmVyU2l6ZVdpdGhvdXRXZWJBdWRpbywgYnVmZmVyU2l6ZUNhcHR1cmluZ0F1ZGlvKTsK
KworICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAInN0b3BDYXB0dXJlKCkiIGNvbXBs
ZXRpb25IYW5kbGVyOm5pbF07CisgICAgYXV0byBidWZmZXJTaXplV2l0aG91dENhcHR1cmUgPSB3
YWl0Rm9yQnVmZmVyU2l6ZUNoYW5nZSh3ZWJWaWV3LmdldCgpLCBidWZmZXJTaXplV2l0aG91dFdl
YkF1ZGlvKTsKKyAgICBBU1NFUlRfR1QoYnVmZmVyU2l6ZVdpdGhvdXRDYXB0dXJlLCBidWZmZXJT
aXplV2l0aG91dFdlYkF1ZGlvKTsKKyAgICBBU1NFUlRfRVEoYnVmZmVyU2l6ZVdpdGhvdXRDYXB0
dXJlLCBidWZmZXJTaXplUGxheWluZ0F1ZGlvKTsKKworICAgIFt3ZWJWaWV3IHJlbW92ZUZyb21T
dXBlcnZpZXddOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCisKKyNlbmRpZiAv
LyBXS19IQVZFX0NfU1BJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1ByZWZlcnJlZEF1ZGlvQnVmZmVyU2l6ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJlZmVycmVkQXVkaW9CdWZmZXJTaXplLm1tCmluZGV4IGM2
NDU5NTAzZDM4NDdiM2NjNjFkNzZjYTY4OWNkNGEzMDIwZDEwZjYuLmU1ZmIwZmI3MjIwMzcwYjdk
YTMxNDAyYjY0NWQxNmU5ZDM3MmJjNWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvUHJlZmVycmVkQXVkaW9CdWZmZXJTaXplLm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJlZmVycmVkQXVkaW9CdWZmZXJTaXpl
Lm1tCkBAIC05MSw3ICs5MSw3IEBAIFRFU1RfRihQcmVmZXJyZWRBdWRpb0J1ZmZlclNpemUsIFdl
YkF1ZGlvKQogCiBURVNUX0YoUHJlZmVycmVkQXVkaW9CdWZmZXJTaXplLCBWaWRlb09ubHkpCiB7
Ci0gICAgcnVuUGxheWluZ1Rlc3RXaXRoUGFnZU5hbWVkKEAidmlkZW8td2l0aG91dC1hdWRpbyIs
IDUxMik7CisgICAgcnVuUGxheWluZ1Rlc3RXaXRoUGFnZU5hbWVkKEAidmlkZW8td2l0aG91dC1h
dWRpbyIsIDQwOTYpOwogfQogCiBURVNUX0YoUHJlZmVycmVkQXVkaW9CdWZmZXJTaXplLCBWaWRl
b1dpdGhBdWRpbykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvYXVkaW8td2l0aC13ZWItYXVkaW8uaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvYXVkaW8td2l0aC13ZWItYXVkaW8uaHRtbAppbmRleCBjYTM4NWYyYjEx
ZWJmMDIzYWZlNTFkYzVhN2FjZDlhZDgzNDE3NjEwLi4xYWU0MzY4NjM4NmZiY2Y1NzI1YmZiNjRi
YTJhMGE4NjZmMjJlN2JiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL2F1ZGlvLXdpdGgtd2ViLWF1ZGlvLmh0bWwKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9hdWRpby13aXRoLXdlYi1hdWRpby5odG1sCkBAIC00LDgg
KzQsOSBAQAogICAgIDxzY3JpcHQ+CiAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCds
b2FkJywgYXN5bmMgZXZlbnQgPT4gewogICAgICAgICAgICAgbGV0IGNvbnRleHQgPSBuZXcgQXVk
aW9Db250ZXh0KCk7Ci0gICAgICAgICAgICBsZXQgbm9kZSA9IGNvbnRleHQuY3JlYXRlQnVmZmVy
U291cmNlKCk7CisgICAgICAgICAgICBsZXQgbm9kZSA9IG5ldyBPc2NpbGxhdG9yTm9kZShjb250
ZXh0KTsKICAgICAgICAgICAgIG5vZGUuY29ubmVjdChjb250ZXh0LmRlc3RpbmF0aW9uKTsKKyAg
ICAgICAgICAgIG5vZGUuc3RhcnQoKTsKIAogICAgICAgICAgICAgbGV0IGF1ZGlvID0gbmV3IEF1
ZGlvKCk7CiAgICAgICAgICAgICBhdWRpby5zcmMgPSAidmlkZW8td2l0aC1hdWRpby5tcDQiOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS92aWRlby13
aXRoLWF1ZGlvLWFuZC13ZWItYXVkaW8uaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvdmlkZW8td2l0aC1hdWRpby1hbmQtd2ViLWF1ZGlvLmh0bWwKaW5kZXggMWI0
M2I3MzczM2E1YzcyMTI0ZmU4Zjk0YTkzMDY2OTBjYTg0Yjg2YS4uOWRiZTA4NjEwMDc3MWIyMmQ5
MTNiYjQxMWExNDMyYzU3NGI2NDFkOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS92aWRlby13aXRoLWF1ZGlvLWFuZC13ZWItYXVkaW8uaHRtbAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3ZpZGVvLXdpdGgtYXVkaW8t
YW5kLXdlYi1hdWRpby5odG1sCkBAIC01LDggKzUsOSBAQAogICAgIDxzY3JpcHQ+CiAgICAgICAg
IHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZXZlbnQgPT4gewogICAgICAgICAgICAg
bGV0IGNvbnRleHQgPSBuZXcgQXVkaW9Db250ZXh0KCk7Ci0gICAgICAgICAgICBsZXQgbm9kZSA9
IGNvbnRleHQuY3JlYXRlQnVmZmVyU291cmNlKCk7CisgICAgICAgICAgICBsZXQgbm9kZSA9IG5l
dyBPc2NpbGxhdG9yTm9kZShjb250ZXh0KTsKICAgICAgICAgICAgIG5vZGUuY29ubmVjdChjb250
ZXh0LmRlc3RpbmF0aW9uKTsKKyAgICAgICAgICAgIG5vZGUuc3RhcnQoKTsKIAogICAgICAgICAg
ICAgbGV0IHZpZGVvID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigndmlkZW8nKTsKICAgICAgICAg
ICAgIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93
ZWItYXVkaW8tb25seS5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS93ZWItYXVkaW8tb25seS5odG1sCmluZGV4IDljYTU3M2FmMjQ1M2QyYmZkNDdkNTZjMDY4NjU2
N2NmMjg4YzE2YmUuLmY1MjNmZTFhNDU2NTY4MjY4ZTBiMzFlMGUwYmExNzM2YjJiN2ViNDMgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1ZGlv
LW9ubHkuaHRtbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dl
Yi1hdWRpby1vbmx5Lmh0bWwKQEAgLTUsOCArNSw5IEBACiAgICAgd2luZG93LmFkZEV2ZW50TGlz
dGVuZXIoJ2xvYWQnLCBhc3luYyBldmVudCA9PiB7CiAgICAgICAgIHZhciBjb250ZXh0ID0gbmV3
IEF1ZGlvQ29udGV4dCgpOwogICAgICAgICBjb250ZXh0LmFkZEV2ZW50TGlzdGVuZXIoJ3N0YXRl
Y2hhbmdlJywgc3RhdGVjaGFuZ2UpOwotICAgICAgICBub2RlID0gY29udGV4dC5jcmVhdGVCdWZm
ZXJTb3VyY2UoKTsKKyAgICAgICAgbGV0IG5vZGUgPSBuZXcgT3NjaWxsYXRvck5vZGUoY29udGV4
dCk7CiAgICAgICAgIG5vZGUuY29ubmVjdChjb250ZXh0LmRlc3RpbmF0aW9uKTsKKyAgICAgICAg
bm9kZS5zdGFydCgpOwogICAgICAgICBjb250ZXh0LnJlc3VtZSgpOwogICAgIH0pOwogICAgIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429233</attachid>
            <date>2021-05-20 15:41:54 -0700</date>
            <delta_ts>2021-05-21 16:06:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225927-20210520154153.patch</filename>
            <type>text/plain</type>
            <size>25990</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3ODIwCjIwMjEtMDUtMjBUMTU6NDE6MTQsNDk0OiBbMHgx
MGJlYzVlMDBdIHdoaWxlIGNvbXB1dGluZyBzb2NrbmFtZTogZmFpbGVkIHRvIGNyZWF0ZSAvdXNy
L2xvY2FsL3Zhci9ydW4vd2F0Y2htYW4vZXJpYy1zdGF0ZTogTm8gc3VjaCBmaWxlIG9yIGRpcmVj
dG9yeQpXYXRjaG1hbjogY29tbWFuZCByZXR1cm5lZCBubyBvdXRwdXQuCkZhbGxpbmcgYmFjayB0
byBzY2FubmluZy4uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGZkNzljMzNlNjAwMzQwMTYwNzk0MDliOTVlMzEy
ZGJjYWNmOTYyYjEuLmQ1NmExODM4ZDExMWY0Y2I5ZTRiNzNlM2FkNWZlZDIxNzQ3ZWZhN2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAyMS0wNS0xOSAgRXJpYyBDYXJsc29uICA8ZXJp
Yy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwZGF0ZSBBdWRpb1Nlc3Np
b24gYnVmZmVyIHNpemUgaGFuZGxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNTkyNworICAgICAgICByZGFyOi8vNzY5MjAzNzUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcmV2aW91c2x5IHdlIG9u
bHkgc2V0IHRoZSBhdWRpbyBzZXNzaW9uIGJ1ZmZlciBzaXplIHdoZW4gdGhlcmUgd2FzIGFuIGFj
dGl2ZQorICAgICAgICBNZWRpYVNlc3Npb24uIFRoaXMgbWVhbnQgdGhhdCB3aGVuIG5vIGF1ZGlv
IHdhcyBiZWluZyBwbGF5ZWQgb3IgY2FwdHVyZWQsIHRoZSBidWZmZXIKKyAgICAgICAgc2l6ZSB3
b3VsZCBiZSBsZWZ0IGF0IHdoYXRldmVyIHNpemUgd2FzIGFwcHJvcHJpYXRlIGZvciB0aGUgbGFz
dCBNZWRpYVNlc3Npb24KKyAgICAgICAgc3RvcHBlZC4gVGhpcyB3YXMgZXNwZWNpYWxseSBiYWQg
d2hlbiB0aGUgbGFzdCBNZWRpYVNlc3Npb24gcGxheWVkIFdlYkF1ZGlvCisgICAgICAgIG9yIGNh
cHR1cmVkIGF1ZGlvIGJlY2F1c2UgdGhvc2UgcmVxdWlyZSBhIHNtYWxsZXIgYnVmZmVyIHNpemUg
dGhhbiB0aGUgZGVmYXVsdCwKKyAgICAgICAgYW5kIHdhcyBtYWRlIGV2ZW4gd29yc2Ugd2hlbiB1
c2luZyB0aGUgR1BVIHByb2Nlc3MgYmVjYXVzZSBpdCBtYXkgbGl2ZSBmb3IgbXVjaAorICAgICAg
ICBsb25nZXIgdGhhbiB0aGUgbGFzdCB3ZWIgcHJvY2VzcyB0aGF0IHBsYXllZCBhdWRpby4gRml4
IHRoaXMgYnkgdXNpbmcgdGhlIGxvdyBwb3dlcgorICAgICAgICBidWZmZXIgc2l6ZSB3aGVuIHBs
YXlpbmcgYXVkaW8gb3Igd2hlbiB0aGVyZSBpcyBubyBNZWRpYVNlc3Npb24gYXQgYWxsLgorICAg
ICAgICAKKyAgICAgICAgQWRkIEF1ZGlvQnVmZmVyU2l6ZSBBUEkgdGVzdC4KKworICAgICAgICAq
IE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0Lmg6CisgICAgICAgIE1ha2UgbWVkaWFUeXBl
KCkgcmV0dXJuIGBOb25lYCBpZiB0aGUgY29udGV4dCBpcyBzdXNwZW5kZWQgb3Igc3RvcHBlZCBz
byB0aGUgbWVkaWEKKyAgICAgICAgc2Vzc2lvbiBtYW5hZ2VyIHdvbid0IHNldCB0aGUgYnVmZmVy
IHNpemUgZm9yIFdlYkF1ZGlvLgorCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVk
aWFTZXNzaW9uTWFuYWdlckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2Ev
TWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNz
aW9uTWFuYWdlckNvY29hOjp1cGRhdGVTZXNzaW9uU3RhdGUpOiBBbHdheXMgdXNlICJsb3cgcG93
ZXIiCisgICAgICAgIGJ1ZmZlciBzaXplIHdoZW4gdGhlcmUgaXMgbm8gV2ViQXVkaW8gb3IgYXVk
aW8gY2FwdHVyZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6
YWRkU2Vzc2lvbik6IENhY2hlIHN1cHBvcnRlZCBoYXJkd2FyZSBidWZmZXIgc2l6ZXMuCisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OmF1ZGlvT3V0cHV0RGV2aWNl
Q2hhbmdlZCk6IFVwZGF0ZSBjYWNoZWQgYnVmZmVyCisgICAgICAgIHNpemVzLgorCisgICAgICAg
ICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpj
dXJyZW50QXVkaW9CdWZmZXJTaXplIGNvbnN0KTogRXhwb3NlIGN1cnJlbnQgYXVkaW8gc2Vzc2lv
biBidWZmZXIKKyAgICAgICAgc2l6ZSBmb3IgdGVzdGluZy4KKyAgICAgICAgKiB0ZXN0aW5nL0lu
dGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAyMS0wNS0y
MCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgSFRNTCBwYXJz
ZXIgc2hvdWxkIHlpZWxkIG1vcmUgYWdncmVzc2l2ZWx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAppbmRleCBlZWVjZTQ1MDhkZGM3YTJiZmJhMTBi
YzIwZGE4ODIwM2JiYzIyOTM0Li5hODhhOGM1ZDRmZWU3YjdiYWYzMzNiYTM5NmVkNGNlOWVkODNl
NDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0
LmgKQEAgLTEyMCw3ICsxMjAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFnZU11dGVkU3RhdGVE
aWRDaGFuZ2UoKSBmaW5hbDsKIAogICAgIC8vIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50Ci0g
ICAgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBtZWRpYVR5cGUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBpc1N1c3BlbmRlZCgpID8gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlw
ZTo6Tm9uZSA6IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGU6OldlYkF1ZGlvOyB9Cisg
ICAgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBtZWRpYVR5cGUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBpc1N1c3BlbmRlZCgpIHx8IGlzU3RvcHBlZCgpID8gUGxhdGZvcm1NZWRpYVNl
c3Npb246Ok1lZGlhVHlwZTo6Tm9uZSA6IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGU6
OldlYkF1ZGlvOyB9CiAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBwcmVzZW50
YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1l
ZGlhVHlwZTo6V2ViQXVkaW87IH0KICAgICB2b2lkIG1heVJlc3VtZVBsYXliYWNrKGJvb2wgc2hv
dWxkUmVzdW1lKSBmaW5hbDsKICAgICB2b2lkIHN1c3BlbmRQbGF5YmFjaygpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9u
TWFuYWdlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRp
YVNlc3Npb25NYW5hZ2VyQ29jb2EuaAppbmRleCBlYjFmNjFjYjQ1NDY2NzhlNDczY2FhMzA2ZTc3
ZmUxM2JmN2RmYTkxLi40MjU4NzU3Nzk0MWJjNDg5MGNkNzQ3NGQwYmJkYTM3N2VlNGFiZDU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Np
b25NYW5hZ2VyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2Nv
YS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EuaApAQCAtMTE3LDYgKzExNyw5IEBAIHByaXZhdGU6
CiAKICAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8Tm93UGxheWluZ01hbmFnZXI+IG1fbm93UGxh
eWluZ01hbmFnZXI7CiAgICAgUmVmUHRyPEF1ZGlvSGFyZHdhcmVMaXN0ZW5lcj4gbV9hdWRpb0hh
cmR3YXJlTGlzdGVuZXI7CisKKyAgICBBdWRpb0hhcmR3YXJlTGlzdGVuZXI6OkJ1ZmZlclNpemVS
YW5nZSBtX3N1cHBvcnRlZEF1ZGlvSGFyZHdhcmVCdWZmZXJTaXplczsKKyAgICBzaXplX3QgbV9k
ZWZhdWx0QnVmZmVyU2l6ZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQpp
bmRleCA5NzhmZTFlMjcxZDJmZjI4MWFlZTkzZDdkMGJlNTA0YWJmOWMxNDU2Li5jMmI2YzA0ZDFm
NDIwZTY2OTYxODcwMzY1OTMxZmYwMDQ5MDgyZTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNv
Y29hLm1tCkBAIC01OCw2ICs1OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXI+IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y3JlYXRlCiAKIE1lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYTo6TWVkaWFTZXNzaW9uTWFuYWdlckNvY29hKCkKICAgICA6IG1f
bm93UGxheWluZ01hbmFnZXIocGxhdGZvcm1TdHJhdGVnaWVzKCktPm1lZGlhU3RyYXRlZ3koKS5j
cmVhdGVOb3dQbGF5aW5nTWFuYWdlcigpKQorICAgICwgbV9kZWZhdWx0QnVmZmVyU2l6ZShBdWRp
b1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS5wcmVmZXJyZWRCdWZmZXJTaXplKCkpCiB7CiAgICAg
ZW5zdXJlQ29kZWNzUmVnaXN0ZXJlZCgpOwogfQpAQCAtMTAxLDcgKzEwMiw4IEBAIHZvaWQgTWVk
aWFTZXNzaW9uTWFuYWdlckNvY29hOjp1cGRhdGVTZXNzaW9uU3RhdGUoKQogICAgICAgICAgICAg
KythdWRpb0NvdW50OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGxhdGZvcm1N
ZWRpYVNlc3Npb246Ok1lZGlhVHlwZTo6V2ViQXVkaW86Ci0gICAgICAgICAgICArK3dlYkF1ZGlv
Q291bnQ7CisgICAgICAgICAgICBpZiAoc2Vzc2lvbi5jYW5Qcm9kdWNlQXVkaW8oKSkKKyAgICAg
ICAgICAgICAgICArK3dlYkF1ZGlvQ291bnQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogCkBAIC0xMjAsMjEgKzEyMiwxNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6
dXBkYXRlU2Vzc2lvblN0YXRlKCkKICAgICAgICAgIlZpZGVvQXVkaW8oIiwgdmlkZW9BdWRpb0Nv
dW50LCAiKSwgIgogICAgICAgICAiV2ViQXVkaW8oIiwgd2ViQXVkaW9Db3VudCwgIikiKTsKIAor
ICAgIHNpemVfdCBidWZmZXJTaXplID0gbV9kZWZhdWx0QnVmZmVyU2l6ZTsKICAgICBpZiAod2Vi
QXVkaW9Db3VudCkKLSAgICAgICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuc2V0UHJl
ZmVycmVkQnVmZmVyU2l6ZShBdWRpb1V0aWxpdGllczo6cmVuZGVyUXVhbnR1bVNpemUpOwotICAg
IC8vIEluIGNhc2Ugb2YgYXVkaW8gY2FwdHVyZSwgd2Ugd2FudCB0byBncmFiIDIwIG1zIGNodW5r
cyB0byBsaW1pdCB0aGUgbGF0ZW5jeSBzbyB0aGF0IGl0IGlzIG5vdCBub3RpY2VhYmxlIGJ5IHVz
ZXJzCi0gICAgLy8gd2hpbGUgaGF2aW5nIGEgbGFyZ2UgZW5vdWdoIGJ1ZmZlciBzbyB0aGF0IHRo
ZSBhdWRpbyByZW5kZXJpbmcgcmVtYWlucyBzdGFibGUsIGhlbmNlIGEgY29tcHV0YXRpb24gYmFz
ZWQgb24gc2FtcGxlIHJhdGUuCi0gICAgZWxzZSBpZiAoY2FwdHVyZUNvdW50KQotICAgICAgICBB
dWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS5zZXRQcmVmZXJyZWRCdWZmZXJTaXplKEF1ZGlv
U2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLnNhbXBsZVJhdGUoKSAvIDUwKTsKLSAgICBlbHNlIGlm
ICgodmlkZW9BdWRpb0NvdW50IHx8IGF1ZGlvQ291bnQpICYmIERlcHJlY2F0ZWRHbG9iYWxTZXR0
aW5nczo6bG93UG93ZXJWaWRlb0F1ZGlvQnVmZmVyU2l6ZUVuYWJsZWQoKSkgewotICAgICAgICBz
aXplX3QgYnVmZmVyU2l6ZTsKLSAgICAgICAgaWYgKG1fYXVkaW9IYXJkd2FyZUxpc3RlbmVyICYm
IG1fYXVkaW9IYXJkd2FyZUxpc3RlbmVyLT5zdXBwb3J0ZWRCdWZmZXJTaXplcygpKQotICAgICAg
ICAgICAgYnVmZmVyU2l6ZSA9IG1fYXVkaW9IYXJkd2FyZUxpc3RlbmVyLT5zdXBwb3J0ZWRCdWZm
ZXJTaXplcygpLm5lYXJlc3Qoa0xvd1Bvd2VyVmlkZW9CdWZmZXJTaXplKTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgYnVmZmVyU2l6ZSA9IEF1ZGlvVXRpbGl0aWVzOjpyZW5kZXJRdWFudHVt
U2l6ZTsKLQotICAgICAgICBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS5zZXRQcmVmZXJy
ZWRCdWZmZXJTaXplKGJ1ZmZlclNpemUpOwotICAgIH0KKyAgICAgICAgYnVmZmVyU2l6ZSA9IEF1
ZGlvVXRpbGl0aWVzOjpyZW5kZXJRdWFudHVtU2l6ZTsKKyAgICBlbHNlIGlmIChjYXB0dXJlQ291
bnQpIHsKKyAgICAgICAgLy8gSW4gY2FzZSBvZiBhdWRpbyBjYXB0dXJlLCB3ZSB3YW50IHRvIGdy
YWIgMjAgbXMgY2h1bmtzIHRvIGxpbWl0IHRoZSBsYXRlbmN5IHNvIHRoYXQgaXQgaXMgbm90IG5v
dGljZWFibGUgYnkgdXNlcnMKKyAgICAgICAgLy8gd2hpbGUgaGF2aW5nIGEgbGFyZ2UgZW5vdWdo
IGJ1ZmZlciBzbyB0aGF0IHRoZSBhdWRpbyByZW5kZXJpbmcgcmVtYWlucyBzdGFibGUsIGhlbmNl
IGEgY29tcHV0YXRpb24gYmFzZWQgb24gc2FtcGxlIHJhdGUuCisgICAgICAgIGJ1ZmZlclNpemUg
PSBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS5zYW1wbGVSYXRlKCkgLyA1MDsKKyAgICB9
IGVsc2UgaWYgKG1fc3VwcG9ydGVkQXVkaW9IYXJkd2FyZUJ1ZmZlclNpemVzICYmIERlcHJlY2F0
ZWRHbG9iYWxTZXR0aW5nczo6bG93UG93ZXJWaWRlb0F1ZGlvQnVmZmVyU2l6ZUVuYWJsZWQoKSkK
KyAgICAgICAgYnVmZmVyU2l6ZSA9IG1fc3VwcG9ydGVkQXVkaW9IYXJkd2FyZUJ1ZmZlclNpemVz
Lm5lYXJlc3Qoa0xvd1Bvd2VyVmlkZW9CdWZmZXJTaXplKTsKKworICAgIEF1ZGlvU2Vzc2lvbjo6
c2hhcmVkU2Vzc2lvbigpLnNldFByZWZlcnJlZEJ1ZmZlclNpemUoYnVmZmVyU2l6ZSk7CiAKICAg
ICBpZiAoIURlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6c2hvdWxkTWFuYWdlQXVkaW9TZXNzaW9u
Q2F0ZWdvcnkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTk5LDggKzE5NywxMCBAQCB2b2lkIE1l
ZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6YWRkU2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYg
c2Vzc2lvbikKIHsKICAgICBtX25vd1BsYXlpbmdNYW5hZ2VyLT5hZGRDbGllbnQoKnRoaXMpOwog
Ci0gICAgaWYgKCFtX2F1ZGlvSGFyZHdhcmVMaXN0ZW5lcikKKyAgICBpZiAoIW1fYXVkaW9IYXJk
d2FyZUxpc3RlbmVyKSB7CiAgICAgICAgIG1fYXVkaW9IYXJkd2FyZUxpc3RlbmVyID0gQXVkaW9I
YXJkd2FyZUxpc3RlbmVyOjpjcmVhdGUoKnRoaXMpOworICAgICAgICBtX3N1cHBvcnRlZEF1ZGlv
SGFyZHdhcmVCdWZmZXJTaXplcyA9IG1fYXVkaW9IYXJkd2FyZUxpc3RlbmVyLT5zdXBwb3J0ZWRC
dWZmZXJTaXplcygpOworICAgIH0KIAogICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6
YWRkU2Vzc2lvbihzZXNzaW9uKTsKIH0KQEAgLTQxMiw2ICs0MTIsOSBAQCB2b2lkIE1lZGlhU2Vz
c2lvbk1hbmFnZXJDb2NvYTo6dXBkYXRlTm93UGxheWluZ0luZm8oKQogCiB2b2lkIE1lZGlhU2Vz
c2lvbk1hbmFnZXJDb2NvYTo6YXVkaW9PdXRwdXREZXZpY2VDaGFuZ2VkKCkKIHsKKyAgICBBU1NF
UlQobV9hdWRpb0hhcmR3YXJlTGlzdGVuZXIpOworICAgIG1fc3VwcG9ydGVkQXVkaW9IYXJkd2Fy
ZUJ1ZmZlclNpemVzID0gbV9hdWRpb0hhcmR3YXJlTGlzdGVuZXItPnN1cHBvcnRlZEJ1ZmZlclNp
emVzKCk7CisgICAgbV9kZWZhdWx0QnVmZmVyU2l6ZSA9IEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vz
c2lvbigpLnByZWZlcnJlZEJ1ZmZlclNpemUoKTsKICAgICBBdWRpb1Nlc3Npb246OnNoYXJlZFNl
c3Npb24oKS5hdWRpb091dHB1dERldmljZUNoYW5nZWQoKTsKICAgICB1cGRhdGVTZXNzaW9uU3Rh
dGUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBiMWY0OTBjM2M3
Y2Q2OGZmM2I5OTQwYTc0MGQ5Yzc3NDY1ZDY4MTc2Li40MjJjZTU1ZDgxNTI2OGVhYzY3ZmIyMDVl
ZmRiMjI1ZGEwNWE4ZWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC01
NDM5LDYgKzU0MzksMTUgQEAgZG91YmxlIEludGVybmFsczo6cHJlZmVycmVkQXVkaW9CdWZmZXJT
aXplKCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAorZG91YmxlIEludGVybmFsczo6Y3VycmVu
dEF1ZGlvQnVmZmVyU2l6ZSgpIGNvbnN0Cit7CisjaWYgVVNFKEFVRElPX1NFU1NJT04pCisgICAg
cmV0dXJuIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLmJ1ZmZlclNpemUoKTsKKyNlbmRp
ZgorICAgIHJldHVybiAwOworfQorCisKIGJvb2wgSW50ZXJuYWxzOjphdWRpb1Nlc3Npb25BY3Rp
dmUoKSBjb25zdAogewogI2lmIFVTRShBVURJT19TRVNTSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmgKaW5kZXggMzYyZGQzYjRmNGEzOThmM2QwMzVmMTUyOTIyNmNiMzgwOWE5NmFiYS4u
Zjg3OWIyOGZjODllNjIzY2M2MTE5ZmFkODNiMmM3M2FlNmIwMWI1NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5oCkBAIC04NDUsNiArODQ1LDcgQEAgcHVibGljOgogICAgIGJvb2wgc3Vw
cG9ydHNBdWRpb1Nlc3Npb24oKSBjb25zdDsKICAgICBTdHJpbmcgYXVkaW9TZXNzaW9uQ2F0ZWdv
cnkoKSBjb25zdDsKICAgICBkb3VibGUgcHJlZmVycmVkQXVkaW9CdWZmZXJTaXplKCkgY29uc3Q7
CisgICAgZG91YmxlIGN1cnJlbnRBdWRpb0J1ZmZlclNpemUoKSBjb25zdDsKICAgICBib29sIGF1
ZGlvU2Vzc2lvbkFjdGl2ZSgpIGNvbnN0OwogCiAgICAgdm9pZCBzdG9yZVJlZ2lzdHJhdGlvbnNP
bkRpc2soRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsCmluZGV4IGIzYWFjYzk1NDM1MzBkMjE0OWZlY2NhMjM1ZTcxMzQyOTg3NmM3NzUu
LmY3Nzc2NjU4YjI0ZTE0ZGQ3YWY1ZGFkNjg1OTc0NDE2NmY3YjAzZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTg5NCw2ICs4OTQsNyBAQCBlbnVtIFRyZWVUeXBlIHsK
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBzdXBwb3J0c0F1ZGlvU2Vzc2lvbjsKICAg
ICBET01TdHJpbmcgYXVkaW9TZXNzaW9uQ2F0ZWdvcnkoKTsKICAgICBkb3VibGUgcHJlZmVycmVk
QXVkaW9CdWZmZXJTaXplKCk7CisgICAgZG91YmxlIGN1cnJlbnRBdWRpb0J1ZmZlclNpemUoKTsK
ICAgICBib29sZWFuIGF1ZGlvU2Vzc2lvbkFjdGl2ZSgpOwogCiAgICAgW0NvbmRpdGlvbmFsPVNF
UlZJQ0VfV09SS0VSXSBQcm9taXNlPGJvb2xlYW4+IGhhc1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b24oRE9NU3RyaW5nIHNjb3BlVVJMKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCA0ZmE3NDIyNGEzYWQ4YmFmY2Y5ODViOTFhNjQyOTRhNmY4Y2M1
OTkyLi4wZDAxMGIxNWE1OWQ2Y2UwODVhNGNiODc5ZTBmZDM1NWEyMzllNTZlIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAK
KzIwMjEtMDUtMTkgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgW0NvY29hXSBVcGRhdGUgQXVkaW9TZXNzaW9uIGJ1ZmZlciBzaXplIGhhbmRsaW5nCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU5MjcKKyAg
ICAgICAgcmRhcjovLzc2OTIwMzc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L2F1
ZGlvLWJ1ZmZlci1zaXplLmh0bWw6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvQXVkaW9CdWZmZXJTaXplLm1tOiBBZGRlZC4KKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OndhaXRGb3JCdWZmZXJTaXplQ2hhbmdlKToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1QpOgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Q
cmVmZXJyZWRBdWRpb0J1ZmZlclNpemUubW06CisgICAgICAgIChURVNUX0YpOgorCiAyMDIxLTA1
LTIwICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CiAKICAgICAgICAgVGhl
IHRlc3Qgb2YgU21hbGxTZXQuY3BwIHNob3VsZCBwYXNzIHRoZSByaWdodCBIYXNoVHJhaXQgdG8g
dGhlIEhhc2hTZXQgaXQgdXNlcyBhcyBhIHJlZmVyZW5jZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA1ZWRmZjVkMDNiMTIzMTVhOTc5NDk2ZDMwNzcwZGJkYzhmNmNlYTMxLi4zYmI4ZWJiNjJi
NWY2MzU5ZTVjMjg3MWI4ZjVlZDVmYTBmZDBjYzZkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtNDgsNiArNDgsOCBAQAogCQkwNDFBMUUzNDIxNkZGREJDMDA3ODlFMEEgLyogUHVibGljU3Vm
Zml4LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA0
MUExRTMzMjE2RkZEQkMwMDc4OUUwQSAvKiBQdWJsaWNTdWZmaXguY3BwICovOyB9OwogCQkwNERC
MjM5NjIzNUU0M0VDMDAzMjhGMTcgLyogQnVtcFBvaW50ZXJBbGxvY2F0b3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDQ1MUE1QTYyMzVFNDM4RTAw
OURGOTQ1IC8qIEJ1bXBQb2ludGVyQWxsb2NhdG9yLmNwcCAqLzsgfTsKIAkJMDcxMURGNTIyMjZB
OTVGQzAwM0REMkY3IC8qIEFWRm91bmRhdGlvblNvZnRMaW5rVGVzdC5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MTFERjUxMjI2QTk1RkIwMDNERDJG
NyAvKiBBVkZvdW5kYXRpb25Tb2Z0TGlua1Rlc3QubW0gKi87IH07CisJCTA3MTM3MDRBMjY1MzIw
RTUwMENBMkM5QSAvKiBBdWRpb0J1ZmZlclNpemUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzEzNzA0OTI2NTMyMEU1MDBDQTJDOUEgLyogQXVkaW9C
dWZmZXJTaXplLm1tICovOyB9OworCQkwNzEzNzA1NTI2NTMyRTM5MDBDQTJDOUEgLyogYXVkaW8t
YnVmZmVyLXNpemUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwNzEzNzA1NDI2NTMyRTM5MDBDQTJDOUEgLyogYXVkaW8tYnVmZmVyLXNp
emUuaHRtbCAqLzsgfTsKIAkJMDc0OTJCM0IxREY4QjE0QzAwNjMzREUxIC8qIEVudW1lcmF0ZU1l
ZGlhRGV2aWNlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwNzQ5MkIzQTFERjhBRTJEMDA2MzNERTEgLyogRW51bWVyYXRlTWVkaWFEZXZpY2VzLmNw
cCAqLzsgfTsKIAkJMDc0OTJCM0MxREY4Qjg2NjAwNjMzREUxIC8qIGVudW1lcmF0ZU1lZGlhRGV2
aWNlcy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3NDkyQjM5MURGOEFEQTQwMDYzM0RFMSAvKiBlbnVtZXJhdGVNZWRpYURldmljZXMu
aHRtbCAqLzsgfTsKIAkJMDc0OTk0NDIxRUE1MDM0QjAwMERBNDRFIC8qIGdldFVzZXJNZWRpYS5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRBNDEwRjREMTlBRjdCRUYwMDJFQkFCNSAvKiBnZXRVc2VyTWVkaWEuaHRtbCAqLzsgfTsKQEAg
LTEzNzgsNiArMTM4MCw3IEBACiAJCQkJRjQyQkQ3RDkyNDVDQzUwODAwMUUyMDdBIC8qIGF0dHJp
YnV0ZWRTdHJpbmdOZXdsaW5lQXRFbmRPZkRvY3VtZW50Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8sCiAJCQkJN0M5RUQ5OEIxN0ExOUY0QjAwRTREQzMzIC8qIGF0dHJpYnV0ZWRTdHJpbmdTdHJp
a2V0aHJvdWdoLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJMzcxMzdFNEIyMTEyNEQw
MTAwMkJFRUE0IC8qIEF0dHJTdHlsZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCTA3
MTM3MDU1MjY1MzJFMzkwMENBMkM5QSAvKiBhdWRpby1idWZmZXItc2l6ZS5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovLAogCQkJCTQ2RjAzQzFDMjU1QjJENUEwMEFBNTFDNSAvKiBhdWRpby1jb250
ZXh0LXBsYXlpbmcuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlDRDlFMjkyRTFDOTBD
MzNGMDAwQkI4MDAgLyogYXVkaW8tb25seS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJ
CUM5NDQxNjAwMjE0MzBFODkwMEIxRUREQSAvKiBhdWRpby13aXRoLWNvbnRyb2xzLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8sCkBAIC0xNzc2LDYgKzE3NzksOCBAQAogCQkwNDFBMUUzMzIxNkZG
REJDMDA3ODlFMEEgLyogUHVibGljU3VmZml4LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFB1YmxpY1N1ZmZpeC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA0NTFBNUE2MjM1RTQzOEUwMDlERjk0NSAvKiBCdW1wUG9pbnRlckFsbG9jYXRvci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCdW1wUG9pbnRlckFsbG9jYXRv
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MTFERjUxMjI2QTk1RkIwMDNE
RDJGNyAvKiBBVkZvdW5kYXRpb25Tb2Z0TGlua1Rlc3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBBVkZvdW5kYXRpb25Tb2Z0TGlua1Rlc3QubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MTM3MDQ5MjY1MzIwRTUwMENBMkM5QSAvKiBBdWRpb0J1
ZmZlclNpemUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBdWRp
b0J1ZmZlclNpemUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MTM3MDU0MjY1
MzJFMzkwMENBMkM5QSAvKiBhdWRpby1idWZmZXItc2l6ZS5odG1sICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBuYW1lID0gImF1ZGlv
LWJ1ZmZlci1zaXplLmh0bWwiOyBwYXRoID0gIlRlc3RzL1dlYktpdC9hdWRpby1idWZmZXItc2l6
ZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc0NjY0NTcyMkZGNjJEMDAw
RTM0NTFBIC8qIEFjY2Vzc2liaWxpdHlUZXN0U3VwcG9ydFByb3RvY29sLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFjY2Vzc2liaWxpdHlUZXN0U3VwcG9ydFByb3RvY29sLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTA3NDY2NDU4MjJGRjYzMDUwMEUzNDUxQSAvKiBBY2Nlc3NpYmlsaXR5VGVz
dFBsdWdpbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlUZXN0UGx1Z2lu
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzQ5MkIzOTFERjhBREE0MDA2MzNE
RTEgLyogZW51bWVyYXRlTWVkaWFEZXZpY2VzLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBh
dGggPSBlbnVtZXJhdGVNZWRpYURldmljZXMuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTMxOTUsNiArMzIwMCw3IEBACiAJCTA4RkI3Nzk0RkU4NDE1NURDMDJBQUMwNyAvKiBU
ZXN0V2ViS2l0QVBJICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
KwkJCQkwNzEzNzA1NDI2NTMyRTM5MDBDQTJDOUEgLyogYXVkaW8tYnVmZmVyLXNpemUuaHRtbCAq
LywKIAkJCQk0OUFFRUY2ODI0MDcyNzZGMDBDODdFNEMgLyogSW5mby5wbGlzdCAqLywKIAkJCQk1
QzlEOTIyNjIyRDdERDdCMDA4RTkyNjYgLyogRGVyaXZlZCBTb3VyY2VzICovLAogCQkJCTVDOUQ5
MjFEMjJEN0RCRjcwMDhFOTI2NiAvKiBTb3VyY2VzLnR4dCAqLywKQEAgLTMzNjMsNiArMzM2OSw3
IEBACiAJCQkJNTFCNDBEOUQyM0FDOTYwRTAwRTA1MjQxIC8qIEFzeW5jRnVuY3Rpb24ubW0gKi8s
CiAJCQkJODM0MTM4QzYyMDMyNjFCOTAwRjI2OTYwIC8qIEFzeW5jUG9saWN5Rm9yTmF2aWdhdGlv
blJlc3BvbnNlLm1tICovLAogCQkJCTM3NjBDNEYwMjExMjQ5QUYwMDIzM0FDQyAvKiBBdHRyU3R5
bGUubW0gKi8sCisJCQkJMDcxMzcwNDkyNjUzMjBFNTAwQ0EyQzlBIC8qIEF1ZGlvQnVmZmVyU2l6
ZS5tbSAqLywKIAkJCQlDREVEMzQyRTI0OURERDlEMDAwMkFFN0EgLyogQXVkaW9Sb3V0aW5nQXJi
aXRyYXRpb24ubW0gKi8sCiAJCQkJNzU0Q0VDODAxRjY3MjJEQzAwRDAwMzlBIC8qIEF1dG9GaWxs
QXZhaWxhYmxlLm1tICovLAogCQkJCTJERDM1NTM1MUJEMDgzNzgwMDVERjRBNyAvKiBBdXRvTGF5
b3V0SW50ZWdyYXRpb24ubW0gKi8sCkBAIC00NDI3LDcgKzQ0MzQsNiBAQAogCQkJCTkzM0Q2MzFC
MUZDQjc2MTgwMDMyRUNENiAvKiBIYXNoZXIuY3BwICovLAogCQkJCTBCQ0Q4MzM0MTQ4NTdDRTQw
MEVBMjAwMyAvKiBIYXNoTWFwLmNwcCAqLywKIAkJCQkyNkIyREZGODE1QkRFNTk5MDA0RjY5MUQg
LyogSGFzaFNldC5jcHAgKi8sCi0JCQkJMzNDMkM5QzAyNjUxRjVCOTAwRTQwN0Y2IC8qIFNtYWxs
U2V0LmNwcCAqLywKIAkJCQk3QzhCRkY3MDIzQzAxMDY3MDBDMDA5QjMgLyogSGV4TnVtYmVyLmNw
cCAqLywKIAkJCQkzMzk3NkQ4MjI0REM0NzlCMDA4MTIzMDQgLyogSW5kZXhTcGFyc2VTZXQuY3Bw
ICovLAogCQkJCTI2NkZBRkQyMTVFNTc3NTIwMEY2MUQ1QiAvKiBJbnRlZ2VyVG9TdHJpbmdDb252
ZXJzaW9uLmNwcCAqLywKQEAgLTQ0NzMsNiArNDQ3OSw3IEBACiAJCQkJMEJDRDg1NjkxNDg1Qzk4
QjAwRUEyMDAzIC8qIFNldEZvclNjb3BlLmNwcCAqLywKIAkJCQlDRDUzOTNDOTE3NTdCQUM0MDBD
MDcxMjMgLyogU0hBMS5jcHAgKi8sCiAJCQkJRTM5NTNGOTUxRjJDRjMyMTAwQTc2QTJFIC8qIFNp
Z25hbHMuY3BwICovLAorCQkJCTMzQzJDOUMwMjY1MUY1QjkwMEU0MDdGNiAvKiBTbWFsbFNldC5j
cHAgKi8sCiAJCQkJOTNGQ0RCMzMyNjM2MzE1NjAwNDZERDdEIC8qIFNvcnRlZEFycmF5TWFwLmNw
cCAqLywKIAkJCQlGRTJCQ0RDNjI0NzBGQzcwMDBERUMzM0IgLyogU3RkTGliRXh0cmFzLmNwcCAq
LywKIAkJCQk4MUI1MDE5MjE0MEYyMzIzMDBEOUVCNTggLyogU3RyaW5nQnVpbGRlci5jcHAgKi8s
CkBAIC01MTY0LDcgKzUxNzEsNiBAQAogCQkJZmlsZXMgPSAoCiAJCQkJN0M4M0RFOTkxRDBBNTkw
QzAwRkVCQ0YzIC8qIEF0b21TdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkUyRDk0NzQy
NDVFQjJGNDAwRTQ4MTM1IC8qIEJpdG1hcC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkzM0MyQzlD
MTI2NTFGNUI5MDBFNDA3RjYgLyogU21hbGxTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFE
QUQxNTAxRDc3QTlGNjAwMjEyNTg2IC8qIEJsb2NrUHRyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0M4M0RFOUMxRDBBNTkwQzAwRkVCQ0YzIC8qIEJsb29tRmlsdGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTdDODNERjE4MUQwQTU5MEMwMEZFQkNGMyAvKiBCb3hQdHIuY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC01MjMyLDYgKzUyMzgsNyBAQAogCQkJCTdDODNERjNEMUQwQTU5MEMwMEZFQkNGMyAv
KiBTZXRGb3JTY29wZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREYyQTFEMEE1OTBDMDBG
RUJDRjMgLyogU0hBMS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMzczRDc5MTFGMkNGMzUyMDBD
NkZBQUYgLyogU2lnbmFscy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzM0MyQzlDMTI2NTFGNUI5
MDBFNDA3RjYgLyogU21hbGxTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNGQ0RCMzQyNjM2
MzE1NjAwNDZERDdEIC8qIFNvcnRlZEFycmF5TWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZF
MkJDREM3MjQ3MEZEQTMwMERFQzMzQiAvKiBTdGRMaWJFeHRyYXMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0M4M0RGMzIxRDBBNTkwQzAwRkVCQ0YzIC8qIFN0cmluZ0J1aWxkZXIuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC01MzA1LDYgKzUzMTIsNyBAQAogCQkJCTdDQ0U3RUI0MUE0MTFBN0UwMDQ0
N0M0QyAvKiBBdHRyaWJ1dGVkU3RyaW5nLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjRGQTJBNEYy
NEQxRjA1NzAwNjE4QTQ2IC8qIEF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JQcm9wb3NlZFJhbmdlLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJMzc2MEM0RjEyMTEyNDlBRjAwMjMzQUNDIC8qIEF0dHJTdHls
ZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTA3MTM3MDRBMjY1MzIwRTUwMENBMkM5QSAvKiBBdWRp
b0J1ZmZlclNpemUubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREVEMzQyRjI0OURERTBFMDAwMkFF
N0EgLyogQXVkaW9Sb3V0aW5nQXJiaXRyYXRpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREM4
RTQ4RDFCQzVDQjQ1MDA1OTRGRUMgLyogQXVkaW9TZXNzaW9uQ2F0ZWdvcnlJT1MubW0gaW4gU291
cmNlcyAqLywKIAkJCQlGNDJENjM0NDIyQTE3MjlGMDBEMkZCM0EgLyogQXV0b2NvcnJlY3Rpb25U
ZXN0c0lPUy5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQvYXVkaW8tYnVmZmVyLXNpemUuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0L2F1ZGlvLWJ1ZmZlci1zaXplLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTQwNTcw
MzQ3NDRiMmE3ZDJjMTQ0Yzg4ZTY0MjA1NGYyMDRlYjBiZgotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L2F1ZGlvLWJ1ZmZlci1zaXplLmh0bWwKQEAg
LTAsMCArMSw4MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAg
ICAgPHNjcmlwdD4KKworbGV0IGNvbnRleHQ7CitsZXQgb3NjaWxsYXRvcjsKK2xldCBzdHJlYW07
CitsZXQgZ2FpbjsKKworZnVuY3Rpb24gc2VuZE1lc3NhZ2UobWVzc2FnZSkKK3sKKyAgICB0cnkg
eworICAgICAgICBpZiAod2luZG93LndlYmtpdCkKKyAgICAgICAgICAgIHdpbmRvdy53ZWJraXQu
bWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKG1lc3NhZ2UpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBjb25zb2xlLmxvZyhgTUVTU0FHRSAtICR7bWVzc2FnZX1gKTsK
KyAgICB9IGNhdGNoKGVycikgeworICAgICAgICBjb25zb2xlLmxvZyhgZmFpbGVkIHRvIHNlbmQg
bWVzc2FnZSAke21lc3NhZ2V9OiAke2Vycn1gKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNyZWF0
ZVdlYkF1ZGlvTm9kZSgpCit7CisgICAgY29udGV4dCA9IG5ldyBBdWRpb0NvbnRleHQoKTsKKwor
ICAgIGdhaW4gPSBuZXcgR2Fpbk5vZGUoY29udGV4dCwge2dhaW46IDAuMDV9KTsKKyAgICBnYWlu
LmNvbm5lY3QoY29udGV4dC5kZXN0aW5hdGlvbik7CisKKyAgICBvc2NpbGxhdG9yID0gbmV3IE9z
Y2lsbGF0b3JOb2RlKGNvbnRleHQpOworICAgIG9zY2lsbGF0b3IuY29ubmVjdChnYWluKTsKKyAg
ICBvc2NpbGxhdG9yLnN0YXJ0KCk7Cit9CisKK2Z1bmN0aW9uIGRpc2Nvbm5lY3RXZWJBdWRpb05v
ZGUoKQoreworICAgIG9zY2lsbGF0b3Iuc3RvcCgpOworICAgIG9zY2lsbGF0b3IuZGlzY29ubmVj
dCgpOworICAgIGdhaW4uZGlzY29ubmVjdCgpOworICAgIGNvbnRleHQuY2xvc2UoKTsKK30KKwor
YXN5bmMgZnVuY3Rpb24gc3RhcnRDYXB0dXJlKCkKK3sKKyAgICBzdHJlYW0gPSBhd2FpdCBuYXZp
Z2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7IHZpZGVvOiB0cnVlLCBhdWRpbzogeyB2
b2x1bWU6IDAuMDUgfSB9KTsKK30KKworZnVuY3Rpb24gc3RvcENhcHR1cmUoKQoreworICAgIHN0
cmVhbS5nZXRUcmFja3MoKS5mb3JFYWNoKHRyYWNrID0+IHRyYWNrLnN0b3AoKSk7Cit9CisKK2Fz
eW5jIGZ1bmN0aW9uIHBsYXlWaWRlbygpIAoreworICAgIGxldCB2aWRlbyA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCd2aWRlbycpWzBdOworICAgIHZpZGVvLnNyYyA9ICd0ZXN0LW1z
ZS5tcDQnOworICAgIHZpZGVvLnZvbHVtZSA9IDAuMDU7CisgICAgYXdhaXQgdmlkZW8ucGxheSgp
OworICAgIHNlbmRNZXNzYWdlKCdwbGF5aW5nJyk7Cit9CisKK2Z1bmN0aW9uIHBhdXNlVmlkZW8o
KSAKK3sKKyAgICB2aWRlbyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd2aWRlbycp
WzBdLnBhdXNlKCk7Cit9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDxoZWFkPgorCisgICAgPGJv
ZHk+CisgICAgICAgIDx2aWRlbyBjb250cm9scz48L3ZpZGVvPgorICAgICAgICA8YnI+CisgICAg
ICAgIDxidXR0b24gb25jbGljaz0iY3JlYXRlV2ViQXVkaW9Ob2RlKCkiPkNyZWF0ZSBBdWRpbyBO
b2RlPC9idXR0b24+CisgICAgICAgIDxidXR0b24gb25jbGljaz0iZGlzY29ubmVjdFdlYkF1ZGlv
Tm9kZSgpIj5EaXNjb25uZWN0IEF1ZGlvIE5vZGU8L2J1dHRvbj4KKyAgICAgICAgPGJyPgorICAg
ICAgICA8YnV0dG9uIG9uY2xpY2s9InN0YXJ0Q2FwdHVyZSgpIj5TdGFydCBDYXB0dXJlPC9idXR0
b24+CisgICAgICAgIDxidXR0b24gb25jbGljaz0ic3RvcENhcHR1cmUoKSI+U3RvcCBDYXB0dXJl
PC9idXR0b24+CisgICAgICAgIDxicj4KKyAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJwbGF5Vmlk
ZW8oKSI+UGxheSAmbHQ7dmlkZW8mZ3Q7PC9idXR0b24+CisgICAgICAgIDxidXR0b24gb25jbGlj
az0icGF1c2VWaWRlbygpIj5QYXVzZSAmbHQ7dmlkZW8mZ3Q7PC9idXR0b24+CisgICAgPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9BdWRpb0J1ZmZlclNpemUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0F1ZGlvQnVmZmVyU2l6ZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MzNkZTFlYzRkNmRhNDAwNWQ5
OGE3OThjZTk3NmE1ZDllMDIzNDM5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BdWRpb0J1ZmZlclNpemUubW0KQEAgLTAsMCArMSwxMTIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2lmIFdLX0hBVkVfQ19TUEkK
KworI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3QuaCIKKyNpbXBv
cnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgIlVzZXJNZWRpYUNhcHR1cmVVSURlbGVnYXRl
LmgiCisjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdl
YktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3
Q29uZmlndXJhdGlvblByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRl
Lmg+CisKKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9TZWNvbmRzLmg+
CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworZG91YmxlIHdhaXRGb3JCdWZmZXJTaXpl
Q2hhbmdlKFdLV2ViVmlldyogd2ViVmlldywgZG91YmxlIG9sZFNpemUpCit7CisgICAgaW50IHRy
aWVzID0gMDsKKyAgICBkbyB7CisgICAgICAgIGF1dG8gc2l6ZSA9IFt3ZWJWaWV3IHN0cmluZ0J5
RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ3aW5kb3cuaW50ZXJuYWxzLmN1cnJlbnRBdWRpb0J1ZmZl
clNpemUoKSJdLmRvdWJsZVZhbHVlOworICAgICAgICBpZiAoc2l6ZSAhPSBvbGRTaXplKQorICAg
ICAgICAgICAgcmV0dXJuIHNpemU7CisKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c2xl
ZXAoMC4xKTsKKyAgICB9IHdoaWxlICgrK3RyaWVzIDw9IDEwMCk7CisKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KKworVEVTVChXZWJLaXQsIEF1ZGlvQnVmZmVy
U2l6ZSkKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gY29udGV4dCA9IGFkb3B0V0soVGVz
dFdlYktpdEFQSTo6VXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVzdCgiSW50
ZXJuYWxzSW5qZWN0ZWRCdW5kbGVUZXN0IikpOworCisjaWYgUExBVEZPUk0oSU9TKQorICAgIGNv
bmZpZ3VyYXRpb24uZ2V0KCkuYWxsb3dzSW5saW5lTWVkaWFQbGF5YmFjayA9IFlFUzsKKyAgICBj
b25maWd1cmF0aW9uLmdldCgpLl9pbmxpbmVNZWRpYVBsYXliYWNrUmVxdWlyZXNQbGF5c0lubGlu
ZUF0dHJpYnV0ZSA9IE5POworI2VuZGlmCisgICAgY29uZmlndXJhdGlvbi5nZXQoKS5fbWVkaWFE
YXRhTG9hZHNBdXRvbWF0aWNhbGx5ID0gWUVTOworICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkubWVk
aWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVkaW92aXN1YWxNZWRp
YVR5cGVOb25lOworICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2wgPSAoV0tQcm9j
ZXNzUG9vbCAqKWNvbnRleHQuZ2V0KCk7CisgICAgY29uZmlndXJhdGlvbi5nZXQoKS5fbWVkaWFD
YXB0dXJlRW5hYmxlZCA9IFlFUzsKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gW2NvbmZpZ3VyYXRp
b24gcHJlZmVyZW5jZXNdOworICAgIHByZWZlcmVuY2VzLl9tZWRpYUNhcHR1cmVSZXF1aXJlc1Nl
Y3VyZUNvbm5lY3Rpb24gPSBOTzsKKyAgICBwcmVmZXJlbmNlcy5fbW9ja0NhcHR1cmVEZXZpY2Vz
RW5hYmxlZCA9IFlFUzsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMzAwLCAzMDApIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBhZGRUb1dpbmRvdzpZRVNdKTsKKyAgICBhdXRv
IGRlbGVnYXRlID0gYWRvcHROUyhbW1VzZXJNZWRpYUNhcHR1cmVVSURlbGVnYXRlIGFsbG9jXSBp
bml0XSk7CisgICAgd2ViVmlldy5nZXQoKS5VSURlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisK
KyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJhdWRpby1idWZm
ZXItc2l6ZSJdOworCisgICAgX19ibG9jayBib29sIGdvdE1lc3NhZ2UgPSBmYWxzZTsKKyAgICBb
d2ViVmlldyBwZXJmb3JtQWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOkAicGxheWluZyIgYWN0aW9uOl57
IGdvdE1lc3NhZ2UgPSB0cnVlOyB9XTsKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6
QCJwbGF5VmlkZW8oKSIgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmdvdE1lc3NhZ2UpOworICAgIGF1dG8gYnVmZmVyU2l6ZVBsYXlpbmdBdWRp
byA9IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ3aW5kb3cuaW50ZXJu
YWxzLmN1cnJlbnRBdWRpb0J1ZmZlclNpemUoKSJdLmRvdWJsZVZhbHVlOworCisgICAgW3dlYlZp
ZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAic3RhcnRDYXB0dXJlKCkiIGNvbXBsZXRpb25IYW5kbGVy
Om5pbF07CisgICAgW2RlbGVnYXRlIHdhaXRVbnRpbFByb21wdGVkXTsKKyAgICBhdXRvIGJ1ZmZl
clNpemVDYXB0dXJpbmdBdWRpbyA9IHdhaXRGb3JCdWZmZXJTaXplQ2hhbmdlKHdlYlZpZXcuZ2V0
KCksIGJ1ZmZlclNpemVQbGF5aW5nQXVkaW8pOworICAgIEFTU0VSVF9MVChidWZmZXJTaXplQ2Fw
dHVyaW5nQXVkaW8sIGJ1ZmZlclNpemVQbGF5aW5nQXVkaW8pOworCisgICAgW3dlYlZpZXcgZXZh
bHVhdGVKYXZhU2NyaXB0OkAiY3JlYXRlV2ViQXVkaW9Ob2RlKCkiIGNvbXBsZXRpb25IYW5kbGVy
Om5pbF07CisgICAgYXV0byBidWZmZXJTaXplV2l0aFdlYkF1ZGlvID0gd2FpdEZvckJ1ZmZlclNp
emVDaGFuZ2Uod2ViVmlldy5nZXQoKSwgYnVmZmVyU2l6ZUNhcHR1cmluZ0F1ZGlvKTsKKyAgICBB
U1NFUlRfTFQoYnVmZmVyU2l6ZVdpdGhXZWJBdWRpbywgYnVmZmVyU2l6ZUNhcHR1cmluZ0F1ZGlv
KTsKKworICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAImRpc2Nvbm5lY3RXZWJBdWRp
b05vZGUoKSIgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKKyAgICBhdXRvIGJ1ZmZlclNpemVXaXRo
b3V0V2ViQXVkaW8gPSB3YWl0Rm9yQnVmZmVyU2l6ZUNoYW5nZSh3ZWJWaWV3LmdldCgpLCBidWZm
ZXJTaXplV2l0aFdlYkF1ZGlvKTsKKyAgICBBU1NFUlRfR1QoYnVmZmVyU2l6ZVdpdGhvdXRXZWJB
dWRpbywgYnVmZmVyU2l6ZVdpdGhXZWJBdWRpbyk7CisgICAgQVNTRVJUX0VRKGJ1ZmZlclNpemVX
aXRob3V0V2ViQXVkaW8sIGJ1ZmZlclNpemVDYXB0dXJpbmdBdWRpbyk7CisKKyAgICBbd2ViVmll
dyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJzdG9wQ2FwdHVyZSgpIiBjb21wbGV0aW9uSGFuZGxlcjpu
aWxdOworICAgIGF1dG8gYnVmZmVyU2l6ZVdpdGhvdXRDYXB0dXJlID0gd2FpdEZvckJ1ZmZlclNp
emVDaGFuZ2Uod2ViVmlldy5nZXQoKSwgYnVmZmVyU2l6ZVdpdGhvdXRXZWJBdWRpbyk7CisgICAg
QVNTRVJUX0dUKGJ1ZmZlclNpemVXaXRob3V0Q2FwdHVyZSwgYnVmZmVyU2l6ZVdpdGhvdXRXZWJB
dWRpbyk7CisgICAgQVNTRVJUX0VRKGJ1ZmZlclNpemVXaXRob3V0Q2FwdHVyZSwgYnVmZmVyU2l6
ZVBsYXlpbmdBdWRpbyk7CisKKyAgICBbd2ViVmlldyByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKK30K
KworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCisjZW5kaWYgLy8gV0tfSEFWRV9DX1NQ
SQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QcmVm
ZXJyZWRBdWRpb0J1ZmZlclNpemUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1ByZWZlcnJlZEF1ZGlvQnVmZmVyU2l6ZS5tbQppbmRleCBjNjQ1OTUwM2QzODQ3YjNj
YzYxZDc2Y2E2ODljZDRhMzAyMGQxMGY2Li5lNWZiMGZiNzIyMDM3MGI3ZGEzMTQwMmI2NDVkMTZl
OWQzNzJiYzVlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1ByZWZlcnJlZEF1ZGlvQnVmZmVyU2l6ZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1ByZWZlcnJlZEF1ZGlvQnVmZmVyU2l6ZS5tbQpAQCAtOTEsNyAr
OTEsNyBAQCBURVNUX0YoUHJlZmVycmVkQXVkaW9CdWZmZXJTaXplLCBXZWJBdWRpbykKIAogVEVT
VF9GKFByZWZlcnJlZEF1ZGlvQnVmZmVyU2l6ZSwgVmlkZW9Pbmx5KQogewotICAgIHJ1blBsYXlp
bmdUZXN0V2l0aFBhZ2VOYW1lZChAInZpZGVvLXdpdGhvdXQtYXVkaW8iLCA1MTIpOworICAgIHJ1
blBsYXlpbmdUZXN0V2l0aFBhZ2VOYW1lZChAInZpZGVvLXdpdGhvdXQtYXVkaW8iLCA0MDk2KTsK
IH0KIAogVEVTVF9GKFByZWZlcnJlZEF1ZGlvQnVmZmVyU2l6ZSwgVmlkZW9XaXRoQXVkaW8pCg==
</data>
<flag name="review"
          id="450527"
          type_id="1"
          status="+"
          setter="jer.noble"
    />
          </attachment>
      

    </bug>

</bugzilla>