<?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>233993</bug_id>
          
          <creation_ts>2021-12-08 00:31:39 -0800</creation_ts>
          <short_desc>Momentum Event Dispatcher: Momentum tail should have montonically decreasing deltas and tail gaps</short_desc>
          <delta_ts>2021-12-08 11:58:33 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1821455</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-12-08 00:31:39 -0800</bug_when>
    <thetext>Momentum Event Dispatcher: Momentum tail should have montonically decreasing deltas and tail gaps</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821456</commentid>
    <comment_count>1</comment_count>
      <attachid>446327</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-12-08 00:32:13 -0800</bug_when>
    <thetext>Created attachment 446327
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821457</commentid>
    <comment_count>2</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-12-08 00:32:15 -0800</bug_when>
    <thetext>&lt;rdar://problem/86118367&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821459</commentid>
    <comment_count>3</comment_count>
      <attachid>446328</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-12-08 00:34:01 -0800</bug_when>
    <thetext>Created attachment 446328
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821460</commentid>
    <comment_count>4</comment_count>
      <attachid>446329</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-12-08 00:38:22 -0800</bug_when>
    <thetext>Created attachment 446329
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821475</commentid>
    <comment_count>5</comment_count>
      <attachid>446335</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-12-08 01:51:12 -0800</bug_when>
    <thetext>Created attachment 446335
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821621</commentid>
    <comment_count>6</comment_count>
      <attachid>446335</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-12-08 10:36:57 -0800</bug_when>
    <thetext>Comment on attachment 446335
Patch

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

&gt; Source/WebKit/ChangeLog:24
&gt; +        Sort the deltas up until the first zero to ensure a lack of unexpected
&gt; +        perceptual acceleration, and then inject skipped frames in order to
&gt; +        ensure that frames that have effective scroll movement (non-zero deltas)
&gt; +        are always spaced equally-or-further apart than earlier ones, but
&gt; +        never closer together (which, again, would be percieved as acceleration).

I want this as a code comment.

&gt; Source/WebKit/WebProcess/WebPage/MomentumEventDispatcher.cpp:381
&gt; +        const float tailStartUnacceleratedDelta = 6.f;

Justify the 6 ?

&gt; Source/WebKit/WebProcess/WebPage/MomentumEventDispatcher.cpp:414
&gt; +    deltas[0].reserveInitialCapacity(initialTableSize);
&gt; +    deltas[1].reserveInitialCapacity(initialTableSize);

Maybe a constexpr for 0 (horizontal) and 1 (vertical). Or use ScrollEventAxis.

&gt; Source/WebKit/WebProcess/WebPage/MomentumEventDispatcher.cpp:420
&gt; +    if (auto firstZeroIndex = deltas[0].find(0))

You could look for zeros in the loop above, saving a vector traversal.

&gt; Source/WebKit/WebProcess/WebPage/MomentumEventDispatcher.cpp:427
&gt; +    typedef unsigned GapSize[2];
&gt; +    GapSize minimumGap = { 0, 0 };
&gt; +    GapSize currentGap = { 0, 0 };

It wasn&apos;t clear to me what GapSize is about. Maybe a comment saying it&apos;s a count of contiguous frames with zero delta?

&gt; Source/WebKit/WebProcess/WebPage/MomentumEventDispatcher.cpp:437
&gt; +            remainingGapToGenerate[axis]--;
&gt; +            currentGap[axis]++;

pre-increment/decrement

&gt; Source/WebKit/WebProcess/WebPage/MomentumEventDispatcher.cpp:443
&gt; +            minimumGap[axis] = std::max(minimumGap[axis], currentGap[axis]);

It&apos;s call minimumGap but you&apos;re using std::max?

&gt; Source/WebKit/WebProcess/WebPage/MomentumEventDispatcher.cpp:447
&gt; +                remainingGapToGenerate[axis]--;
&gt; +                currentGap[axis]++;

pre

&gt; Source/WebKit/WebProcess/WebPage/MomentumEventDispatcher.cpp:453
&gt; +            currentGap[axis]++;

pre

&gt; Source/WebKit/WebProcess/WebPage/MomentumEventDispatcher.h:137
&gt; +        Seconds tailStartTime;

Either keep the name and use MonotonicTime or keep Seconds and put &quot;delay&quot; or &quot;offset&quot; in the name?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821624</commentid>
    <comment_count>7</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-12-08 10:39:48 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #6)
&gt; Comment on attachment 446335 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=446335&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/ChangeLog:24
&gt; &gt; +        Sort the deltas up until the first zero to ensure a lack of unexpected
&gt; &gt; +        perceptual acceleration, and then inject skipped frames in order to
&gt; &gt; +        ensure that frames that have effective scroll movement (non-zero deltas)
&gt; &gt; +        are always spaced equally-or-further apart than earlier ones, but
&gt; &gt; +        never closer together (which, again, would be percieved as acceleration).
&gt; 
&gt; I want this as a code comment.

Good idea.

&gt; &gt; Source/WebKit/WebProcess/WebPage/MomentumEventDispatcher.cpp:381
&gt; &gt; +        const float tailStartUnacceleratedDelta = 6.f;
&gt; 
&gt; Justify the 6 ?

Cannot, I kidnapped it from elsewhere.

&gt; &gt; Source/WebKit/WebProcess/WebPage/MomentumEventDispatcher.cpp:414
&gt; &gt; +    deltas[0].reserveInitialCapacity(initialTableSize);
&gt; &gt; +    deltas[1].reserveInitialCapacity(initialTableSize);
&gt; 
&gt; Maybe a constexpr for 0 (horizontal) and 1 (vertical). Or use
&gt; ScrollEventAxis.

Fair.

&gt; &gt; Source/WebKit/WebProcess/WebPage/MomentumEventDispatcher.cpp:420
&gt; &gt; +    if (auto firstZeroIndex = deltas[0].find(0))
&gt; 
&gt; You could look for zeros in the loop above, saving a vector traversal.

True! Will do.

&gt; &gt; Source/WebKit/WebProcess/WebPage/MomentumEventDispatcher.cpp:443
&gt; &gt; +            minimumGap[axis] = std::max(minimumGap[axis], currentGap[axis]);
&gt; 
&gt; It&apos;s call minimumGap but you&apos;re using std::max?

It is the minimum gap that we will enforce going forward, based on the maximum of all previously seen gaps.

&gt; &gt; Source/WebKit/WebProcess/WebPage/MomentumEventDispatcher.h:137
&gt; &gt; +        Seconds tailStartTime;
&gt; 
&gt; Either keep the name and use MonotonicTime or keep Seconds and put &quot;delay&quot;
&gt; or &quot;offset&quot; in the name?

Good point!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821678</commentid>
    <comment_count>8</comment_count>
      <attachid>446399</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-12-08 11:46:44 -0800</bug_when>
    <thetext>Created attachment 446399
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821688</commentid>
    <comment_count>9</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-12-08 11:58:33 -0800</bug_when>
    <thetext>https://trac.webkit.org/changeset/286671/webkit</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446327</attachid>
            <date>2021-12-08 00:32:13 -0800</date>
            <delta_ts>2021-12-08 00:33:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233993-20211208003212.patch</filename>
            <type>text/plain</type>
            <size>16064</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU5YTI0MTE5MWVjMmJkMDhl
ODk5MTE0YjM2MjI1MTEyYzViMmU2MDAuLjJlZGM5MjVhZjNlOWViZmU4NzQzNDRlNDUzZjQwN2Nm
ZmY0M2EwNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMjEtMTItMDcgIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW9tZW50dW0gRXZlbnQg
RGlzcGF0Y2hlcjogTW9tZW50dW0gdGFpbCBzaG91bGQgaGF2ZSBtb250b25pY2FsbHkgZGVjcmVh
c2luZyBkZWx0YXMgYW5kIHRhaWwgZ2FwcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjMzOTkzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NjExODM2
Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9Nb21lbnR1bUV2ZW50RGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok1vbWVudHVtRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFN5bnRoZXRpY01vbWVudHVt
RXZlbnQpOgorICAgICAgICBBdm9pZCBwb2ludGxlc3NseSBkaXNwYXRjaGluZyBtb21lbnR1bSBj
aGFuZ2VkIGV2ZW50cyB3aXRoIGVtcHR5IGRlbHRhczsKKyAgICAgICAganVzdCBza2lwIHRoZSBm
cmFtZS4KKworICAgICAgICAoV2ViS2l0OjpNb21lbnR1bUV2ZW50RGlzcGF0Y2hlcjo6Y29uc3Vt
ZURlbHRhRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAoV2ViS2l0OjpNb21lbnR1bUV2ZW50RGlz
cGF0Y2hlcjo6YnVpbGRPZmZzZXRUYWJsZVdpdGhJbml0aWFsRGVsdGEpOgorICAgICAgICAoV2Vi
S2l0OjpNb21lbnR1bUV2ZW50RGlzcGF0Y2hlcjo6Y29tcHV0ZU5leHREZWx0YSk6CisgICAgICAg
IEluIG9yZGVyIHRvIGF2b2lkIHZpc3VhbCBzdHV0dGVyIGR1ZSB0byBpbnRlZ3JhbCByb3VuZGlu
ZyBvZiB0aGUKKyAgICAgICAgZGVsdGFzIHdlIGRpc3BhdGNoIGluIHRoZSBtb21lbnR1bSBwaGFz
ZSwgc3dpdGNoIHRvIGEgdGFibGUgb2YKKyAgICAgICAgZGVsdGFzIGluc3RlYWQgb2YgaW50ZXJw
b2xhdGluZyBhbG9uZyB0aGUgb2Zmc2V0IGN1cnZlIGR1cmluZyB0aGUKKyAgICAgICAgdGFpbCBl
bmQgb2YgdGhlIGFuaW1hdGlvbiAod2hlbiB0aGUgcm91bmRpbmcgbWFrZXMgdXAgYSBsYXJnZQor
ICAgICAgICBwcm9wb3J0aW9uIG9mIGVhY2ggZGVsdGEpLgorCisgICAgICAgIChXZWJLaXQ6Ok1v
bWVudHVtRXZlbnREaXNwYXRjaGVyOjplcXVhbGl6ZVRhaWxHYXBzKToKKyAgICAgICAgU29ydCB0
aGUgZGVsdGFzIHVwIHVudGlsIHRoZSBmaXJzdCB6ZXJvIHRvIGVuc3VyZSBhIGxhY2sgb2YgdW5l
eHBlY3RlZAorICAgICAgICBwZXJjZXB0dWFsIGFjY2VsZXJhdGlvbiwgYW5kIHRoZW4gaW5qZWN0
IHNraXBwZWQgZnJhbWVzIGluIG9yZGVyIHRvCisgICAgICAgIGVuc3VyZSB0aGF0IGZyYW1lcyB0
aGF0IGhhdmUgZWZmZWN0aXZlIHNjcm9sbCBtb3ZlbWVudCAobm9uLXplcm8gZGVsdGFzKQorICAg
ICAgICBhcmUgYWx3YXlzIHNwYWNlZCBlcXVhbGx5LW9yLWZ1cnRoZXIgYXBhcnQgdGhhbiBlYXJs
aWVyIG9uZXMsIGJ1dAorICAgICAgICBuZXZlciBjbG9zZXIgdG9nZXRoZXIgKHdoaWNoLCBhZ2Fp
biwgd291bGQgYmUgcGVyY2lldmVkIGFzIGFjY2VsZXJhdGlvbikuCisKKyAgICAgICAgKFdlYktp
dDo6TW9tZW50dW1FdmVudERpc3BhdGNoZXI6OmhhbmRsZVdoZWVsRXZlbnQpOgorICAgICAgICAo
V2ViS2l0OjpNb21lbnR1bUV2ZW50RGlzcGF0Y2hlcjo6cHVzaExvZ0VudHJ5KToKKyAgICAgICAg
KFdlYktpdDo6TW9tZW50dW1FdmVudERpc3BhdGNoZXI6OmZsdXNoTG9nKToKKyAgICAgICAgTGFz
dGx5LCBhZGp1c3Qgc29tZSBsb2dnaW5nIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHRlbGwgd2hpY2gg
cm93IGluCisgICAgICAgIHRoZSBvdXRwdXQgY29ycmVzcG9uZHMgdG8gYW4gZXZlbnQgZGVsdGEg
b3IgZ2VuZXJhdGVkIGRlbHRhLCBzbyBpdCdzCisgICAgICAgIGVhc2llciB0byBmaW5kIHNraXBw
ZWQgZnJhbWVzLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Nb21lbnR1bUV2ZW50RGlz
cGF0Y2hlci5oOgorCiAyMDIxLTEyLTA2ICBQZXIgQXJuZSAgPHB2b2xsYW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFtpT1NdIFJlbW92ZSBtYWNoIHNlcnZpY2UgZXh0ZW5zaW9ucyBmb3IgdGhlIFdl
YkNvbnRlbnQgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvTW9tZW50dW1FdmVudERpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvTW9tZW50dW1FdmVudERpc3BhdGNoZXIuY3BwCmluZGV4IDQ3OTk1ODdiNjkx
OWZlZDJmOTM4YjgyODY4ZWJmYjdlN2I2YjlhOWQuLmFiODNlODk0YWMwYTE3M2ZkNTg0MTcxMDEw
MTQ0NzY5ODY5N2VlMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL01vbWVudHVtRXZlbnREaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Nb21lbnR1bUV2ZW50RGlzcGF0Y2hlci5jcHAKQEAgLTExMywxNSArMTEz
LDE1IEBAIGJvb2wgTW9tZW50dW1FdmVudERpc3BhdGNoZXI6OmhhbmRsZVdoZWVsRXZlbnQoV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlkZW50CiAgICAgICAgIG1fY3VycmVudEdlc3R1cmUu
YWNjdW11bGF0ZWRFdmVudE9mZnNldCArPSBldmVudC5kZWx0YSgpOwogCiAgICAgYXV0byBjb21i
aW5lZFBoYXNlID0gKGV2ZW50LnBoYXNlKCkgPDwgOCkgfCAoZXZlbnQubW9tZW50dW1QaGFzZSgp
KTsKLSAgICBtX2N1cnJlbnRMb2dTdGF0ZS5sYXRlc3RFdmVudFBoYXNlID0gY29tYmluZWRQaGFz
ZTsKICAgICBtX2N1cnJlbnRMb2dTdGF0ZS50b3RhbEV2ZW50T2Zmc2V0ICs9IGV2ZW50LmRlbHRh
KCkuaGVpZ2h0KCk7CiAgICAgaWYgKCFpc01vbWVudHVtRXZlbnREdXJpbmdTeW50aGV0aWNHZXN0
dXJlKSB7CiAgICAgICAgIC8vIExvZyBldmVudHMgdGhhdCB3ZSBkb24ndCBibG9jayB0byB0aGUg
Z2VuZXJhdGVkIG9mZnNldHMgbG9nIGFzIHdlbGwsCiAgICAgICAgIC8vIGV2ZW4gdGhvdWdoIHdl
IGRpZG4ndCB0ZWNobmljYWxseSBnZW5lcmF0ZSB0aGVtLCBqdXN0IHBhc3NlZCB0aGVtIHRocm91
Z2guCi0gICAgICAgIG1fY3VycmVudExvZ1N0YXRlLmxhdGVzdEdlbmVyYXRlZFBoYXNlID0gY29t
YmluZWRQaGFzZTsKICAgICAgICAgbV9jdXJyZW50TG9nU3RhdGUudG90YWxHZW5lcmF0ZWRPZmZz
ZXQgKz0gZXZlbnQuZGVsdGEoKS5oZWlnaHQoKTsKLSAgICB9Ci0gICAgcHVzaExvZ0VudHJ5KCk7
CisgICAgICAgIHB1c2hMb2dFbnRyeShjb21iaW5lZFBoYXNlLCBjb21iaW5lZFBoYXNlKTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgcHVzaExvZ0VudHJ5KDAsIGNvbWJpbmVkUGhhc2UpOworICAgIAog
I2VuZGlmCiAKICAgICAvLyBDb25zdW1lIGFueSBub3JtYWwgbW9tZW50dW0gZXZlbnRzIHdoaWxl
IHdlJ3JlIGluc2lkZSBhIHN5bnRoZXRpYyBtb21lbnR1bSBnZXN0dXJlLgpAQCAtMTUyLDYgKzE1
MiwxMCBAQCB2b2lkIE1vbWVudHVtRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFN5bnRoZXRpY01v
bWVudHVtRXZlbnQoV2ViV2hlZWxFdmVudDo6UGhhcwogCiAgICAgYXV0byBhcHBLaXRTY3JvbGxN
dWx0aXBsaWVyID0gYXBwS2l0U2Nyb2xsTXVsdGlwbGllckZvckV2ZW50KCptX2N1cnJlbnRHZXN0
dXJlLmluaXRpYXRpbmdFdmVudCk7CiAgICAgYXV0byBhcHBLaXRBY2NlbGVyYXRlZERlbHRhID0g
ZGVsdGEgKiBhcHBLaXRTY3JvbGxNdWx0aXBsaWVyOworCisgICAgaWYgKHBoYXNlID09IFdlYldo
ZWVsRXZlbnQ6OlBoYXNlQ2hhbmdlZCAmJiBhcHBLaXRBY2NlbGVyYXRlZERlbHRhLmlzWmVybygp
KQorICAgICAgICByZXR1cm47CisKICAgICBhdXRvIHdoZWVsVGlja3MgPSBhcHBLaXRBY2NlbGVy
YXRlZERlbHRhIC8gV2ViQ29yZTo6U2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpOwogICAg
IGF1dG8gdGltZSA9IFdhbGxUaW1lOjpub3coKTsKIApAQCAtMTc3LDkgKzE4MSw4IEBAIHZvaWQg
TW9tZW50dW1FdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoU3ludGhldGljTW9tZW50dW1FdmVudChX
ZWJXaGVlbEV2ZW50OjpQaGFzCiAgICAgbV9kaXNwYXRjaGVyLmludGVybmFsV2hlZWxFdmVudCht
X2N1cnJlbnRHZXN0dXJlLnBhZ2VJZGVudGlmaWVyLCBzeW50aGV0aWNFdmVudCwgbV9sYXN0UnVi
YmVyQmFuZGFibGVFZGdlcywgRXZlbnREaXNwYXRjaGVyOjpXaGVlbEV2ZW50T3JpZ2luOjpNb21l
bnR1bUV2ZW50RGlzcGF0Y2hlcik7CiAKICNpZiBFTkFCTEUoTU9NRU5UVU1fRVZFTlRfRElTUEFU
Q0hFUl9URU1QT1JBUllfTE9HR0lORykKLSAgICBtX2N1cnJlbnRMb2dTdGF0ZS5sYXRlc3RHZW5l
cmF0ZWRQaGFzZSA9IHBoYXNlOwogICAgIG1fY3VycmVudExvZ1N0YXRlLnRvdGFsR2VuZXJhdGVk
T2Zmc2V0ICs9IGFwcEtpdEFjY2VsZXJhdGVkRGVsdGEuaGVpZ2h0KCk7Ci0gICAgcHVzaExvZ0Vu
dHJ5KCk7CisgICAgcHVzaExvZ0VudHJ5KHBoYXNlLCAwKTsKICNlbmRpZgogfQogCkBAIC0yOTQs
MTUgKzI5NywxOCBAQCB2b2lkIE1vbWVudHVtRXZlbnREaXNwYXRjaGVyOjpwYWdlU2NyZWVuRGlk
Q2hhbmdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRAogCiBXZWJDb3JlOjpGbG9hdFNp
emUgTW9tZW50dW1FdmVudERpc3BhdGNoZXI6OmNvbnN1bWVEZWx0YUZvckN1cnJlbnRUaW1lKCkK
IHsKLSAgICBhdXRvIGFuaW1hdGlvblRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKSAtIG1fY3Vy
cmVudEdlc3R1cmUuc3RhcnRUaW1lOwotICAgIGF1dG8gZGVzaXJlZE9mZnNldCA9IG9mZnNldEF0
VGltZShhbmltYXRpb25UaW1lKTsKKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgZGVsdGE7CiAKLSNp
ZiAhRU5BQkxFKE1PTUVOVFVNX0VWRU5UX0RJU1BBVENIRVJfUFJFTUFUVVJFX1JPVU5ESU5HKQot
ICAgIC8vIEludGVudGlvbmFsIGRlbHRhIHJvdW5kaW5nIChidXQgYXQgdGhlIGVuZCEpLgotICAg
IFdlYkNvcmU6OkZsb2F0U2l6ZSBkZWx0YSA9IHJvdW5kZWRJbnRTaXplKGRlc2lyZWRPZmZzZXQg
LSBtX2N1cnJlbnRHZXN0dXJlLmN1cnJlbnRPZmZzZXQpOwotI2Vsc2UKLSAgICBXZWJDb3JlOjpG
bG9hdFNpemUgZGVsdGEgPSBkZXNpcmVkT2Zmc2V0IC0gbV9jdXJyZW50R2VzdHVyZS5jdXJyZW50
T2Zmc2V0OwotI2VuZGlmCisgICAgYXV0byBhbmltYXRpb25UaW1lID0gTW9ub3RvbmljVGltZTo6
bm93KCkgLSBtX2N1cnJlbnRHZXN0dXJlLnN0YXJ0VGltZTsKKyAgICBpZiAoYW5pbWF0aW9uVGlt
ZSA8IG1fY3VycmVudEdlc3R1cmUudGFpbFN0YXJ0VGltZSkgeworICAgICAgICBhdXRvIGRlc2ly
ZWRPZmZzZXQgPSBvZmZzZXRBdFRpbWUoYW5pbWF0aW9uVGltZSk7CisgICAgICAgIGRlbHRhID0g
cm91bmRlZEludFNpemUoZGVzaXJlZE9mZnNldCAtIG1fY3VycmVudEdlc3R1cmUuY3VycmVudE9m
ZnNldCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKG1fY3VycmVudEdlc3R1cmUuY3VycmVu
dFRhaWxEZWx0YUluZGV4IDwgbV9jdXJyZW50R2VzdHVyZS50YWlsRGVsdGFUYWJsZS5zaXplKCkp
CisgICAgICAgICAgICBkZWx0YSA9IC1tX2N1cnJlbnRHZXN0dXJlLnRhaWxEZWx0YVRhYmxlW21f
Y3VycmVudEdlc3R1cmUuY3VycmVudFRhaWxEZWx0YUluZGV4KytdOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBkZWx0YSA9IHsgfTsKKyAgICB9CiAKICAgICBtX2N1cnJlbnRHZXN0dXJlLmN1
cnJlbnRPZmZzZXQgKz0gZGVsdGE7CiAKQEAgLTM2MywyNyArMzY5LDExMSBAQCB2b2lkIE1vbWVu
dHVtRXZlbnREaXNwYXRjaGVyOjpkaWRSZWNlaXZlU2Nyb2xsRXZlbnQoY29uc3QgV2ViV2hlZWxF
dmVudCYgZXZlbnQpCiAKIHZvaWQgTW9tZW50dW1FdmVudERpc3BhdGNoZXI6OmJ1aWxkT2Zmc2V0
VGFibGVXaXRoSW5pdGlhbERlbHRhKFdlYkNvcmU6OkZsb2F0U2l6ZSBpbml0aWFsVW5hY2NlbGVy
YXRlZERlbHRhKQogewotI2lmIEVOQUJMRShNT01FTlRVTV9FVkVOVF9ESVNQQVRDSEVSX1BSRU1B
VFVSRV9ST1VORElORykKLSAgICBtX2N1cnJlbnRHZXN0dXJlLmNhcnJ5T2Zmc2V0ID0geyB9Owot
I2VuZGlmCiAgICAgbV9jdXJyZW50R2VzdHVyZS5vZmZzZXRUYWJsZS5jbGVhcigpOwogCiAgICAg
V2ViQ29yZTo6RmxvYXRTaXplIGFjY3VtdWxhdGVkT2Zmc2V0OwogICAgIFdlYkNvcmU6OkZsb2F0
U2l6ZSB1bmFjY2VsZXJhdGVkRGVsdGEgPSBpbml0aWFsVW5hY2NlbGVyYXRlZERlbHRhOwogCisg
ICAgYm9vbCBpblRhaWwgPSBmYWxzZTsKKworICAgIGZsb2F0IHBoeXNpY2FsQ3VydmVNdWx0aXBs
aWVyID0gaWRlYWxDdXJ2ZUZyYW1lUmF0ZSAvIG1fY3VycmVudEdlc3R1cmUuYWNjZWxlcmF0aW9u
Q3VydmUtPmZyYW1lUmF0ZSgpOworCisgICAgV2ViQ29yZTo6RmxvYXRTaXplIHRhaWxDYXJyeTsK
KwogICAgIGRvIHsKICAgICAgICAgV2ViQ29yZTo6RmxvYXRTaXplIGFjY2VsZXJhdGVkRGVsdGE7
CiAgICAgICAgIHN0ZDo6dGllKHVuYWNjZWxlcmF0ZWREZWx0YSwgYWNjZWxlcmF0ZWREZWx0YSkg
PSBjb21wdXRlTmV4dERlbHRhKHVuYWNjZWxlcmF0ZWREZWx0YSk7CiAKKyAgICAgICAgY29uc3Qg
ZmxvYXQgdGFpbFN0YXJ0VW5hY2NlbGVyYXRlZERlbHRhID0gNi5mOworICAgICAgICBpZiAoIWlu
VGFpbCAmJiBzdGQ6OmFicyh1bmFjY2VsZXJhdGVkRGVsdGEud2lkdGgoKSkgPCB0YWlsU3RhcnRV
bmFjY2VsZXJhdGVkRGVsdGEgJiYgc3RkOjphYnModW5hY2NlbGVyYXRlZERlbHRhLmhlaWdodCgp
KSA8IHRhaWxTdGFydFVuYWNjZWxlcmF0ZWREZWx0YSkgeworICAgICAgICAgICAgaW5UYWlsID0g
dHJ1ZTsKKyAgICAgICAgICAgIG1fY3VycmVudEdlc3R1cmUudGFpbFN0YXJ0VGltZSA9IGlkZWFs
Q3VydmVGcmFtZUludGVydmFsICogbV9jdXJyZW50R2VzdHVyZS5vZmZzZXRUYWJsZS5zaXplKCk7
CisgICAgICAgIH0KKworICAgICAgICBpZiAoaW5UYWlsKSB7CisgICAgICAgICAgICBhdXRvIHRh
aWxEZWx0YSA9IGFjY2VsZXJhdGVkRGVsdGEgKiBwaHlzaWNhbEN1cnZlTXVsdGlwbGllcjsKKyAg
ICAgICAgICAgIGF1dG8gZGVsdGFXaXRoQ2FycnkgPSB0YWlsRGVsdGEgKyB0YWlsQ2Fycnk7Cisg
ICAgICAgICAgICBhdXRvIHF1YW50aXplZERlbHRhID0gcm91bmRlZEludFNpemUoZGVsdGFXaXRo
Q2FycnkpOworICAgICAgICAgICAgdGFpbENhcnJ5ID0gZGVsdGFXaXRoQ2FycnkgLSBxdWFudGl6
ZWREZWx0YTsKKyAgICAgICAgICAgIG1fY3VycmVudEdlc3R1cmUudGFpbERlbHRhVGFibGUuYXBw
ZW5kKHF1YW50aXplZERlbHRhKTsKKyAgICAgICAgfQorCiAgICAgICAgIGFjY3VtdWxhdGVkT2Zm
c2V0ICs9IGFjY2VsZXJhdGVkRGVsdGE7CiAgICAgICAgIG1fY3VycmVudEdlc3R1cmUub2Zmc2V0
VGFibGUuYXBwZW5kKGFjY3VtdWxhdGVkT2Zmc2V0KTsKKwogICAgIH0gd2hpbGUgKHN0ZDo6YWJz
KHVuYWNjZWxlcmF0ZWREZWx0YS53aWR0aCgpKSA+IDAuNSB8fCBzdGQ6OmFicyh1bmFjY2VsZXJh
dGVkRGVsdGEuaGVpZ2h0KCkpID4gMC41KTsKIAorICAgIGVxdWFsaXplVGFpbEdhcHMoKTsKKwog
I2lmIEVOQUJMRShNT01FTlRVTV9FVkVOVF9ESVNQQVRDSEVSX1RFTVBPUkFSWV9MT0dHSU5HKQog
ICAgIFJFTEVBU0VfTE9HKFNjcm9sbEFuaW1hdGlvbnMsICJNb21lbnR1bUV2ZW50RGlzcGF0Y2hl
ciBidWlsdCB0YWJsZSB3aXRoICVsZCBmcmFtZXMsIGluaXRpYWwgZGVsdGEgJWYgJWYsIGRpc3Rh
bmNlICVmICVmIChpbml0aWFsIGRlbHRhIGZyb20gbGFzdCBjaGFuZ2VkIGV2ZW50ICVmICVmKSIs
IG1fY3VycmVudEdlc3R1cmUub2Zmc2V0VGFibGUuc2l6ZSgpLCBpbml0aWFsVW5hY2NlbGVyYXRl
ZERlbHRhLndpZHRoKCksIGluaXRpYWxVbmFjY2VsZXJhdGVkRGVsdGEuaGVpZ2h0KCksIGFjY3Vt
dWxhdGVkT2Zmc2V0LndpZHRoKCksIGFjY3VtdWxhdGVkT2Zmc2V0LmhlaWdodCgpLCBtX2xhc3RB
Y3RpdmVQaGFzZURlbHRhLndpZHRoKCksIG1fbGFzdEFjdGl2ZVBoYXNlRGVsdGEuaGVpZ2h0KCkp
OwogI2VuZGlmCiB9CiAKK3ZvaWQgTW9tZW50dW1FdmVudERpc3BhdGNoZXI6OmVxdWFsaXplVGFp
bEdhcHMoKQoreworICAgIGF1dG8mIHRhYmxlID0gbV9jdXJyZW50R2VzdHVyZS50YWlsRGVsdGFU
YWJsZTsKKyAgICBzaXplX3QgaW5pdGlhbFRhYmxlU2l6ZSA9IHRhYmxlLnNpemUoKTsKKworICAg
IFZlY3RvcjxmbG9hdD4gZGVsdGFzWzJdOworICAgIGRlbHRhc1swXS5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KGluaXRpYWxUYWJsZVNpemUpOworICAgIGRlbHRhc1sxXS5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KGluaXRpYWxUYWJsZVNpemUpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBp
bml0aWFsVGFibGVTaXplOyBpKyspIHsKKyAgICAgICAgZGVsdGFzWzBdLnVuY2hlY2tlZEFwcGVu
ZCh0YWJsZVtpXS53aWR0aCgpKTsKKyAgICAgICAgZGVsdGFzWzFdLnVuY2hlY2tlZEFwcGVuZCh0
YWJsZVtpXS5oZWlnaHQoKSk7CisgICAgfQorICAgIAorICAgIGlmICh1bnNpZ25lZCBmaXJzdFpl
cm9JbmRleCA9IGRlbHRhc1swXS5maW5kKDApKQorICAgICAgICBzdGQ6OnNvcnQoZGVsdGFzWzBd
LmJlZ2luKCksIHN0ZDo6bmV4dChkZWx0YXNbMF0uYmVnaW4oKSwgZmlyc3RaZXJvSW5kZXgpKTsK
KyAgICBpZiAodW5zaWduZWQgZmlyc3RaZXJvSW5kZXggPSBkZWx0YXNbMV0uZmluZCgwKSkKKyAg
ICAgICAgc3RkOjpzb3J0KGRlbHRhc1sxXS5iZWdpbigpLCBzdGQ6Om5leHQoZGVsdGFzWzFdLmJl
Z2luKCksIGZpcnN0WmVyb0luZGV4KSk7CisKKyAgICB0eXBlZGVmIHVuc2lnbmVkIEdhcFNpemVb
Ml07CisgICAgR2FwU2l6ZSBtaW5pbXVtR2FwID0geyAwLCAwIH07CisgICAgR2FwU2l6ZSBjdXJy
ZW50R2FwID0geyAwLCAwIH07CisgICAgR2FwU2l6ZSByZW1haW5pbmdHYXBUb0dlbmVyYXRlID0g
eyAwLCAwIH07CisgICAgdW5zaWduZWQgb3JpZ2luYWxUYWJsZUluZGV4WzJdID0geyAwLCAwIH07
CisKKyAgICBhdXRvIHRha2VOZXh0RGVsdGEgPSBbJl0gKHVpbnQ4X3QgYXhpcykgLT4gZmxvYXQg
eworICAgICAgICBpZiAob3JpZ2luYWxUYWJsZUluZGV4W2F4aXNdID4gaW5pdGlhbFRhYmxlU2l6
ZSkKKyAgICAgICAgICAgIHJldHVybiAwLmY7CisKKyAgICAgICAgYXV0byB2YWx1ZSA9IGRlbHRh
c1theGlzXVtvcmlnaW5hbFRhYmxlSW5kZXhbYXhpc11dOworCisgICAgICAgIC8vIFByb2R1Y2Ug
YSBnYXAgbm8gbWF0dGVyIHdoYXQsIGNvbnN1bWluZyBpdCBmcm9tIHRoZSBvcmlnaW5hbCB0YWJs
ZSBpZiBpdCB3YXMgdGhlcmUuCisgICAgICAgIGlmIChyZW1haW5pbmdHYXBUb0dlbmVyYXRlW2F4
aXNdKSB7CisgICAgICAgICAgICByZW1haW5pbmdHYXBUb0dlbmVyYXRlW2F4aXNdLS07CisgICAg
ICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICAgICAgICAgIG9yaWdpbmFsVGFibGVJbmRleFth
eGlzXSsrOworICAgICAgICAgICAgcmV0dXJuIDAuZjsKKyAgICAgICAgfQorCisgICAgICAgIGlm
ICh2YWx1ZSkgeworICAgICAgICAgICAgbWluaW11bUdhcFtheGlzXSA9IHN0ZDo6bWF4KG1pbmlt
dW1HYXBbYXhpc10sIGN1cnJlbnRHYXBbYXhpc10pOworICAgICAgICAgICAgcmVtYWluaW5nR2Fw
VG9HZW5lcmF0ZVtheGlzXSA9IGN1cnJlbnRHYXBbYXhpc10gLSBtaW5pbXVtR2FwW2F4aXNdOwor
ICAgICAgICAgICAgY3VycmVudEdhcFtheGlzXSA9IDA7CisgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgY3VycmVudEdhcFtheGlzXSsrOworCisgICAgICAgIG9yaWdpbmFsVGFibGVJbmRleFth
eGlzXSsrOworCisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICB9OworCisgICAgc2l6ZV90IGZp
bmFsVGFibGVTaXplID0gMDsKKyAgICB0YWJsZS5zaHJpbmsoMCk7CisKKyAgICB3aGlsZSAob3Jp
Z2luYWxUYWJsZUluZGV4WzBdIDwgaW5pdGlhbFRhYmxlU2l6ZSAmJiBvcmlnaW5hbFRhYmxlSW5k
ZXhbMV0gPCBpbml0aWFsVGFibGVTaXplKSB7CisgICAgICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBk
ZWx0YSh0YWtlTmV4dERlbHRhKDApLCB0YWtlTmV4dERlbHRhKDEpKTsKKyAgICAgICAgdGFibGUu
YXBwZW5kKGRlbHRhKTsKKworICAgICAgICBpZiAoIWRlbHRhLmlzWmVybygpKQorICAgICAgICAg
ICAgZmluYWxUYWJsZVNpemUgPSB0YWJsZS5zaXplKCk7CisgICAgfQorCisgICAgdGFibGUuc2hy
aW5rKGZpbmFsVGFibGVTaXplKTsKK30KKwogc3RhdGljIGZsb2F0IGludGVycG9sYXRlKGZsb2F0
IGEsIGZsb2F0IGIsIGZsb2F0IHQpCiB7CiAgICAgcmV0dXJuIGEgKyB0ICogKGIgLSBhKTsKQEAg
LTQzMywyOCArNTIzLDggQEAgc3RkOjpwYWlyPFdlYkNvcmU6OkZsb2F0U2l6ZSwgV2ViQ29yZTo6
RmxvYXRTaXplPiBNb21lbnR1bUV2ZW50RGlzcGF0Y2hlcjo6Y29tcHUKICAgICBmbG9hdCBkZWNh
eVJhdGUgPSBtb21lbnR1bURlY2F5UmF0ZSh1bmFjY2VsZXJhdGVkRGVsdGEsIGlkZWFsQ3VydmVG
cmFtZUludGVydmFsKTsKICAgICB1bmFjY2VsZXJhdGVkRGVsdGEuc2NhbGUoZGVjYXlSYXRlKTsK
IAotICAgIGF1dG8gcXVhbnRpemVkVW5hY2NlbGVyYXRlZERlbHRhID0gdW5hY2NlbGVyYXRlZERl
bHRhOwotCi0jaWYgRU5BQkxFKE1PTUVOVFVNX0VWRU5UX0RJU1BBVENIRVJfUFJFTUFUVVJFX1JP
VU5ESU5HKQotICAgIC8vIFJvdW5kIGFuZCBjYXJyeS4KLSAgICBpbnQzMl90IHF1YW50aXplZFgg
PSBzdGQ6OnJvdW5kKHF1YW50aXplZFVuYWNjZWxlcmF0ZWREZWx0YS53aWR0aCgpKTsKLSAgICBp
bnQzMl90IHF1YW50aXplZFkgPSBzdGQ6OnJvdW5kKHF1YW50aXplZFVuYWNjZWxlcmF0ZWREZWx0
YS5oZWlnaHQoKSk7Ci0KLSAgICBpZiAoc3RkOjphYnMocXVhbnRpemVkVW5hY2NlbGVyYXRlZERl
bHRhLndpZHRoKCkpIDwgMSAmJiBzdGQ6OmFicyhxdWFudGl6ZWRVbmFjY2VsZXJhdGVkRGVsdGEu
aGVpZ2h0KCkpIDwgMSkgewotICAgICAgICBmbG9hdCBkZWx0YVhJbmNsdWRpbmdDYXJyeSA9IHF1
YW50aXplZFVuYWNjZWxlcmF0ZWREZWx0YS53aWR0aCgpICsgbV9jdXJyZW50R2VzdHVyZS5jYXJy
eU9mZnNldC53aWR0aCgpOwotICAgICAgICBmbG9hdCBkZWx0YVlJbmNsdWRpbmdDYXJyeSA9IHF1
YW50aXplZFVuYWNjZWxlcmF0ZWREZWx0YS5oZWlnaHQoKSArIG1fY3VycmVudEdlc3R1cmUuY2Fy
cnlPZmZzZXQuaGVpZ2h0KCk7Ci0KLSAgICAgICAgLy8gSW50ZW50aW9uYWwgdHJ1bmNhdGlvbi4K
LSAgICAgICAgcXVhbnRpemVkWCA9IGRlbHRhWEluY2x1ZGluZ0NhcnJ5OwotICAgICAgICBxdWFu
dGl6ZWRZID0gZGVsdGFZSW5jbHVkaW5nQ2Fycnk7Ci0gICAgICAgIG1fY3VycmVudEdlc3R1cmUu
Y2FycnlPZmZzZXQgPSB7IGRlbHRhWEluY2x1ZGluZ0NhcnJ5IC0gcXVhbnRpemVkWCwgZGVsdGFZ
SW5jbHVkaW5nQ2FycnkgLSBxdWFudGl6ZWRZIH07Ci0gICAgfQotCi0gICAgcXVhbnRpemVkVW5h
Y2NlbGVyYXRlZERlbHRhID0geyBzdGF0aWNfY2FzdDxmbG9hdD4ocXVhbnRpemVkWCksIHN0YXRp
Y19jYXN0PGZsb2F0PihxdWFudGl6ZWRZKSB9OwotI2VuZGlmCi0KICAgICAvLyBUaGUgZGVsdGEg
cXVldWUgb3BlcmF0ZXMgb24gcHJlLWFjY2VsZXJhdGlvbiBkZWx0YXMsIHNvIGluc2VydCB0aGUg
bmV3IGV2ZW50ICpiZWZvcmUqIGFjY2VsZXJhdGluZy4KLSAgICBkaWRSZWNlaXZlU2Nyb2xsRXZl
bnRXaXRoSW50ZXJ2YWwocXVhbnRpemVkVW5hY2NlbGVyYXRlZERlbHRhLCBpZGVhbEN1cnZlRnJh
bWVJbnRlcnZhbCk7CisgICAgZGlkUmVjZWl2ZVNjcm9sbEV2ZW50V2l0aEludGVydmFsKHVuYWNj
ZWxlcmF0ZWREZWx0YSwgaWRlYWxDdXJ2ZUZyYW1lSW50ZXJ2YWwpOwogCiAgICAgYXV0byBhY2Nl
bGVyYXRlQXhpcyA9IFsmXSAoSGlzdG9yaWNhbERlbHRhcyYgZGVsdGFzLCBmbG9hdCB2YWx1ZSkg
ewogICAgICAgICBmbG9hdCB0b3RhbERlbHRhID0gMDsKQEAgLTQ5OSw4ICs1NjksOCBAQCBzdGQ6
OnBhaXI8V2ViQ29yZTo6RmxvYXRTaXplLCBXZWJDb3JlOjpGbG9hdFNpemU+IE1vbWVudHVtRXZl
bnREaXNwYXRjaGVyOjpjb21wdQogICAgIH07CiAKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgYWNj
ZWxlcmF0ZWREZWx0YSgKLSAgICAgICAgYWNjZWxlcmF0ZUF4aXMobV9kZWx0YUhpc3RvcnlYLCBx
dWFudGl6ZWRVbmFjY2VsZXJhdGVkRGVsdGEud2lkdGgoKSksCi0gICAgICAgIGFjY2VsZXJhdGVB
eGlzKG1fZGVsdGFIaXN0b3J5WSwgcXVhbnRpemVkVW5hY2NlbGVyYXRlZERlbHRhLmhlaWdodCgp
KQorICAgICAgICBhY2NlbGVyYXRlQXhpcyhtX2RlbHRhSGlzdG9yeVgsIHVuYWNjZWxlcmF0ZWRE
ZWx0YS53aWR0aCgpKSwKKyAgICAgICAgYWNjZWxlcmF0ZUF4aXMobV9kZWx0YUhpc3RvcnlZLCB1
bmFjY2VsZXJhdGVkRGVsdGEuaGVpZ2h0KCkpCiAgICAgKTsKIAogI2lmIEVOQUJMRShNT01FTlRV
TV9FVkVOVF9ESVNQQVRDSEVSX1RFTVBPUkFSWV9MT0dHSU5HKQpAQCAtNTEyLDkgKzU4MiwxMSBA
QCBzdGQ6OnBhaXI8V2ViQ29yZTo6RmxvYXRTaXplLCBXZWJDb3JlOjpGbG9hdFNpemU+IE1vbWVu
dHVtRXZlbnREaXNwYXRjaGVyOjpjb21wdQogCiAjaWYgRU5BQkxFKE1PTUVOVFVNX0VWRU5UX0RJ
U1BBVENIRVJfVEVNUE9SQVJZX0xPR0dJTkcpCiAKLXZvaWQgTW9tZW50dW1FdmVudERpc3BhdGNo
ZXI6OnB1c2hMb2dFbnRyeSgpCit2b2lkIE1vbWVudHVtRXZlbnREaXNwYXRjaGVyOjpwdXNoTG9n
RW50cnkodWludDMyX3QgZ2VuZXJhdGVkUGhhc2UsIHVpbnQzMl90IGV2ZW50UGhhc2UpCiB7CiAg
ICAgbV9jdXJyZW50TG9nU3RhdGUudGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOworICAgIG1f
Y3VycmVudExvZ1N0YXRlLmdlbmVyYXRlZFBoYXNlID0gZ2VuZXJhdGVkUGhhc2U7CisgICAgbV9j
dXJyZW50TG9nU3RhdGUuZXZlbnRQaGFzZSA9IGV2ZW50UGhhc2U7CiAgICAgbV9sb2cuYXBwZW5k
KG1fY3VycmVudExvZ1N0YXRlKTsKIH0KIApAQCAtNTI5LDcgKzYwMSw3IEBAIHZvaWQgTW9tZW50
dW1FdmVudERpc3BhdGNoZXI6OmZsdXNoTG9nKCkKICAgICBhdXRvIHN0YXJ0VGltZSA9IG1fbG9n
WzBdLnRpbWU7CiAgICAgUkVMRUFTRV9MT0coU2Nyb2xsQW5pbWF0aW9ucywgIk1vbWVudHVtRXZl
bnREaXNwYXRjaGVyIGV2ZW50IGxvZzogdGltZSxnZW5lcmF0ZWRPZmZzZXQsZ2VuZXJhdGVkUGhh
c2UsZXZlbnRPZmZzZXQsZXZlbnRQaGFzZSIpOwogICAgIGZvciAoY29uc3QgYXV0byYgZW50cnkg
OiBtX2xvZykKLSAgICAgICAgUkVMRUFTRV9MT0coU2Nyb2xsQW5pbWF0aW9ucywgIk1vbWVudHVt
RXZlbnREaXNwYXRjaGVyIGV2ZW50IGxvZzogJWYsJWYsJWQsJWYsJWQiLCAoZW50cnkudGltZSAt
IHN0YXJ0VGltZSkuc2Vjb25kcygpLCBlbnRyeS50b3RhbEdlbmVyYXRlZE9mZnNldCwgZW50cnku
bGF0ZXN0R2VuZXJhdGVkUGhhc2UsIGVudHJ5LnRvdGFsRXZlbnRPZmZzZXQsIGVudHJ5LmxhdGVz
dEV2ZW50UGhhc2UpOworICAgICAgICBSRUxFQVNFX0xPRyhTY3JvbGxBbmltYXRpb25zLCAiTW9t
ZW50dW1FdmVudERpc3BhdGNoZXIgZXZlbnQgbG9nOiAlZiwlZiwlZCwlZiwlZCIsIChlbnRyeS50
aW1lIC0gc3RhcnRUaW1lKS5zZWNvbmRzKCksIGVudHJ5LnRvdGFsR2VuZXJhdGVkT2Zmc2V0LCBl
bnRyeS5nZW5lcmF0ZWRQaGFzZSwgZW50cnkudG90YWxFdmVudE9mZnNldCwgZW50cnkuZXZlbnRQ
aGFzZSk7CiAKICAgICBtX2xvZy5jbGVhcigpOwogICAgIG1fY3VycmVudExvZ1N0YXRlID0geyB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvTW9tZW50dW1F
dmVudERpc3BhdGNoZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL01vbWVu
dHVtRXZlbnREaXNwYXRjaGVyLmgKaW5kZXggZTk5YzYwMGExZDI4MWYwYjVkNTllOTlhYTMwMjAw
YTI3YjI1MjRjMC4uOTNmZDM0N2M0NTVlNGNlNTg1ZTdkZDg3OTJhMjA5MDRjZmYzNzExNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvTW9tZW50dW1FdmVudERp
c3BhdGNoZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Nb21lbnR1
bUV2ZW50RGlzcGF0Y2hlci5oCkBAIC0yNyw4ICsyNyw2IEBACiAKICNpZiBFTkFCTEUoTU9NRU5U
VU1fRVZFTlRfRElTUEFUQ0hFUikKIAotLy8gRklYTUU6IFJlbW92ZSB0aGlzIG9uY2Ugd2UgZGVj
aWRlIHdoaWNoIHZlcnNpb24gd2Ugd2FudC4KLSNkZWZpbmUgRU5BQkxFX01PTUVOVFVNX0VWRU5U
X0RJU1BBVENIRVJfUFJFTUFUVVJFX1JPVU5ESU5HIDAKICNkZWZpbmUgRU5BQkxFX01PTUVOVFVN
X0VWRU5UX0RJU1BBVENIRVJfVEVNUE9SQVJZX0xPR0dJTkcgMQogCiAjaW5jbHVkZSAiRGlzcGxh
eUxpbmtPYnNlcnZlcklELmgiCkBAIC04MCw2ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
aXNwYXRjaFN5bnRoZXRpY01vbWVudHVtRXZlbnQoV2ViV2hlZWxFdmVudDo6UGhhc2UsIFdlYkNv
cmU6OkZsb2F0U2l6ZSBkZWx0YSk7CiAKICAgICB2b2lkIGJ1aWxkT2Zmc2V0VGFibGVXaXRoSW5p
dGlhbERlbHRhKFdlYkNvcmU6OkZsb2F0U2l6ZSk7CisgICAgdm9pZCBlcXVhbGl6ZVRhaWxHYXBz
KCk7CiAKICAgICAvLyBPbmNlIGNvbnN1bWVkLCB0aGlzIGRlbHRhICptdXN0KiBiZSBkaXNwYXRj
aGVkIGluIGFuIGV2ZW50LgogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBjb25zdW1lRGVsdGFGb3JD
dXJyZW50VGltZSgpOwpAQCAtOTEsNyArOTAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVj
ZWl2ZVNjcm9sbEV2ZW50KGNvbnN0IFdlYldoZWVsRXZlbnQmKTsKIAogI2lmIEVOQUJMRShNT01F
TlRVTV9FVkVOVF9ESVNQQVRDSEVSX1RFTVBPUkFSWV9MT0dHSU5HKQotICAgIHZvaWQgcHVzaExv
Z0VudHJ5KCk7CisgICAgdm9pZCBwdXNoTG9nRW50cnkodWludDMyX3QgZ2VuZXJhdGVkUGhhc2Us
IHVpbnQzMl90IGV2ZW50UGhhc2UpOwogICAgIHZvaWQgZmx1c2hMb2coKTsKIAogICAgIFdlYkNv
cmU6OkZsb2F0U2l6ZSBtX2xhc3RBY3RpdmVQaGFzZURlbHRhOwpAQCAtMTAyLDggKzEwMSw4IEBA
IHByaXZhdGU6CiAgICAgICAgIGZsb2F0IHRvdGFsR2VuZXJhdGVkT2Zmc2V0IHsgMCB9OwogICAg
ICAgICBmbG9hdCB0b3RhbEV2ZW50T2Zmc2V0IHsgMCB9OwogCi0gICAgICAgIHVpbnQzMl90IGxh
dGVzdEdlbmVyYXRlZFBoYXNlIHsgMCB9OwotICAgICAgICB1aW50MzJfdCBsYXRlc3RFdmVudFBo
YXNlIHsgMCB9OworICAgICAgICB1aW50MzJfdCBnZW5lcmF0ZWRQaGFzZSB7IDAgfTsKKyAgICAg
ICAgdWludDMyX3QgZXZlbnRQaGFzZSB7IDAgfTsKICAgICB9OwogICAgIExvZ0VudHJ5IG1fY3Vy
cmVudExvZ1N0YXRlOwogICAgIFZlY3RvcjxMb2dFbnRyeT4gbV9sb2c7CkBAIC0xMzMsNyArMTMy
LDEwIEBAIHByaXZhdGU6CiAgICAgICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBjdXJyZW50T2Zmc2V0
OwogICAgICAgICBNb25vdG9uaWNUaW1lIHN0YXJ0VGltZTsKIAotICAgICAgICBWZWN0b3I8V2Vi
Q29yZTo6RmxvYXRTaXplPiBvZmZzZXRUYWJsZTsKKyAgICAgICAgVmVjdG9yPFdlYkNvcmU6OkZs
b2F0U2l6ZT4gb2Zmc2V0VGFibGU7IC8vIEFsd2F5cyBhdCA2MEh6IGludGVydmFscy4KKyAgICAg
ICAgVmVjdG9yPFdlYkNvcmU6OkZsb2F0U2l6ZT4gdGFpbERlbHRhVGFibGU7IC8vIEFsd2F5cyBh
dCBldmVudCBkaXNwYXRjaCBpbnRlcnZhbHMuCisgICAgICAgIFNlY29uZHMgdGFpbFN0YXJ0VGlt
ZTsKKyAgICAgICAgdW5zaWduZWQgY3VycmVudFRhaWxEZWx0YUluZGV4IHsgMCB9OwogCiAjaWYg
RU5BQkxFKE1PTUVOVFVNX0VWRU5UX0RJU1BBVENIRVJfVEVNUE9SQVJZX0xPR0dJTkcpCiAgICAg
ICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBhY2N1bXVsYXRlZEV2ZW50T2Zmc2V0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446328</attachid>
            <date>2021-12-08 00:34:01 -0800</date>
            <delta_ts>2021-12-08 00:38:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233993-20211208003400.patch</filename>
            <type>text/plain</type>
            <size>16520</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU5YTI0MTE5MWVjMmJkMDhl
ODk5MTE0YjM2MjI1MTEyYzViMmU2MDAuLjJlZGM5MjVhZjNlOWViZmU4NzQzNDRlNDUzZjQwN2Nm
ZmY0M2EwNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMjEtMTItMDcgIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW9tZW50dW0gRXZlbnQg
RGlzcGF0Y2hlcjogTW9tZW50dW0gdGFpbCBzaG91bGQgaGF2ZSBtb250b25pY2FsbHkgZGVjcmVh
c2luZyBkZWx0YXMgYW5kIHRhaWwgZ2FwcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjMzOTkzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NjExODM2
Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9Nb21lbnR1bUV2ZW50RGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok1vbWVudHVtRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFN5bnRoZXRpY01vbWVudHVt
RXZlbnQpOgorICAgICAgICBBdm9pZCBwb2ludGxlc3NseSBkaXNwYXRjaGluZyBtb21lbnR1bSBj
aGFuZ2VkIGV2ZW50cyB3aXRoIGVtcHR5IGRlbHRhczsKKyAgICAgICAganVzdCBza2lwIHRoZSBm
cmFtZS4KKworICAgICAgICAoV2ViS2l0OjpNb21lbnR1bUV2ZW50RGlzcGF0Y2hlcjo6Y29uc3Vt
ZURlbHRhRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAoV2ViS2l0OjpNb21lbnR1bUV2ZW50RGlz
cGF0Y2hlcjo6YnVpbGRPZmZzZXRUYWJsZVdpdGhJbml0aWFsRGVsdGEpOgorICAgICAgICAoV2Vi
S2l0OjpNb21lbnR1bUV2ZW50RGlzcGF0Y2hlcjo6Y29tcHV0ZU5leHREZWx0YSk6CisgICAgICAg
IEluIG9yZGVyIHRvIGF2b2lkIHZpc3VhbCBzdHV0dGVyIGR1ZSB0byBpbnRlZ3JhbCByb3VuZGlu
ZyBvZiB0aGUKKyAgICAgICAgZGVsdGFzIHdlIGRpc3BhdGNoIGluIHRoZSBtb21lbnR1bSBwaGFz
ZSwgc3dpdGNoIHRvIGEgdGFibGUgb2YKKyAgICAgICAgZGVsdGFzIGluc3RlYWQgb2YgaW50ZXJw
b2xhdGluZyBhbG9uZyB0aGUgb2Zmc2V0IGN1cnZlIGR1cmluZyB0aGUKKyAgICAgICAgdGFpbCBl
bmQgb2YgdGhlIGFuaW1hdGlvbiAod2hlbiB0aGUgcm91bmRpbmcgbWFrZXMgdXAgYSBsYXJnZQor
ICAgICAgICBwcm9wb3J0aW9uIG9mIGVhY2ggZGVsdGEpLgorCisgICAgICAgIChXZWJLaXQ6Ok1v
bWVudHVtRXZlbnREaXNwYXRjaGVyOjplcXVhbGl6ZVRhaWxHYXBzKToKKyAgICAgICAgU29ydCB0
aGUgZGVsdGFzIHVwIHVudGlsIHRoZSBmaXJzdCB6ZXJvIHRvIGVuc3VyZSBhIGxhY2sgb2YgdW5l
eHBlY3RlZAorICAgICAgICBwZXJjZXB0dWFsIGFjY2VsZXJhdGlvbiwgYW5kIHRoZW4gaW5qZWN0
IHNraXBwZWQgZnJhbWVzIGluIG9yZGVyIHRvCisgICAgICAgIGVuc3VyZSB0aGF0IGZyYW1lcyB0
aGF0IGhhdmUgZWZmZWN0aXZlIHNjcm9sbCBtb3ZlbWVudCAobm9uLXplcm8gZGVsdGFzKQorICAg
ICAgICBhcmUgYWx3YXlzIHNwYWNlZCBlcXVhbGx5LW9yLWZ1cnRoZXIgYXBhcnQgdGhhbiBlYXJs
aWVyIG9uZXMsIGJ1dAorICAgICAgICBuZXZlciBjbG9zZXIgdG9nZXRoZXIgKHdoaWNoLCBhZ2Fp
biwgd291bGQgYmUgcGVyY2lldmVkIGFzIGFjY2VsZXJhdGlvbikuCisKKyAgICAgICAgKFdlYktp
dDo6TW9tZW50dW1FdmVudERpc3BhdGNoZXI6OmhhbmRsZVdoZWVsRXZlbnQpOgorICAgICAgICAo
V2ViS2l0OjpNb21lbnR1bUV2ZW50RGlzcGF0Y2hlcjo6cHVzaExvZ0VudHJ5KToKKyAgICAgICAg
KFdlYktpdDo6TW9tZW50dW1FdmVudERpc3BhdGNoZXI6OmZsdXNoTG9nKToKKyAgICAgICAgTGFz
dGx5LCBhZGp1c3Qgc29tZSBsb2dnaW5nIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHRlbGwgd2hpY2gg
cm93IGluCisgICAgICAgIHRoZSBvdXRwdXQgY29ycmVzcG9uZHMgdG8gYW4gZXZlbnQgZGVsdGEg
b3IgZ2VuZXJhdGVkIGRlbHRhLCBzbyBpdCdzCisgICAgICAgIGVhc2llciB0byBmaW5kIHNraXBw
ZWQgZnJhbWVzLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Nb21lbnR1bUV2ZW50RGlz
cGF0Y2hlci5oOgorCiAyMDIxLTEyLTA2ICBQZXIgQXJuZSAgPHB2b2xsYW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFtpT1NdIFJlbW92ZSBtYWNoIHNlcnZpY2UgZXh0ZW5zaW9ucyBmb3IgdGhlIFdl
YkNvbnRlbnQgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvTW9tZW50dW1FdmVudERpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvTW9tZW50dW1FdmVudERpc3BhdGNoZXIuY3BwCmluZGV4IDQ3OTk1ODdiNjkx
OWZlZDJmOTM4YjgyODY4ZWJmYjdlN2I2YjlhOWQuLjc2ZjkxZmY1MWQ5N2E0NGU1MTJhNmE1ZTZk
YjM3ZWNlZDViYTMzN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL01vbWVudHVtRXZlbnREaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Nb21lbnR1bUV2ZW50RGlzcGF0Y2hlci5jcHAKQEAgLTExMywxNSArMTEz
LDE1IEBAIGJvb2wgTW9tZW50dW1FdmVudERpc3BhdGNoZXI6OmhhbmRsZVdoZWVsRXZlbnQoV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlkZW50CiAgICAgICAgIG1fY3VycmVudEdlc3R1cmUu
YWNjdW11bGF0ZWRFdmVudE9mZnNldCArPSBldmVudC5kZWx0YSgpOwogCiAgICAgYXV0byBjb21i
aW5lZFBoYXNlID0gKGV2ZW50LnBoYXNlKCkgPDwgOCkgfCAoZXZlbnQubW9tZW50dW1QaGFzZSgp
KTsKLSAgICBtX2N1cnJlbnRMb2dTdGF0ZS5sYXRlc3RFdmVudFBoYXNlID0gY29tYmluZWRQaGFz
ZTsKICAgICBtX2N1cnJlbnRMb2dTdGF0ZS50b3RhbEV2ZW50T2Zmc2V0ICs9IGV2ZW50LmRlbHRh
KCkuaGVpZ2h0KCk7CiAgICAgaWYgKCFpc01vbWVudHVtRXZlbnREdXJpbmdTeW50aGV0aWNHZXN0
dXJlKSB7CiAgICAgICAgIC8vIExvZyBldmVudHMgdGhhdCB3ZSBkb24ndCBibG9jayB0byB0aGUg
Z2VuZXJhdGVkIG9mZnNldHMgbG9nIGFzIHdlbGwsCiAgICAgICAgIC8vIGV2ZW4gdGhvdWdoIHdl
IGRpZG4ndCB0ZWNobmljYWxseSBnZW5lcmF0ZSB0aGVtLCBqdXN0IHBhc3NlZCB0aGVtIHRocm91
Z2guCi0gICAgICAgIG1fY3VycmVudExvZ1N0YXRlLmxhdGVzdEdlbmVyYXRlZFBoYXNlID0gY29t
YmluZWRQaGFzZTsKICAgICAgICAgbV9jdXJyZW50TG9nU3RhdGUudG90YWxHZW5lcmF0ZWRPZmZz
ZXQgKz0gZXZlbnQuZGVsdGEoKS5oZWlnaHQoKTsKLSAgICB9Ci0gICAgcHVzaExvZ0VudHJ5KCk7
CisgICAgICAgIHB1c2hMb2dFbnRyeShjb21iaW5lZFBoYXNlLCBjb21iaW5lZFBoYXNlKTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgcHVzaExvZ0VudHJ5KDAsIGNvbWJpbmVkUGhhc2UpOworICAgIAog
I2VuZGlmCiAKICAgICAvLyBDb25zdW1lIGFueSBub3JtYWwgbW9tZW50dW0gZXZlbnRzIHdoaWxl
IHdlJ3JlIGluc2lkZSBhIHN5bnRoZXRpYyBtb21lbnR1bSBnZXN0dXJlLgpAQCAtMTUyLDYgKzE1
MiwxMCBAQCB2b2lkIE1vbWVudHVtRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFN5bnRoZXRpY01v
bWVudHVtRXZlbnQoV2ViV2hlZWxFdmVudDo6UGhhcwogCiAgICAgYXV0byBhcHBLaXRTY3JvbGxN
dWx0aXBsaWVyID0gYXBwS2l0U2Nyb2xsTXVsdGlwbGllckZvckV2ZW50KCptX2N1cnJlbnRHZXN0
dXJlLmluaXRpYXRpbmdFdmVudCk7CiAgICAgYXV0byBhcHBLaXRBY2NlbGVyYXRlZERlbHRhID0g
ZGVsdGEgKiBhcHBLaXRTY3JvbGxNdWx0aXBsaWVyOworCisgICAgaWYgKHBoYXNlID09IFdlYldo
ZWVsRXZlbnQ6OlBoYXNlQ2hhbmdlZCAmJiBhcHBLaXRBY2NlbGVyYXRlZERlbHRhLmlzWmVybygp
KQorICAgICAgICByZXR1cm47CisKICAgICBhdXRvIHdoZWVsVGlja3MgPSBhcHBLaXRBY2NlbGVy
YXRlZERlbHRhIC8gV2ViQ29yZTo6U2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpOwogICAg
IGF1dG8gdGltZSA9IFdhbGxUaW1lOjpub3coKTsKIApAQCAtMTc3LDkgKzE4MSw4IEBAIHZvaWQg
TW9tZW50dW1FdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoU3ludGhldGljTW9tZW50dW1FdmVudChX
ZWJXaGVlbEV2ZW50OjpQaGFzCiAgICAgbV9kaXNwYXRjaGVyLmludGVybmFsV2hlZWxFdmVudCht
X2N1cnJlbnRHZXN0dXJlLnBhZ2VJZGVudGlmaWVyLCBzeW50aGV0aWNFdmVudCwgbV9sYXN0UnVi
YmVyQmFuZGFibGVFZGdlcywgRXZlbnREaXNwYXRjaGVyOjpXaGVlbEV2ZW50T3JpZ2luOjpNb21l
bnR1bUV2ZW50RGlzcGF0Y2hlcik7CiAKICNpZiBFTkFCTEUoTU9NRU5UVU1fRVZFTlRfRElTUEFU
Q0hFUl9URU1QT1JBUllfTE9HR0lORykKLSAgICBtX2N1cnJlbnRMb2dTdGF0ZS5sYXRlc3RHZW5l
cmF0ZWRQaGFzZSA9IHBoYXNlOwogICAgIG1fY3VycmVudExvZ1N0YXRlLnRvdGFsR2VuZXJhdGVk
T2Zmc2V0ICs9IGFwcEtpdEFjY2VsZXJhdGVkRGVsdGEuaGVpZ2h0KCk7Ci0gICAgcHVzaExvZ0Vu
dHJ5KCk7CisgICAgcHVzaExvZ0VudHJ5KHBoYXNlLCAwKTsKICNlbmRpZgogfQogCkBAIC0yOTQs
MTUgKzI5NywxOCBAQCB2b2lkIE1vbWVudHVtRXZlbnREaXNwYXRjaGVyOjpwYWdlU2NyZWVuRGlk
Q2hhbmdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRAogCiBXZWJDb3JlOjpGbG9hdFNp
emUgTW9tZW50dW1FdmVudERpc3BhdGNoZXI6OmNvbnN1bWVEZWx0YUZvckN1cnJlbnRUaW1lKCkK
IHsKLSAgICBhdXRvIGFuaW1hdGlvblRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKSAtIG1fY3Vy
cmVudEdlc3R1cmUuc3RhcnRUaW1lOwotICAgIGF1dG8gZGVzaXJlZE9mZnNldCA9IG9mZnNldEF0
VGltZShhbmltYXRpb25UaW1lKTsKKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgZGVsdGE7CiAKLSNp
ZiAhRU5BQkxFKE1PTUVOVFVNX0VWRU5UX0RJU1BBVENIRVJfUFJFTUFUVVJFX1JPVU5ESU5HKQot
ICAgIC8vIEludGVudGlvbmFsIGRlbHRhIHJvdW5kaW5nIChidXQgYXQgdGhlIGVuZCEpLgotICAg
IFdlYkNvcmU6OkZsb2F0U2l6ZSBkZWx0YSA9IHJvdW5kZWRJbnRTaXplKGRlc2lyZWRPZmZzZXQg
LSBtX2N1cnJlbnRHZXN0dXJlLmN1cnJlbnRPZmZzZXQpOwotI2Vsc2UKLSAgICBXZWJDb3JlOjpG
bG9hdFNpemUgZGVsdGEgPSBkZXNpcmVkT2Zmc2V0IC0gbV9jdXJyZW50R2VzdHVyZS5jdXJyZW50
T2Zmc2V0OwotI2VuZGlmCisgICAgYXV0byBhbmltYXRpb25UaW1lID0gTW9ub3RvbmljVGltZTo6
bm93KCkgLSBtX2N1cnJlbnRHZXN0dXJlLnN0YXJ0VGltZTsKKyAgICBpZiAoYW5pbWF0aW9uVGlt
ZSA8IG1fY3VycmVudEdlc3R1cmUudGFpbFN0YXJ0VGltZSkgeworICAgICAgICBhdXRvIGRlc2ly
ZWRPZmZzZXQgPSBvZmZzZXRBdFRpbWUoYW5pbWF0aW9uVGltZSk7CisgICAgICAgIGRlbHRhID0g
cm91bmRlZEludFNpemUoZGVzaXJlZE9mZnNldCAtIG1fY3VycmVudEdlc3R1cmUuY3VycmVudE9m
ZnNldCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKG1fY3VycmVudEdlc3R1cmUuY3VycmVu
dFRhaWxEZWx0YUluZGV4IDwgbV9jdXJyZW50R2VzdHVyZS50YWlsRGVsdGFUYWJsZS5zaXplKCkp
CisgICAgICAgICAgICBkZWx0YSA9IC1tX2N1cnJlbnRHZXN0dXJlLnRhaWxEZWx0YVRhYmxlW21f
Y3VycmVudEdlc3R1cmUuY3VycmVudFRhaWxEZWx0YUluZGV4KytdOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBkZWx0YSA9IHsgfTsKKyAgICB9CiAKICAgICBtX2N1cnJlbnRHZXN0dXJlLmN1
cnJlbnRPZmZzZXQgKz0gZGVsdGE7CiAKQEAgLTM2MywyNyArMzY5LDEwOSBAQCB2b2lkIE1vbWVu
dHVtRXZlbnREaXNwYXRjaGVyOjpkaWRSZWNlaXZlU2Nyb2xsRXZlbnQoY29uc3QgV2ViV2hlZWxF
dmVudCYgZXZlbnQpCiAKIHZvaWQgTW9tZW50dW1FdmVudERpc3BhdGNoZXI6OmJ1aWxkT2Zmc2V0
VGFibGVXaXRoSW5pdGlhbERlbHRhKFdlYkNvcmU6OkZsb2F0U2l6ZSBpbml0aWFsVW5hY2NlbGVy
YXRlZERlbHRhKQogewotI2lmIEVOQUJMRShNT01FTlRVTV9FVkVOVF9ESVNQQVRDSEVSX1BSRU1B
VFVSRV9ST1VORElORykKLSAgICBtX2N1cnJlbnRHZXN0dXJlLmNhcnJ5T2Zmc2V0ID0geyB9Owot
I2VuZGlmCiAgICAgbV9jdXJyZW50R2VzdHVyZS5vZmZzZXRUYWJsZS5jbGVhcigpOwogCiAgICAg
V2ViQ29yZTo6RmxvYXRTaXplIGFjY3VtdWxhdGVkT2Zmc2V0OwogICAgIFdlYkNvcmU6OkZsb2F0
U2l6ZSB1bmFjY2VsZXJhdGVkRGVsdGEgPSBpbml0aWFsVW5hY2NlbGVyYXRlZERlbHRhOwogCisg
ICAgZmxvYXQgcGh5c2ljYWxDdXJ2ZU11bHRpcGxpZXIgPSBpZGVhbEN1cnZlRnJhbWVSYXRlIC8g
bV9jdXJyZW50R2VzdHVyZS5hY2NlbGVyYXRpb25DdXJ2ZS0+ZnJhbWVSYXRlKCk7CisgICAgYm9v
bCBpblRhaWwgPSBmYWxzZTsKKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgdGFpbENhcnJ5OworCiAg
ICAgZG8gewogICAgICAgICBXZWJDb3JlOjpGbG9hdFNpemUgYWNjZWxlcmF0ZWREZWx0YTsKICAg
ICAgICAgc3RkOjp0aWUodW5hY2NlbGVyYXRlZERlbHRhLCBhY2NlbGVyYXRlZERlbHRhKSA9IGNv
bXB1dGVOZXh0RGVsdGEodW5hY2NlbGVyYXRlZERlbHRhKTsKIAorICAgICAgICBjb25zdCBmbG9h
dCB0YWlsU3RhcnRVbmFjY2VsZXJhdGVkRGVsdGEgPSA2LmY7CisgICAgICAgIGlmICghaW5UYWls
ICYmIHN0ZDo6YWJzKHVuYWNjZWxlcmF0ZWREZWx0YS53aWR0aCgpKSA8IHRhaWxTdGFydFVuYWNj
ZWxlcmF0ZWREZWx0YSAmJiBzdGQ6OmFicyh1bmFjY2VsZXJhdGVkRGVsdGEuaGVpZ2h0KCkpIDwg
dGFpbFN0YXJ0VW5hY2NlbGVyYXRlZERlbHRhKSB7CisgICAgICAgICAgICBpblRhaWwgPSB0cnVl
OworICAgICAgICAgICAgbV9jdXJyZW50R2VzdHVyZS50YWlsU3RhcnRUaW1lID0gaWRlYWxDdXJ2
ZUZyYW1lSW50ZXJ2YWwgKiBtX2N1cnJlbnRHZXN0dXJlLm9mZnNldFRhYmxlLnNpemUoKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChpblRhaWwpIHsKKyAgICAgICAgICAgIGF1dG8gdGFpbERl
bHRhID0gYWNjZWxlcmF0ZWREZWx0YSAqIHBoeXNpY2FsQ3VydmVNdWx0aXBsaWVyOworICAgICAg
ICAgICAgYXV0byBkZWx0YVdpdGhDYXJyeSA9IHRhaWxEZWx0YSArIHRhaWxDYXJyeTsKKyAgICAg
ICAgICAgIGF1dG8gcXVhbnRpemVkRGVsdGEgPSByb3VuZGVkSW50U2l6ZShkZWx0YVdpdGhDYXJy
eSk7CisgICAgICAgICAgICB0YWlsQ2FycnkgPSBkZWx0YVdpdGhDYXJyeSAtIHF1YW50aXplZERl
bHRhOworICAgICAgICAgICAgbV9jdXJyZW50R2VzdHVyZS50YWlsRGVsdGFUYWJsZS5hcHBlbmQo
cXVhbnRpemVkRGVsdGEpOworICAgICAgICB9CisKICAgICAgICAgYWNjdW11bGF0ZWRPZmZzZXQg
Kz0gYWNjZWxlcmF0ZWREZWx0YTsKICAgICAgICAgbV9jdXJyZW50R2VzdHVyZS5vZmZzZXRUYWJs
ZS5hcHBlbmQoYWNjdW11bGF0ZWRPZmZzZXQpOworCiAgICAgfSB3aGlsZSAoc3RkOjphYnModW5h
Y2NlbGVyYXRlZERlbHRhLndpZHRoKCkpID4gMC41IHx8IHN0ZDo6YWJzKHVuYWNjZWxlcmF0ZWRE
ZWx0YS5oZWlnaHQoKSkgPiAwLjUpOwogCisgICAgZXF1YWxpemVUYWlsR2FwcygpOworCiAjaWYg
RU5BQkxFKE1PTUVOVFVNX0VWRU5UX0RJU1BBVENIRVJfVEVNUE9SQVJZX0xPR0dJTkcpCi0gICAg
UkVMRUFTRV9MT0coU2Nyb2xsQW5pbWF0aW9ucywgIk1vbWVudHVtRXZlbnREaXNwYXRjaGVyIGJ1
aWx0IHRhYmxlIHdpdGggJWxkIGZyYW1lcywgaW5pdGlhbCBkZWx0YSAlZiAlZiwgZGlzdGFuY2Ug
JWYgJWYgKGluaXRpYWwgZGVsdGEgZnJvbSBsYXN0IGNoYW5nZWQgZXZlbnQgJWYgJWYpIiwgbV9j
dXJyZW50R2VzdHVyZS5vZmZzZXRUYWJsZS5zaXplKCksIGluaXRpYWxVbmFjY2VsZXJhdGVkRGVs
dGEud2lkdGgoKSwgaW5pdGlhbFVuYWNjZWxlcmF0ZWREZWx0YS5oZWlnaHQoKSwgYWNjdW11bGF0
ZWRPZmZzZXQud2lkdGgoKSwgYWNjdW11bGF0ZWRPZmZzZXQuaGVpZ2h0KCksIG1fbGFzdEFjdGl2
ZVBoYXNlRGVsdGEud2lkdGgoKSwgbV9sYXN0QWN0aXZlUGhhc2VEZWx0YS5oZWlnaHQoKSk7Cisg
ICAgUkVMRUFTRV9MT0coU2Nyb2xsQW5pbWF0aW9ucywgIk1vbWVudHVtRXZlbnREaXNwYXRjaGVy
IGJ1aWx0IHRhYmxlIHdpdGggJWxkIGZyYW1lcyAoJWxkIHRhaWwgZnJhbWVzKSwgaW5pdGlhbCBk
ZWx0YSAlZiAlZiwgZGlzdGFuY2UgJWYgJWYgKGluaXRpYWwgZGVsdGEgZnJvbSBsYXN0IGNoYW5n
ZWQgZXZlbnQgJWYgJWYpIiwgbV9jdXJyZW50R2VzdHVyZS5vZmZzZXRUYWJsZS5zaXplKCksIG1f
Y3VycmVudEdlc3R1cmUudGFpbERlbHRhVGFibGUuc2l6ZSgpLCBpbml0aWFsVW5hY2NlbGVyYXRl
ZERlbHRhLndpZHRoKCksIGluaXRpYWxVbmFjY2VsZXJhdGVkRGVsdGEuaGVpZ2h0KCksIGFjY3Vt
dWxhdGVkT2Zmc2V0LndpZHRoKCksIGFjY3VtdWxhdGVkT2Zmc2V0LmhlaWdodCgpLCBtX2xhc3RB
Y3RpdmVQaGFzZURlbHRhLndpZHRoKCksIG1fbGFzdEFjdGl2ZVBoYXNlRGVsdGEuaGVpZ2h0KCkp
OwogI2VuZGlmCiB9CiAKK3ZvaWQgTW9tZW50dW1FdmVudERpc3BhdGNoZXI6OmVxdWFsaXplVGFp
bEdhcHMoKQoreworICAgIGF1dG8mIHRhYmxlID0gbV9jdXJyZW50R2VzdHVyZS50YWlsRGVsdGFU
YWJsZTsKKyAgICBzaXplX3QgaW5pdGlhbFRhYmxlU2l6ZSA9IHRhYmxlLnNpemUoKTsKKworICAg
IFZlY3RvcjxmbG9hdD4gZGVsdGFzWzJdOworICAgIGRlbHRhc1swXS5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KGluaXRpYWxUYWJsZVNpemUpOworICAgIGRlbHRhc1sxXS5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KGluaXRpYWxUYWJsZVNpemUpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBp
bml0aWFsVGFibGVTaXplOyBpKyspIHsKKyAgICAgICAgZGVsdGFzWzBdLnVuY2hlY2tlZEFwcGVu
ZCh0YWJsZVtpXS53aWR0aCgpKTsKKyAgICAgICAgZGVsdGFzWzFdLnVuY2hlY2tlZEFwcGVuZCh0
YWJsZVtpXS5oZWlnaHQoKSk7CisgICAgfQorICAgIAorICAgIGlmICh1bnNpZ25lZCBmaXJzdFpl
cm9JbmRleCA9IGRlbHRhc1swXS5maW5kKDApKQorICAgICAgICBzdGQ6OnNvcnQoZGVsdGFzWzBd
LmJlZ2luKCksIHN0ZDo6bmV4dChkZWx0YXNbMF0uYmVnaW4oKSwgZmlyc3RaZXJvSW5kZXgpKTsK
KyAgICBpZiAodW5zaWduZWQgZmlyc3RaZXJvSW5kZXggPSBkZWx0YXNbMV0uZmluZCgwKSkKKyAg
ICAgICAgc3RkOjpzb3J0KGRlbHRhc1sxXS5iZWdpbigpLCBzdGQ6Om5leHQoZGVsdGFzWzFdLmJl
Z2luKCksIGZpcnN0WmVyb0luZGV4KSk7CisKKyAgICB0eXBlZGVmIHVuc2lnbmVkIEdhcFNpemVb
Ml07CisgICAgR2FwU2l6ZSBtaW5pbXVtR2FwID0geyAwLCAwIH07CisgICAgR2FwU2l6ZSBjdXJy
ZW50R2FwID0geyAwLCAwIH07CisgICAgR2FwU2l6ZSByZW1haW5pbmdHYXBUb0dlbmVyYXRlID0g
eyAwLCAwIH07CisgICAgdW5zaWduZWQgb3JpZ2luYWxUYWJsZUluZGV4WzJdID0geyAwLCAwIH07
CisKKyAgICBhdXRvIHRha2VOZXh0RGVsdGEgPSBbJl0gKHVpbnQ4X3QgYXhpcykgLT4gZmxvYXQg
eworICAgICAgICBpZiAob3JpZ2luYWxUYWJsZUluZGV4W2F4aXNdID4gaW5pdGlhbFRhYmxlU2l6
ZSkKKyAgICAgICAgICAgIHJldHVybiAwLmY7CisKKyAgICAgICAgYXV0byB2YWx1ZSA9IGRlbHRh
c1theGlzXVtvcmlnaW5hbFRhYmxlSW5kZXhbYXhpc11dOworCisgICAgICAgIC8vIFByb2R1Y2Ug
YSBnYXAgbm8gbWF0dGVyIHdoYXQsIGNvbnN1bWluZyBpdCBmcm9tIHRoZSBvcmlnaW5hbCB0YWJs
ZSBpZiBpdCB3YXMgdGhlcmUuCisgICAgICAgIGlmIChyZW1haW5pbmdHYXBUb0dlbmVyYXRlW2F4
aXNdKSB7CisgICAgICAgICAgICByZW1haW5pbmdHYXBUb0dlbmVyYXRlW2F4aXNdLS07CisgICAg
ICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICAgICAgICAgIG9yaWdpbmFsVGFibGVJbmRleFth
eGlzXSsrOworICAgICAgICAgICAgcmV0dXJuIDAuZjsKKyAgICAgICAgfQorCisgICAgICAgIGlm
ICh2YWx1ZSkgeworICAgICAgICAgICAgbWluaW11bUdhcFtheGlzXSA9IHN0ZDo6bWF4KG1pbmlt
dW1HYXBbYXhpc10sIGN1cnJlbnRHYXBbYXhpc10pOworICAgICAgICAgICAgcmVtYWluaW5nR2Fw
VG9HZW5lcmF0ZVtheGlzXSA9IGN1cnJlbnRHYXBbYXhpc10gLSBtaW5pbXVtR2FwW2F4aXNdOwor
ICAgICAgICAgICAgY3VycmVudEdhcFtheGlzXSA9IDA7CisgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgY3VycmVudEdhcFtheGlzXSsrOworCisgICAgICAgIG9yaWdpbmFsVGFibGVJbmRleFth
eGlzXSsrOworCisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICB9OworCisgICAgc2l6ZV90IGZp
bmFsVGFibGVTaXplID0gMDsKKyAgICB0YWJsZS5zaHJpbmsoMCk7CisKKyAgICB3aGlsZSAob3Jp
Z2luYWxUYWJsZUluZGV4WzBdIDwgaW5pdGlhbFRhYmxlU2l6ZSAmJiBvcmlnaW5hbFRhYmxlSW5k
ZXhbMV0gPCBpbml0aWFsVGFibGVTaXplKSB7CisgICAgICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBk
ZWx0YSh0YWtlTmV4dERlbHRhKDApLCB0YWtlTmV4dERlbHRhKDEpKTsKKyAgICAgICAgdGFibGUu
YXBwZW5kKGRlbHRhKTsKKworICAgICAgICBpZiAoIWRlbHRhLmlzWmVybygpKQorICAgICAgICAg
ICAgZmluYWxUYWJsZVNpemUgPSB0YWJsZS5zaXplKCk7CisgICAgfQorCisgICAgdGFibGUuc2hy
aW5rKGZpbmFsVGFibGVTaXplKTsKK30KKwogc3RhdGljIGZsb2F0IGludGVycG9sYXRlKGZsb2F0
IGEsIGZsb2F0IGIsIGZsb2F0IHQpCiB7CiAgICAgcmV0dXJuIGEgKyB0ICogKGIgLSBhKTsKQEAg
LTQzMywyOCArNTIxLDggQEAgc3RkOjpwYWlyPFdlYkNvcmU6OkZsb2F0U2l6ZSwgV2ViQ29yZTo6
RmxvYXRTaXplPiBNb21lbnR1bUV2ZW50RGlzcGF0Y2hlcjo6Y29tcHUKICAgICBmbG9hdCBkZWNh
eVJhdGUgPSBtb21lbnR1bURlY2F5UmF0ZSh1bmFjY2VsZXJhdGVkRGVsdGEsIGlkZWFsQ3VydmVG
cmFtZUludGVydmFsKTsKICAgICB1bmFjY2VsZXJhdGVkRGVsdGEuc2NhbGUoZGVjYXlSYXRlKTsK
IAotICAgIGF1dG8gcXVhbnRpemVkVW5hY2NlbGVyYXRlZERlbHRhID0gdW5hY2NlbGVyYXRlZERl
bHRhOwotCi0jaWYgRU5BQkxFKE1PTUVOVFVNX0VWRU5UX0RJU1BBVENIRVJfUFJFTUFUVVJFX1JP
VU5ESU5HKQotICAgIC8vIFJvdW5kIGFuZCBjYXJyeS4KLSAgICBpbnQzMl90IHF1YW50aXplZFgg
PSBzdGQ6OnJvdW5kKHF1YW50aXplZFVuYWNjZWxlcmF0ZWREZWx0YS53aWR0aCgpKTsKLSAgICBp
bnQzMl90IHF1YW50aXplZFkgPSBzdGQ6OnJvdW5kKHF1YW50aXplZFVuYWNjZWxlcmF0ZWREZWx0
YS5oZWlnaHQoKSk7Ci0KLSAgICBpZiAoc3RkOjphYnMocXVhbnRpemVkVW5hY2NlbGVyYXRlZERl
bHRhLndpZHRoKCkpIDwgMSAmJiBzdGQ6OmFicyhxdWFudGl6ZWRVbmFjY2VsZXJhdGVkRGVsdGEu
aGVpZ2h0KCkpIDwgMSkgewotICAgICAgICBmbG9hdCBkZWx0YVhJbmNsdWRpbmdDYXJyeSA9IHF1
YW50aXplZFVuYWNjZWxlcmF0ZWREZWx0YS53aWR0aCgpICsgbV9jdXJyZW50R2VzdHVyZS5jYXJy
eU9mZnNldC53aWR0aCgpOwotICAgICAgICBmbG9hdCBkZWx0YVlJbmNsdWRpbmdDYXJyeSA9IHF1
YW50aXplZFVuYWNjZWxlcmF0ZWREZWx0YS5oZWlnaHQoKSArIG1fY3VycmVudEdlc3R1cmUuY2Fy
cnlPZmZzZXQuaGVpZ2h0KCk7Ci0KLSAgICAgICAgLy8gSW50ZW50aW9uYWwgdHJ1bmNhdGlvbi4K
LSAgICAgICAgcXVhbnRpemVkWCA9IGRlbHRhWEluY2x1ZGluZ0NhcnJ5OwotICAgICAgICBxdWFu
dGl6ZWRZID0gZGVsdGFZSW5jbHVkaW5nQ2Fycnk7Ci0gICAgICAgIG1fY3VycmVudEdlc3R1cmUu
Y2FycnlPZmZzZXQgPSB7IGRlbHRhWEluY2x1ZGluZ0NhcnJ5IC0gcXVhbnRpemVkWCwgZGVsdGFZ
SW5jbHVkaW5nQ2FycnkgLSBxdWFudGl6ZWRZIH07Ci0gICAgfQotCi0gICAgcXVhbnRpemVkVW5h
Y2NlbGVyYXRlZERlbHRhID0geyBzdGF0aWNfY2FzdDxmbG9hdD4ocXVhbnRpemVkWCksIHN0YXRp
Y19jYXN0PGZsb2F0PihxdWFudGl6ZWRZKSB9OwotI2VuZGlmCi0KICAgICAvLyBUaGUgZGVsdGEg
cXVldWUgb3BlcmF0ZXMgb24gcHJlLWFjY2VsZXJhdGlvbiBkZWx0YXMsIHNvIGluc2VydCB0aGUg
bmV3IGV2ZW50ICpiZWZvcmUqIGFjY2VsZXJhdGluZy4KLSAgICBkaWRSZWNlaXZlU2Nyb2xsRXZl
bnRXaXRoSW50ZXJ2YWwocXVhbnRpemVkVW5hY2NlbGVyYXRlZERlbHRhLCBpZGVhbEN1cnZlRnJh
bWVJbnRlcnZhbCk7CisgICAgZGlkUmVjZWl2ZVNjcm9sbEV2ZW50V2l0aEludGVydmFsKHVuYWNj
ZWxlcmF0ZWREZWx0YSwgaWRlYWxDdXJ2ZUZyYW1lSW50ZXJ2YWwpOwogCiAgICAgYXV0byBhY2Nl
bGVyYXRlQXhpcyA9IFsmXSAoSGlzdG9yaWNhbERlbHRhcyYgZGVsdGFzLCBmbG9hdCB2YWx1ZSkg
ewogICAgICAgICBmbG9hdCB0b3RhbERlbHRhID0gMDsKQEAgLTQ5OSw4ICs1NjcsOCBAQCBzdGQ6
OnBhaXI8V2ViQ29yZTo6RmxvYXRTaXplLCBXZWJDb3JlOjpGbG9hdFNpemU+IE1vbWVudHVtRXZl
bnREaXNwYXRjaGVyOjpjb21wdQogICAgIH07CiAKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgYWNj
ZWxlcmF0ZWREZWx0YSgKLSAgICAgICAgYWNjZWxlcmF0ZUF4aXMobV9kZWx0YUhpc3RvcnlYLCBx
dWFudGl6ZWRVbmFjY2VsZXJhdGVkRGVsdGEud2lkdGgoKSksCi0gICAgICAgIGFjY2VsZXJhdGVB
eGlzKG1fZGVsdGFIaXN0b3J5WSwgcXVhbnRpemVkVW5hY2NlbGVyYXRlZERlbHRhLmhlaWdodCgp
KQorICAgICAgICBhY2NlbGVyYXRlQXhpcyhtX2RlbHRhSGlzdG9yeVgsIHVuYWNjZWxlcmF0ZWRE
ZWx0YS53aWR0aCgpKSwKKyAgICAgICAgYWNjZWxlcmF0ZUF4aXMobV9kZWx0YUhpc3RvcnlZLCB1
bmFjY2VsZXJhdGVkRGVsdGEuaGVpZ2h0KCkpCiAgICAgKTsKIAogI2lmIEVOQUJMRShNT01FTlRV
TV9FVkVOVF9ESVNQQVRDSEVSX1RFTVBPUkFSWV9MT0dHSU5HKQpAQCAtNTEyLDkgKzU4MCwxMSBA
QCBzdGQ6OnBhaXI8V2ViQ29yZTo6RmxvYXRTaXplLCBXZWJDb3JlOjpGbG9hdFNpemU+IE1vbWVu
dHVtRXZlbnREaXNwYXRjaGVyOjpjb21wdQogCiAjaWYgRU5BQkxFKE1PTUVOVFVNX0VWRU5UX0RJ
U1BBVENIRVJfVEVNUE9SQVJZX0xPR0dJTkcpCiAKLXZvaWQgTW9tZW50dW1FdmVudERpc3BhdGNo
ZXI6OnB1c2hMb2dFbnRyeSgpCit2b2lkIE1vbWVudHVtRXZlbnREaXNwYXRjaGVyOjpwdXNoTG9n
RW50cnkodWludDMyX3QgZ2VuZXJhdGVkUGhhc2UsIHVpbnQzMl90IGV2ZW50UGhhc2UpCiB7CiAg
ICAgbV9jdXJyZW50TG9nU3RhdGUudGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOworICAgIG1f
Y3VycmVudExvZ1N0YXRlLmdlbmVyYXRlZFBoYXNlID0gZ2VuZXJhdGVkUGhhc2U7CisgICAgbV9j
dXJyZW50TG9nU3RhdGUuZXZlbnRQaGFzZSA9IGV2ZW50UGhhc2U7CiAgICAgbV9sb2cuYXBwZW5k
KG1fY3VycmVudExvZ1N0YXRlKTsKIH0KIApAQCAtNTI5LDcgKzU5OSw3IEBAIHZvaWQgTW9tZW50
dW1FdmVudERpc3BhdGNoZXI6OmZsdXNoTG9nKCkKICAgICBhdXRvIHN0YXJ0VGltZSA9IG1fbG9n
WzBdLnRpbWU7CiAgICAgUkVMRUFTRV9MT0coU2Nyb2xsQW5pbWF0aW9ucywgIk1vbWVudHVtRXZl
bnREaXNwYXRjaGVyIGV2ZW50IGxvZzogdGltZSxnZW5lcmF0ZWRPZmZzZXQsZ2VuZXJhdGVkUGhh
c2UsZXZlbnRPZmZzZXQsZXZlbnRQaGFzZSIpOwogICAgIGZvciAoY29uc3QgYXV0byYgZW50cnkg
OiBtX2xvZykKLSAgICAgICAgUkVMRUFTRV9MT0coU2Nyb2xsQW5pbWF0aW9ucywgIk1vbWVudHVt
RXZlbnREaXNwYXRjaGVyIGV2ZW50IGxvZzogJWYsJWYsJWQsJWYsJWQiLCAoZW50cnkudGltZSAt
IHN0YXJ0VGltZSkuc2Vjb25kcygpLCBlbnRyeS50b3RhbEdlbmVyYXRlZE9mZnNldCwgZW50cnku
bGF0ZXN0R2VuZXJhdGVkUGhhc2UsIGVudHJ5LnRvdGFsRXZlbnRPZmZzZXQsIGVudHJ5LmxhdGVz
dEV2ZW50UGhhc2UpOworICAgICAgICBSRUxFQVNFX0xPRyhTY3JvbGxBbmltYXRpb25zLCAiTW9t
ZW50dW1FdmVudERpc3BhdGNoZXIgZXZlbnQgbG9nOiAlZiwlZiwlZCwlZiwlZCIsIChlbnRyeS50
aW1lIC0gc3RhcnRUaW1lKS5zZWNvbmRzKCksIGVudHJ5LnRvdGFsR2VuZXJhdGVkT2Zmc2V0LCBl
bnRyeS5nZW5lcmF0ZWRQaGFzZSwgZW50cnkudG90YWxFdmVudE9mZnNldCwgZW50cnkuZXZlbnRQ
aGFzZSk7CiAKICAgICBtX2xvZy5jbGVhcigpOwogICAgIG1fY3VycmVudExvZ1N0YXRlID0geyB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvTW9tZW50dW1F
dmVudERpc3BhdGNoZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL01vbWVu
dHVtRXZlbnREaXNwYXRjaGVyLmgKaW5kZXggZTk5YzYwMGExZDI4MWYwYjVkNTllOTlhYTMwMjAw
YTI3YjI1MjRjMC4uOTNmZDM0N2M0NTVlNGNlNTg1ZTdkZDg3OTJhMjA5MDRjZmYzNzExNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvTW9tZW50dW1FdmVudERp
c3BhdGNoZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Nb21lbnR1
bUV2ZW50RGlzcGF0Y2hlci5oCkBAIC0yNyw4ICsyNyw2IEBACiAKICNpZiBFTkFCTEUoTU9NRU5U
VU1fRVZFTlRfRElTUEFUQ0hFUikKIAotLy8gRklYTUU6IFJlbW92ZSB0aGlzIG9uY2Ugd2UgZGVj
aWRlIHdoaWNoIHZlcnNpb24gd2Ugd2FudC4KLSNkZWZpbmUgRU5BQkxFX01PTUVOVFVNX0VWRU5U
X0RJU1BBVENIRVJfUFJFTUFUVVJFX1JPVU5ESU5HIDAKICNkZWZpbmUgRU5BQkxFX01PTUVOVFVN
X0VWRU5UX0RJU1BBVENIRVJfVEVNUE9SQVJZX0xPR0dJTkcgMQogCiAjaW5jbHVkZSAiRGlzcGxh
eUxpbmtPYnNlcnZlcklELmgiCkBAIC04MCw2ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
aXNwYXRjaFN5bnRoZXRpY01vbWVudHVtRXZlbnQoV2ViV2hlZWxFdmVudDo6UGhhc2UsIFdlYkNv
cmU6OkZsb2F0U2l6ZSBkZWx0YSk7CiAKICAgICB2b2lkIGJ1aWxkT2Zmc2V0VGFibGVXaXRoSW5p
dGlhbERlbHRhKFdlYkNvcmU6OkZsb2F0U2l6ZSk7CisgICAgdm9pZCBlcXVhbGl6ZVRhaWxHYXBz
KCk7CiAKICAgICAvLyBPbmNlIGNvbnN1bWVkLCB0aGlzIGRlbHRhICptdXN0KiBiZSBkaXNwYXRj
aGVkIGluIGFuIGV2ZW50LgogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBjb25zdW1lRGVsdGFGb3JD
dXJyZW50VGltZSgpOwpAQCAtOTEsNyArOTAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVj
ZWl2ZVNjcm9sbEV2ZW50KGNvbnN0IFdlYldoZWVsRXZlbnQmKTsKIAogI2lmIEVOQUJMRShNT01F
TlRVTV9FVkVOVF9ESVNQQVRDSEVSX1RFTVBPUkFSWV9MT0dHSU5HKQotICAgIHZvaWQgcHVzaExv
Z0VudHJ5KCk7CisgICAgdm9pZCBwdXNoTG9nRW50cnkodWludDMyX3QgZ2VuZXJhdGVkUGhhc2Us
IHVpbnQzMl90IGV2ZW50UGhhc2UpOwogICAgIHZvaWQgZmx1c2hMb2coKTsKIAogICAgIFdlYkNv
cmU6OkZsb2F0U2l6ZSBtX2xhc3RBY3RpdmVQaGFzZURlbHRhOwpAQCAtMTAyLDggKzEwMSw4IEBA
IHByaXZhdGU6CiAgICAgICAgIGZsb2F0IHRvdGFsR2VuZXJhdGVkT2Zmc2V0IHsgMCB9OwogICAg
ICAgICBmbG9hdCB0b3RhbEV2ZW50T2Zmc2V0IHsgMCB9OwogCi0gICAgICAgIHVpbnQzMl90IGxh
dGVzdEdlbmVyYXRlZFBoYXNlIHsgMCB9OwotICAgICAgICB1aW50MzJfdCBsYXRlc3RFdmVudFBo
YXNlIHsgMCB9OworICAgICAgICB1aW50MzJfdCBnZW5lcmF0ZWRQaGFzZSB7IDAgfTsKKyAgICAg
ICAgdWludDMyX3QgZXZlbnRQaGFzZSB7IDAgfTsKICAgICB9OwogICAgIExvZ0VudHJ5IG1fY3Vy
cmVudExvZ1N0YXRlOwogICAgIFZlY3RvcjxMb2dFbnRyeT4gbV9sb2c7CkBAIC0xMzMsNyArMTMy
LDEwIEBAIHByaXZhdGU6CiAgICAgICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBjdXJyZW50T2Zmc2V0
OwogICAgICAgICBNb25vdG9uaWNUaW1lIHN0YXJ0VGltZTsKIAotICAgICAgICBWZWN0b3I8V2Vi
Q29yZTo6RmxvYXRTaXplPiBvZmZzZXRUYWJsZTsKKyAgICAgICAgVmVjdG9yPFdlYkNvcmU6OkZs
b2F0U2l6ZT4gb2Zmc2V0VGFibGU7IC8vIEFsd2F5cyBhdCA2MEh6IGludGVydmFscy4KKyAgICAg
ICAgVmVjdG9yPFdlYkNvcmU6OkZsb2F0U2l6ZT4gdGFpbERlbHRhVGFibGU7IC8vIEFsd2F5cyBh
dCBldmVudCBkaXNwYXRjaCBpbnRlcnZhbHMuCisgICAgICAgIFNlY29uZHMgdGFpbFN0YXJ0VGlt
ZTsKKyAgICAgICAgdW5zaWduZWQgY3VycmVudFRhaWxEZWx0YUluZGV4IHsgMCB9OwogCiAjaWYg
RU5BQkxFKE1PTUVOVFVNX0VWRU5UX0RJU1BBVENIRVJfVEVNUE9SQVJZX0xPR0dJTkcpCiAgICAg
ICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBhY2N1bXVsYXRlZEV2ZW50T2Zmc2V0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446329</attachid>
            <date>2021-12-08 00:38:22 -0800</date>
            <delta_ts>2021-12-08 00:58:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233993-20211208003822.patch</filename>
            <type>text/plain</type>
            <size>16512</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU5YTI0MTE5MWVjMmJkMDhl
ODk5MTE0YjM2MjI1MTEyYzViMmU2MDAuLjJlZGM5MjVhZjNlOWViZmU4NzQzNDRlNDUzZjQwN2Nm
ZmY0M2EwNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMjEtMTItMDcgIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW9tZW50dW0gRXZlbnQg
RGlzcGF0Y2hlcjogTW9tZW50dW0gdGFpbCBzaG91bGQgaGF2ZSBtb250b25pY2FsbHkgZGVjcmVh
c2luZyBkZWx0YXMgYW5kIHRhaWwgZ2FwcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjMzOTkzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NjExODM2
Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9Nb21lbnR1bUV2ZW50RGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok1vbWVudHVtRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFN5bnRoZXRpY01vbWVudHVt
RXZlbnQpOgorICAgICAgICBBdm9pZCBwb2ludGxlc3NseSBkaXNwYXRjaGluZyBtb21lbnR1bSBj
aGFuZ2VkIGV2ZW50cyB3aXRoIGVtcHR5IGRlbHRhczsKKyAgICAgICAganVzdCBza2lwIHRoZSBm
cmFtZS4KKworICAgICAgICAoV2ViS2l0OjpNb21lbnR1bUV2ZW50RGlzcGF0Y2hlcjo6Y29uc3Vt
ZURlbHRhRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAoV2ViS2l0OjpNb21lbnR1bUV2ZW50RGlz
cGF0Y2hlcjo6YnVpbGRPZmZzZXRUYWJsZVdpdGhJbml0aWFsRGVsdGEpOgorICAgICAgICAoV2Vi
S2l0OjpNb21lbnR1bUV2ZW50RGlzcGF0Y2hlcjo6Y29tcHV0ZU5leHREZWx0YSk6CisgICAgICAg
IEluIG9yZGVyIHRvIGF2b2lkIHZpc3VhbCBzdHV0dGVyIGR1ZSB0byBpbnRlZ3JhbCByb3VuZGlu
ZyBvZiB0aGUKKyAgICAgICAgZGVsdGFzIHdlIGRpc3BhdGNoIGluIHRoZSBtb21lbnR1bSBwaGFz
ZSwgc3dpdGNoIHRvIGEgdGFibGUgb2YKKyAgICAgICAgZGVsdGFzIGluc3RlYWQgb2YgaW50ZXJw
b2xhdGluZyBhbG9uZyB0aGUgb2Zmc2V0IGN1cnZlIGR1cmluZyB0aGUKKyAgICAgICAgdGFpbCBl
bmQgb2YgdGhlIGFuaW1hdGlvbiAod2hlbiB0aGUgcm91bmRpbmcgbWFrZXMgdXAgYSBsYXJnZQor
ICAgICAgICBwcm9wb3J0aW9uIG9mIGVhY2ggZGVsdGEpLgorCisgICAgICAgIChXZWJLaXQ6Ok1v
bWVudHVtRXZlbnREaXNwYXRjaGVyOjplcXVhbGl6ZVRhaWxHYXBzKToKKyAgICAgICAgU29ydCB0
aGUgZGVsdGFzIHVwIHVudGlsIHRoZSBmaXJzdCB6ZXJvIHRvIGVuc3VyZSBhIGxhY2sgb2YgdW5l
eHBlY3RlZAorICAgICAgICBwZXJjZXB0dWFsIGFjY2VsZXJhdGlvbiwgYW5kIHRoZW4gaW5qZWN0
IHNraXBwZWQgZnJhbWVzIGluIG9yZGVyIHRvCisgICAgICAgIGVuc3VyZSB0aGF0IGZyYW1lcyB0
aGF0IGhhdmUgZWZmZWN0aXZlIHNjcm9sbCBtb3ZlbWVudCAobm9uLXplcm8gZGVsdGFzKQorICAg
ICAgICBhcmUgYWx3YXlzIHNwYWNlZCBlcXVhbGx5LW9yLWZ1cnRoZXIgYXBhcnQgdGhhbiBlYXJs
aWVyIG9uZXMsIGJ1dAorICAgICAgICBuZXZlciBjbG9zZXIgdG9nZXRoZXIgKHdoaWNoLCBhZ2Fp
biwgd291bGQgYmUgcGVyY2lldmVkIGFzIGFjY2VsZXJhdGlvbikuCisKKyAgICAgICAgKFdlYktp
dDo6TW9tZW50dW1FdmVudERpc3BhdGNoZXI6OmhhbmRsZVdoZWVsRXZlbnQpOgorICAgICAgICAo
V2ViS2l0OjpNb21lbnR1bUV2ZW50RGlzcGF0Y2hlcjo6cHVzaExvZ0VudHJ5KToKKyAgICAgICAg
KFdlYktpdDo6TW9tZW50dW1FdmVudERpc3BhdGNoZXI6OmZsdXNoTG9nKToKKyAgICAgICAgTGFz
dGx5LCBhZGp1c3Qgc29tZSBsb2dnaW5nIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHRlbGwgd2hpY2gg
cm93IGluCisgICAgICAgIHRoZSBvdXRwdXQgY29ycmVzcG9uZHMgdG8gYW4gZXZlbnQgZGVsdGEg
b3IgZ2VuZXJhdGVkIGRlbHRhLCBzbyBpdCdzCisgICAgICAgIGVhc2llciB0byBmaW5kIHNraXBw
ZWQgZnJhbWVzLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Nb21lbnR1bUV2ZW50RGlz
cGF0Y2hlci5oOgorCiAyMDIxLTEyLTA2ICBQZXIgQXJuZSAgPHB2b2xsYW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFtpT1NdIFJlbW92ZSBtYWNoIHNlcnZpY2UgZXh0ZW5zaW9ucyBmb3IgdGhlIFdl
YkNvbnRlbnQgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvTW9tZW50dW1FdmVudERpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvTW9tZW50dW1FdmVudERpc3BhdGNoZXIuY3BwCmluZGV4IDQ3OTk1ODdiNjkx
OWZlZDJmOTM4YjgyODY4ZWJmYjdlN2I2YjlhOWQuLmI5Yjk3NmRlMDc1ZTBlZjg3MDI2M2M4ZDll
MjBhMGM1Nzg2MzJmNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL01vbWVudHVtRXZlbnREaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Nb21lbnR1bUV2ZW50RGlzcGF0Y2hlci5jcHAKQEAgLTExMywxNSArMTEz
LDE1IEBAIGJvb2wgTW9tZW50dW1FdmVudERpc3BhdGNoZXI6OmhhbmRsZVdoZWVsRXZlbnQoV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlkZW50CiAgICAgICAgIG1fY3VycmVudEdlc3R1cmUu
YWNjdW11bGF0ZWRFdmVudE9mZnNldCArPSBldmVudC5kZWx0YSgpOwogCiAgICAgYXV0byBjb21i
aW5lZFBoYXNlID0gKGV2ZW50LnBoYXNlKCkgPDwgOCkgfCAoZXZlbnQubW9tZW50dW1QaGFzZSgp
KTsKLSAgICBtX2N1cnJlbnRMb2dTdGF0ZS5sYXRlc3RFdmVudFBoYXNlID0gY29tYmluZWRQaGFz
ZTsKICAgICBtX2N1cnJlbnRMb2dTdGF0ZS50b3RhbEV2ZW50T2Zmc2V0ICs9IGV2ZW50LmRlbHRh
KCkuaGVpZ2h0KCk7CiAgICAgaWYgKCFpc01vbWVudHVtRXZlbnREdXJpbmdTeW50aGV0aWNHZXN0
dXJlKSB7CiAgICAgICAgIC8vIExvZyBldmVudHMgdGhhdCB3ZSBkb24ndCBibG9jayB0byB0aGUg
Z2VuZXJhdGVkIG9mZnNldHMgbG9nIGFzIHdlbGwsCiAgICAgICAgIC8vIGV2ZW4gdGhvdWdoIHdl
IGRpZG4ndCB0ZWNobmljYWxseSBnZW5lcmF0ZSB0aGVtLCBqdXN0IHBhc3NlZCB0aGVtIHRocm91
Z2guCi0gICAgICAgIG1fY3VycmVudExvZ1N0YXRlLmxhdGVzdEdlbmVyYXRlZFBoYXNlID0gY29t
YmluZWRQaGFzZTsKICAgICAgICAgbV9jdXJyZW50TG9nU3RhdGUudG90YWxHZW5lcmF0ZWRPZmZz
ZXQgKz0gZXZlbnQuZGVsdGEoKS5oZWlnaHQoKTsKLSAgICB9Ci0gICAgcHVzaExvZ0VudHJ5KCk7
CisgICAgICAgIHB1c2hMb2dFbnRyeShjb21iaW5lZFBoYXNlLCBjb21iaW5lZFBoYXNlKTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgcHVzaExvZ0VudHJ5KDAsIGNvbWJpbmVkUGhhc2UpOworICAgIAog
I2VuZGlmCiAKICAgICAvLyBDb25zdW1lIGFueSBub3JtYWwgbW9tZW50dW0gZXZlbnRzIHdoaWxl
IHdlJ3JlIGluc2lkZSBhIHN5bnRoZXRpYyBtb21lbnR1bSBnZXN0dXJlLgpAQCAtMTUyLDYgKzE1
MiwxMCBAQCB2b2lkIE1vbWVudHVtRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFN5bnRoZXRpY01v
bWVudHVtRXZlbnQoV2ViV2hlZWxFdmVudDo6UGhhcwogCiAgICAgYXV0byBhcHBLaXRTY3JvbGxN
dWx0aXBsaWVyID0gYXBwS2l0U2Nyb2xsTXVsdGlwbGllckZvckV2ZW50KCptX2N1cnJlbnRHZXN0
dXJlLmluaXRpYXRpbmdFdmVudCk7CiAgICAgYXV0byBhcHBLaXRBY2NlbGVyYXRlZERlbHRhID0g
ZGVsdGEgKiBhcHBLaXRTY3JvbGxNdWx0aXBsaWVyOworCisgICAgaWYgKHBoYXNlID09IFdlYldo
ZWVsRXZlbnQ6OlBoYXNlQ2hhbmdlZCAmJiBhcHBLaXRBY2NlbGVyYXRlZERlbHRhLmlzWmVybygp
KQorICAgICAgICByZXR1cm47CisKICAgICBhdXRvIHdoZWVsVGlja3MgPSBhcHBLaXRBY2NlbGVy
YXRlZERlbHRhIC8gV2ViQ29yZTo6U2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpOwogICAg
IGF1dG8gdGltZSA9IFdhbGxUaW1lOjpub3coKTsKIApAQCAtMTc3LDkgKzE4MSw4IEBAIHZvaWQg
TW9tZW50dW1FdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoU3ludGhldGljTW9tZW50dW1FdmVudChX
ZWJXaGVlbEV2ZW50OjpQaGFzCiAgICAgbV9kaXNwYXRjaGVyLmludGVybmFsV2hlZWxFdmVudCht
X2N1cnJlbnRHZXN0dXJlLnBhZ2VJZGVudGlmaWVyLCBzeW50aGV0aWNFdmVudCwgbV9sYXN0UnVi
YmVyQmFuZGFibGVFZGdlcywgRXZlbnREaXNwYXRjaGVyOjpXaGVlbEV2ZW50T3JpZ2luOjpNb21l
bnR1bUV2ZW50RGlzcGF0Y2hlcik7CiAKICNpZiBFTkFCTEUoTU9NRU5UVU1fRVZFTlRfRElTUEFU
Q0hFUl9URU1QT1JBUllfTE9HR0lORykKLSAgICBtX2N1cnJlbnRMb2dTdGF0ZS5sYXRlc3RHZW5l
cmF0ZWRQaGFzZSA9IHBoYXNlOwogICAgIG1fY3VycmVudExvZ1N0YXRlLnRvdGFsR2VuZXJhdGVk
T2Zmc2V0ICs9IGFwcEtpdEFjY2VsZXJhdGVkRGVsdGEuaGVpZ2h0KCk7Ci0gICAgcHVzaExvZ0Vu
dHJ5KCk7CisgICAgcHVzaExvZ0VudHJ5KHBoYXNlLCAwKTsKICNlbmRpZgogfQogCkBAIC0yOTQs
MTUgKzI5NywxOCBAQCB2b2lkIE1vbWVudHVtRXZlbnREaXNwYXRjaGVyOjpwYWdlU2NyZWVuRGlk
Q2hhbmdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRAogCiBXZWJDb3JlOjpGbG9hdFNp
emUgTW9tZW50dW1FdmVudERpc3BhdGNoZXI6OmNvbnN1bWVEZWx0YUZvckN1cnJlbnRUaW1lKCkK
IHsKLSAgICBhdXRvIGFuaW1hdGlvblRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKSAtIG1fY3Vy
cmVudEdlc3R1cmUuc3RhcnRUaW1lOwotICAgIGF1dG8gZGVzaXJlZE9mZnNldCA9IG9mZnNldEF0
VGltZShhbmltYXRpb25UaW1lKTsKKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgZGVsdGE7CiAKLSNp
ZiAhRU5BQkxFKE1PTUVOVFVNX0VWRU5UX0RJU1BBVENIRVJfUFJFTUFUVVJFX1JPVU5ESU5HKQot
ICAgIC8vIEludGVudGlvbmFsIGRlbHRhIHJvdW5kaW5nIChidXQgYXQgdGhlIGVuZCEpLgotICAg
IFdlYkNvcmU6OkZsb2F0U2l6ZSBkZWx0YSA9IHJvdW5kZWRJbnRTaXplKGRlc2lyZWRPZmZzZXQg
LSBtX2N1cnJlbnRHZXN0dXJlLmN1cnJlbnRPZmZzZXQpOwotI2Vsc2UKLSAgICBXZWJDb3JlOjpG
bG9hdFNpemUgZGVsdGEgPSBkZXNpcmVkT2Zmc2V0IC0gbV9jdXJyZW50R2VzdHVyZS5jdXJyZW50
T2Zmc2V0OwotI2VuZGlmCisgICAgYXV0byBhbmltYXRpb25UaW1lID0gTW9ub3RvbmljVGltZTo6
bm93KCkgLSBtX2N1cnJlbnRHZXN0dXJlLnN0YXJ0VGltZTsKKyAgICBpZiAoYW5pbWF0aW9uVGlt
ZSA8IG1fY3VycmVudEdlc3R1cmUudGFpbFN0YXJ0VGltZSkgeworICAgICAgICBhdXRvIGRlc2ly
ZWRPZmZzZXQgPSBvZmZzZXRBdFRpbWUoYW5pbWF0aW9uVGltZSk7CisgICAgICAgIGRlbHRhID0g
cm91bmRlZEludFNpemUoZGVzaXJlZE9mZnNldCAtIG1fY3VycmVudEdlc3R1cmUuY3VycmVudE9m
ZnNldCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKG1fY3VycmVudEdlc3R1cmUuY3VycmVu
dFRhaWxEZWx0YUluZGV4IDwgbV9jdXJyZW50R2VzdHVyZS50YWlsRGVsdGFUYWJsZS5zaXplKCkp
CisgICAgICAgICAgICBkZWx0YSA9IC1tX2N1cnJlbnRHZXN0dXJlLnRhaWxEZWx0YVRhYmxlW21f
Y3VycmVudEdlc3R1cmUuY3VycmVudFRhaWxEZWx0YUluZGV4KytdOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBkZWx0YSA9IHsgfTsKKyAgICB9CiAKICAgICBtX2N1cnJlbnRHZXN0dXJlLmN1
cnJlbnRPZmZzZXQgKz0gZGVsdGE7CiAKQEAgLTM2MywyNyArMzY5LDEwOSBAQCB2b2lkIE1vbWVu
dHVtRXZlbnREaXNwYXRjaGVyOjpkaWRSZWNlaXZlU2Nyb2xsRXZlbnQoY29uc3QgV2ViV2hlZWxF
dmVudCYgZXZlbnQpCiAKIHZvaWQgTW9tZW50dW1FdmVudERpc3BhdGNoZXI6OmJ1aWxkT2Zmc2V0
VGFibGVXaXRoSW5pdGlhbERlbHRhKFdlYkNvcmU6OkZsb2F0U2l6ZSBpbml0aWFsVW5hY2NlbGVy
YXRlZERlbHRhKQogewotI2lmIEVOQUJMRShNT01FTlRVTV9FVkVOVF9ESVNQQVRDSEVSX1BSRU1B
VFVSRV9ST1VORElORykKLSAgICBtX2N1cnJlbnRHZXN0dXJlLmNhcnJ5T2Zmc2V0ID0geyB9Owot
I2VuZGlmCiAgICAgbV9jdXJyZW50R2VzdHVyZS5vZmZzZXRUYWJsZS5jbGVhcigpOwogCiAgICAg
V2ViQ29yZTo6RmxvYXRTaXplIGFjY3VtdWxhdGVkT2Zmc2V0OwogICAgIFdlYkNvcmU6OkZsb2F0
U2l6ZSB1bmFjY2VsZXJhdGVkRGVsdGEgPSBpbml0aWFsVW5hY2NlbGVyYXRlZERlbHRhOwogCisg
ICAgZmxvYXQgcGh5c2ljYWxDdXJ2ZU11bHRpcGxpZXIgPSBpZGVhbEN1cnZlRnJhbWVSYXRlIC8g
bV9jdXJyZW50R2VzdHVyZS5hY2NlbGVyYXRpb25DdXJ2ZS0+ZnJhbWVSYXRlKCk7CisgICAgYm9v
bCBpblRhaWwgPSBmYWxzZTsKKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgdGFpbENhcnJ5OworCiAg
ICAgZG8gewogICAgICAgICBXZWJDb3JlOjpGbG9hdFNpemUgYWNjZWxlcmF0ZWREZWx0YTsKICAg
ICAgICAgc3RkOjp0aWUodW5hY2NlbGVyYXRlZERlbHRhLCBhY2NlbGVyYXRlZERlbHRhKSA9IGNv
bXB1dGVOZXh0RGVsdGEodW5hY2NlbGVyYXRlZERlbHRhKTsKIAorICAgICAgICBjb25zdCBmbG9h
dCB0YWlsU3RhcnRVbmFjY2VsZXJhdGVkRGVsdGEgPSA2LmY7CisgICAgICAgIGlmICghaW5UYWls
ICYmIHN0ZDo6YWJzKHVuYWNjZWxlcmF0ZWREZWx0YS53aWR0aCgpKSA8IHRhaWxTdGFydFVuYWNj
ZWxlcmF0ZWREZWx0YSAmJiBzdGQ6OmFicyh1bmFjY2VsZXJhdGVkRGVsdGEuaGVpZ2h0KCkpIDwg
dGFpbFN0YXJ0VW5hY2NlbGVyYXRlZERlbHRhKSB7CisgICAgICAgICAgICBpblRhaWwgPSB0cnVl
OworICAgICAgICAgICAgbV9jdXJyZW50R2VzdHVyZS50YWlsU3RhcnRUaW1lID0gaWRlYWxDdXJ2
ZUZyYW1lSW50ZXJ2YWwgKiBtX2N1cnJlbnRHZXN0dXJlLm9mZnNldFRhYmxlLnNpemUoKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChpblRhaWwpIHsKKyAgICAgICAgICAgIGF1dG8gdGFpbERl
bHRhID0gYWNjZWxlcmF0ZWREZWx0YSAqIHBoeXNpY2FsQ3VydmVNdWx0aXBsaWVyOworICAgICAg
ICAgICAgYXV0byBkZWx0YVdpdGhDYXJyeSA9IHRhaWxEZWx0YSArIHRhaWxDYXJyeTsKKyAgICAg
ICAgICAgIGF1dG8gcXVhbnRpemVkRGVsdGEgPSByb3VuZGVkSW50U2l6ZShkZWx0YVdpdGhDYXJy
eSk7CisgICAgICAgICAgICB0YWlsQ2FycnkgPSBkZWx0YVdpdGhDYXJyeSAtIHF1YW50aXplZERl
bHRhOworICAgICAgICAgICAgbV9jdXJyZW50R2VzdHVyZS50YWlsRGVsdGFUYWJsZS5hcHBlbmQo
cXVhbnRpemVkRGVsdGEpOworICAgICAgICB9CisKICAgICAgICAgYWNjdW11bGF0ZWRPZmZzZXQg
Kz0gYWNjZWxlcmF0ZWREZWx0YTsKICAgICAgICAgbV9jdXJyZW50R2VzdHVyZS5vZmZzZXRUYWJs
ZS5hcHBlbmQoYWNjdW11bGF0ZWRPZmZzZXQpOworCiAgICAgfSB3aGlsZSAoc3RkOjphYnModW5h
Y2NlbGVyYXRlZERlbHRhLndpZHRoKCkpID4gMC41IHx8IHN0ZDo6YWJzKHVuYWNjZWxlcmF0ZWRE
ZWx0YS5oZWlnaHQoKSkgPiAwLjUpOwogCisgICAgZXF1YWxpemVUYWlsR2FwcygpOworCiAjaWYg
RU5BQkxFKE1PTUVOVFVNX0VWRU5UX0RJU1BBVENIRVJfVEVNUE9SQVJZX0xPR0dJTkcpCi0gICAg
UkVMRUFTRV9MT0coU2Nyb2xsQW5pbWF0aW9ucywgIk1vbWVudHVtRXZlbnREaXNwYXRjaGVyIGJ1
aWx0IHRhYmxlIHdpdGggJWxkIGZyYW1lcywgaW5pdGlhbCBkZWx0YSAlZiAlZiwgZGlzdGFuY2Ug
JWYgJWYgKGluaXRpYWwgZGVsdGEgZnJvbSBsYXN0IGNoYW5nZWQgZXZlbnQgJWYgJWYpIiwgbV9j
dXJyZW50R2VzdHVyZS5vZmZzZXRUYWJsZS5zaXplKCksIGluaXRpYWxVbmFjY2VsZXJhdGVkRGVs
dGEud2lkdGgoKSwgaW5pdGlhbFVuYWNjZWxlcmF0ZWREZWx0YS5oZWlnaHQoKSwgYWNjdW11bGF0
ZWRPZmZzZXQud2lkdGgoKSwgYWNjdW11bGF0ZWRPZmZzZXQuaGVpZ2h0KCksIG1fbGFzdEFjdGl2
ZVBoYXNlRGVsdGEud2lkdGgoKSwgbV9sYXN0QWN0aXZlUGhhc2VEZWx0YS5oZWlnaHQoKSk7Cisg
ICAgUkVMRUFTRV9MT0coU2Nyb2xsQW5pbWF0aW9ucywgIk1vbWVudHVtRXZlbnREaXNwYXRjaGVy
IGJ1aWx0IHRhYmxlIHdpdGggJWxkIGZyYW1lcyAoJWxkIHRhaWwgZnJhbWVzKSwgaW5pdGlhbCBk
ZWx0YSAlZiAlZiwgZGlzdGFuY2UgJWYgJWYgKGluaXRpYWwgZGVsdGEgZnJvbSBsYXN0IGNoYW5n
ZWQgZXZlbnQgJWYgJWYpIiwgbV9jdXJyZW50R2VzdHVyZS5vZmZzZXRUYWJsZS5zaXplKCksIG1f
Y3VycmVudEdlc3R1cmUudGFpbERlbHRhVGFibGUuc2l6ZSgpLCBpbml0aWFsVW5hY2NlbGVyYXRl
ZERlbHRhLndpZHRoKCksIGluaXRpYWxVbmFjY2VsZXJhdGVkRGVsdGEuaGVpZ2h0KCksIGFjY3Vt
dWxhdGVkT2Zmc2V0LndpZHRoKCksIGFjY3VtdWxhdGVkT2Zmc2V0LmhlaWdodCgpLCBtX2xhc3RB
Y3RpdmVQaGFzZURlbHRhLndpZHRoKCksIG1fbGFzdEFjdGl2ZVBoYXNlRGVsdGEuaGVpZ2h0KCkp
OwogI2VuZGlmCiB9CiAKK3ZvaWQgTW9tZW50dW1FdmVudERpc3BhdGNoZXI6OmVxdWFsaXplVGFp
bEdhcHMoKQoreworICAgIGF1dG8mIHRhYmxlID0gbV9jdXJyZW50R2VzdHVyZS50YWlsRGVsdGFU
YWJsZTsKKyAgICBzaXplX3QgaW5pdGlhbFRhYmxlU2l6ZSA9IHRhYmxlLnNpemUoKTsKKworICAg
IFZlY3RvcjxmbG9hdD4gZGVsdGFzWzJdOworICAgIGRlbHRhc1swXS5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KGluaXRpYWxUYWJsZVNpemUpOworICAgIGRlbHRhc1sxXS5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KGluaXRpYWxUYWJsZVNpemUpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBp
bml0aWFsVGFibGVTaXplOyBpKyspIHsKKyAgICAgICAgZGVsdGFzWzBdLnVuY2hlY2tlZEFwcGVu
ZCh0YWJsZVtpXS53aWR0aCgpKTsKKyAgICAgICAgZGVsdGFzWzFdLnVuY2hlY2tlZEFwcGVuZCh0
YWJsZVtpXS5oZWlnaHQoKSk7CisgICAgfQorICAgIAorICAgIGlmIChhdXRvIGZpcnN0WmVyb0lu
ZGV4ID0gZGVsdGFzWzBdLmZpbmQoMCkpCisgICAgICAgIHN0ZDo6c29ydChkZWx0YXNbMF0uYmVn
aW4oKSwgc3RkOjpuZXh0KGRlbHRhc1swXS5iZWdpbigpLCBmaXJzdFplcm9JbmRleCkpOworICAg
IGlmIChhdXRvIGZpcnN0WmVyb0luZGV4ID0gZGVsdGFzWzFdLmZpbmQoMCkpCisgICAgICAgIHN0
ZDo6c29ydChkZWx0YXNbMV0uYmVnaW4oKSwgc3RkOjpuZXh0KGRlbHRhc1sxXS5iZWdpbigpLCBm
aXJzdFplcm9JbmRleCkpOworCisgICAgdHlwZWRlZiB1bnNpZ25lZCBHYXBTaXplWzJdOworICAg
IEdhcFNpemUgbWluaW11bUdhcCA9IHsgMCwgMCB9OworICAgIEdhcFNpemUgY3VycmVudEdhcCA9
IHsgMCwgMCB9OworICAgIEdhcFNpemUgcmVtYWluaW5nR2FwVG9HZW5lcmF0ZSA9IHsgMCwgMCB9
OworICAgIHVuc2lnbmVkIG9yaWdpbmFsVGFibGVJbmRleFsyXSA9IHsgMCwgMCB9OworCisgICAg
YXV0byB0YWtlTmV4dERlbHRhID0gWyZdICh1aW50OF90IGF4aXMpIC0+IGZsb2F0IHsKKyAgICAg
ICAgaWYgKG9yaWdpbmFsVGFibGVJbmRleFtheGlzXSA+IGluaXRpYWxUYWJsZVNpemUpCisgICAg
ICAgICAgICByZXR1cm4gMC5mOworCisgICAgICAgIGF1dG8gdmFsdWUgPSBkZWx0YXNbYXhpc11b
b3JpZ2luYWxUYWJsZUluZGV4W2F4aXNdXTsKKworICAgICAgICAvLyBQcm9kdWNlIGEgZ2FwIG5v
IG1hdHRlciB3aGF0LCBjb25zdW1pbmcgaXQgZnJvbSB0aGUgb3JpZ2luYWwgdGFibGUgaWYgaXQg
d2FzIHRoZXJlLgorICAgICAgICBpZiAocmVtYWluaW5nR2FwVG9HZW5lcmF0ZVtheGlzXSkgewor
ICAgICAgICAgICAgcmVtYWluaW5nR2FwVG9HZW5lcmF0ZVtheGlzXS0tOworICAgICAgICAgICAg
aWYgKCF2YWx1ZSkKKyAgICAgICAgICAgICAgICBvcmlnaW5hbFRhYmxlSW5kZXhbYXhpc10rKzsK
KyAgICAgICAgICAgIHJldHVybiAwLmY7CisgICAgICAgIH0KKworICAgICAgICBpZiAodmFsdWUp
IHsKKyAgICAgICAgICAgIG1pbmltdW1HYXBbYXhpc10gPSBzdGQ6Om1heChtaW5pbXVtR2FwW2F4
aXNdLCBjdXJyZW50R2FwW2F4aXNdKTsKKyAgICAgICAgICAgIHJlbWFpbmluZ0dhcFRvR2VuZXJh
dGVbYXhpc10gPSBjdXJyZW50R2FwW2F4aXNdIC0gbWluaW11bUdhcFtheGlzXTsKKyAgICAgICAg
ICAgIGN1cnJlbnRHYXBbYXhpc10gPSAwOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGN1
cnJlbnRHYXBbYXhpc10rKzsKKworICAgICAgICBvcmlnaW5hbFRhYmxlSW5kZXhbYXhpc10rKzsK
KworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgfTsKKworICAgIHNpemVfdCBmaW5hbFRhYmxl
U2l6ZSA9IDA7CisgICAgdGFibGUuc2hyaW5rKDApOworCisgICAgd2hpbGUgKG9yaWdpbmFsVGFi
bGVJbmRleFswXSA8IGluaXRpYWxUYWJsZVNpemUgJiYgb3JpZ2luYWxUYWJsZUluZGV4WzFdIDwg
aW5pdGlhbFRhYmxlU2l6ZSkgeworICAgICAgICBXZWJDb3JlOjpGbG9hdFNpemUgZGVsdGEodGFr
ZU5leHREZWx0YSgwKSwgdGFrZU5leHREZWx0YSgxKSk7CisgICAgICAgIHRhYmxlLmFwcGVuZChk
ZWx0YSk7CisKKyAgICAgICAgaWYgKCFkZWx0YS5pc1plcm8oKSkKKyAgICAgICAgICAgIGZpbmFs
VGFibGVTaXplID0gdGFibGUuc2l6ZSgpOworICAgIH0KKworICAgIHRhYmxlLnNocmluayhmaW5h
bFRhYmxlU2l6ZSk7Cit9CisKIHN0YXRpYyBmbG9hdCBpbnRlcnBvbGF0ZShmbG9hdCBhLCBmbG9h
dCBiLCBmbG9hdCB0KQogewogICAgIHJldHVybiBhICsgdCAqIChiIC0gYSk7CkBAIC00MzMsMjgg
KzUyMSw4IEBAIHN0ZDo6cGFpcjxXZWJDb3JlOjpGbG9hdFNpemUsIFdlYkNvcmU6OkZsb2F0U2l6
ZT4gTW9tZW50dW1FdmVudERpc3BhdGNoZXI6OmNvbXB1CiAgICAgZmxvYXQgZGVjYXlSYXRlID0g
bW9tZW50dW1EZWNheVJhdGUodW5hY2NlbGVyYXRlZERlbHRhLCBpZGVhbEN1cnZlRnJhbWVJbnRl
cnZhbCk7CiAgICAgdW5hY2NlbGVyYXRlZERlbHRhLnNjYWxlKGRlY2F5UmF0ZSk7CiAKLSAgICBh
dXRvIHF1YW50aXplZFVuYWNjZWxlcmF0ZWREZWx0YSA9IHVuYWNjZWxlcmF0ZWREZWx0YTsKLQot
I2lmIEVOQUJMRShNT01FTlRVTV9FVkVOVF9ESVNQQVRDSEVSX1BSRU1BVFVSRV9ST1VORElORykK
LSAgICAvLyBSb3VuZCBhbmQgY2FycnkuCi0gICAgaW50MzJfdCBxdWFudGl6ZWRYID0gc3RkOjpy
b3VuZChxdWFudGl6ZWRVbmFjY2VsZXJhdGVkRGVsdGEud2lkdGgoKSk7Ci0gICAgaW50MzJfdCBx
dWFudGl6ZWRZID0gc3RkOjpyb3VuZChxdWFudGl6ZWRVbmFjY2VsZXJhdGVkRGVsdGEuaGVpZ2h0
KCkpOwotCi0gICAgaWYgKHN0ZDo6YWJzKHF1YW50aXplZFVuYWNjZWxlcmF0ZWREZWx0YS53aWR0
aCgpKSA8IDEgJiYgc3RkOjphYnMocXVhbnRpemVkVW5hY2NlbGVyYXRlZERlbHRhLmhlaWdodCgp
KSA8IDEpIHsKLSAgICAgICAgZmxvYXQgZGVsdGFYSW5jbHVkaW5nQ2FycnkgPSBxdWFudGl6ZWRV
bmFjY2VsZXJhdGVkRGVsdGEud2lkdGgoKSArIG1fY3VycmVudEdlc3R1cmUuY2FycnlPZmZzZXQu
d2lkdGgoKTsKLSAgICAgICAgZmxvYXQgZGVsdGFZSW5jbHVkaW5nQ2FycnkgPSBxdWFudGl6ZWRV
bmFjY2VsZXJhdGVkRGVsdGEuaGVpZ2h0KCkgKyBtX2N1cnJlbnRHZXN0dXJlLmNhcnJ5T2Zmc2V0
LmhlaWdodCgpOwotCi0gICAgICAgIC8vIEludGVudGlvbmFsIHRydW5jYXRpb24uCi0gICAgICAg
IHF1YW50aXplZFggPSBkZWx0YVhJbmNsdWRpbmdDYXJyeTsKLSAgICAgICAgcXVhbnRpemVkWSA9
IGRlbHRhWUluY2x1ZGluZ0NhcnJ5OwotICAgICAgICBtX2N1cnJlbnRHZXN0dXJlLmNhcnJ5T2Zm
c2V0ID0geyBkZWx0YVhJbmNsdWRpbmdDYXJyeSAtIHF1YW50aXplZFgsIGRlbHRhWUluY2x1ZGlu
Z0NhcnJ5IC0gcXVhbnRpemVkWSB9OwotICAgIH0KLQotICAgIHF1YW50aXplZFVuYWNjZWxlcmF0
ZWREZWx0YSA9IHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHF1YW50aXplZFgpLCBzdGF0aWNfY2FzdDxm
bG9hdD4ocXVhbnRpemVkWSkgfTsKLSNlbmRpZgotCiAgICAgLy8gVGhlIGRlbHRhIHF1ZXVlIG9w
ZXJhdGVzIG9uIHByZS1hY2NlbGVyYXRpb24gZGVsdGFzLCBzbyBpbnNlcnQgdGhlIG5ldyBldmVu
dCAqYmVmb3JlKiBhY2NlbGVyYXRpbmcuCi0gICAgZGlkUmVjZWl2ZVNjcm9sbEV2ZW50V2l0aElu
dGVydmFsKHF1YW50aXplZFVuYWNjZWxlcmF0ZWREZWx0YSwgaWRlYWxDdXJ2ZUZyYW1lSW50ZXJ2
YWwpOworICAgIGRpZFJlY2VpdmVTY3JvbGxFdmVudFdpdGhJbnRlcnZhbCh1bmFjY2VsZXJhdGVk
RGVsdGEsIGlkZWFsQ3VydmVGcmFtZUludGVydmFsKTsKIAogICAgIGF1dG8gYWNjZWxlcmF0ZUF4
aXMgPSBbJl0gKEhpc3RvcmljYWxEZWx0YXMmIGRlbHRhcywgZmxvYXQgdmFsdWUpIHsKICAgICAg
ICAgZmxvYXQgdG90YWxEZWx0YSA9IDA7CkBAIC00OTksOCArNTY3LDggQEAgc3RkOjpwYWlyPFdl
YkNvcmU6OkZsb2F0U2l6ZSwgV2ViQ29yZTo6RmxvYXRTaXplPiBNb21lbnR1bUV2ZW50RGlzcGF0
Y2hlcjo6Y29tcHUKICAgICB9OwogCiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIGFjY2VsZXJhdGVk
RGVsdGEoCi0gICAgICAgIGFjY2VsZXJhdGVBeGlzKG1fZGVsdGFIaXN0b3J5WCwgcXVhbnRpemVk
VW5hY2NlbGVyYXRlZERlbHRhLndpZHRoKCkpLAotICAgICAgICBhY2NlbGVyYXRlQXhpcyhtX2Rl
bHRhSGlzdG9yeVksIHF1YW50aXplZFVuYWNjZWxlcmF0ZWREZWx0YS5oZWlnaHQoKSkKKyAgICAg
ICAgYWNjZWxlcmF0ZUF4aXMobV9kZWx0YUhpc3RvcnlYLCB1bmFjY2VsZXJhdGVkRGVsdGEud2lk
dGgoKSksCisgICAgICAgIGFjY2VsZXJhdGVBeGlzKG1fZGVsdGFIaXN0b3J5WSwgdW5hY2NlbGVy
YXRlZERlbHRhLmhlaWdodCgpKQogICAgICk7CiAKICNpZiBFTkFCTEUoTU9NRU5UVU1fRVZFTlRf
RElTUEFUQ0hFUl9URU1QT1JBUllfTE9HR0lORykKQEAgLTUxMiw5ICs1ODAsMTEgQEAgc3RkOjpw
YWlyPFdlYkNvcmU6OkZsb2F0U2l6ZSwgV2ViQ29yZTo6RmxvYXRTaXplPiBNb21lbnR1bUV2ZW50
RGlzcGF0Y2hlcjo6Y29tcHUKIAogI2lmIEVOQUJMRShNT01FTlRVTV9FVkVOVF9ESVNQQVRDSEVS
X1RFTVBPUkFSWV9MT0dHSU5HKQogCi12b2lkIE1vbWVudHVtRXZlbnREaXNwYXRjaGVyOjpwdXNo
TG9nRW50cnkoKQordm9pZCBNb21lbnR1bUV2ZW50RGlzcGF0Y2hlcjo6cHVzaExvZ0VudHJ5KHVp
bnQzMl90IGdlbmVyYXRlZFBoYXNlLCB1aW50MzJfdCBldmVudFBoYXNlKQogewogICAgIG1fY3Vy
cmVudExvZ1N0YXRlLnRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKKyAgICBtX2N1cnJlbnRM
b2dTdGF0ZS5nZW5lcmF0ZWRQaGFzZSA9IGdlbmVyYXRlZFBoYXNlOworICAgIG1fY3VycmVudExv
Z1N0YXRlLmV2ZW50UGhhc2UgPSBldmVudFBoYXNlOwogICAgIG1fbG9nLmFwcGVuZChtX2N1cnJl
bnRMb2dTdGF0ZSk7CiB9CiAKQEAgLTUyOSw3ICs1OTksNyBAQCB2b2lkIE1vbWVudHVtRXZlbnRE
aXNwYXRjaGVyOjpmbHVzaExvZygpCiAgICAgYXV0byBzdGFydFRpbWUgPSBtX2xvZ1swXS50aW1l
OwogICAgIFJFTEVBU0VfTE9HKFNjcm9sbEFuaW1hdGlvbnMsICJNb21lbnR1bUV2ZW50RGlzcGF0
Y2hlciBldmVudCBsb2c6IHRpbWUsZ2VuZXJhdGVkT2Zmc2V0LGdlbmVyYXRlZFBoYXNlLGV2ZW50
T2Zmc2V0LGV2ZW50UGhhc2UiKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVudHJ5IDogbV9sb2cp
Ci0gICAgICAgIFJFTEVBU0VfTE9HKFNjcm9sbEFuaW1hdGlvbnMsICJNb21lbnR1bUV2ZW50RGlz
cGF0Y2hlciBldmVudCBsb2c6ICVmLCVmLCVkLCVmLCVkIiwgKGVudHJ5LnRpbWUgLSBzdGFydFRp
bWUpLnNlY29uZHMoKSwgZW50cnkudG90YWxHZW5lcmF0ZWRPZmZzZXQsIGVudHJ5LmxhdGVzdEdl
bmVyYXRlZFBoYXNlLCBlbnRyeS50b3RhbEV2ZW50T2Zmc2V0LCBlbnRyeS5sYXRlc3RFdmVudFBo
YXNlKTsKKyAgICAgICAgUkVMRUFTRV9MT0coU2Nyb2xsQW5pbWF0aW9ucywgIk1vbWVudHVtRXZl
bnREaXNwYXRjaGVyIGV2ZW50IGxvZzogJWYsJWYsJWQsJWYsJWQiLCAoZW50cnkudGltZSAtIHN0
YXJ0VGltZSkuc2Vjb25kcygpLCBlbnRyeS50b3RhbEdlbmVyYXRlZE9mZnNldCwgZW50cnkuZ2Vu
ZXJhdGVkUGhhc2UsIGVudHJ5LnRvdGFsRXZlbnRPZmZzZXQsIGVudHJ5LmV2ZW50UGhhc2UpOwog
CiAgICAgbV9sb2cuY2xlYXIoKTsKICAgICBtX2N1cnJlbnRMb2dTdGF0ZSA9IHsgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL01vbWVudHVtRXZlbnREaXNw
YXRjaGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Nb21lbnR1bUV2ZW50
RGlzcGF0Y2hlci5oCmluZGV4IGU5OWM2MDBhMWQyODFmMGI1ZDU5ZTk5YWEzMDIwMGEyN2IyNTI0
YzAuLjkzZmQzNDdjNDU1ZTRjZTU4NWU3ZGQ4NzkyYTIwOTA0Y2ZmMzcxMTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL01vbWVudHVtRXZlbnREaXNwYXRjaGVy
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvTW9tZW50dW1FdmVudERp
c3BhdGNoZXIuaApAQCAtMjcsOCArMjcsNiBAQAogCiAjaWYgRU5BQkxFKE1PTUVOVFVNX0VWRU5U
X0RJU1BBVENIRVIpCiAKLS8vIEZJWE1FOiBSZW1vdmUgdGhpcyBvbmNlIHdlIGRlY2lkZSB3aGlj
aCB2ZXJzaW9uIHdlIHdhbnQuCi0jZGVmaW5lIEVOQUJMRV9NT01FTlRVTV9FVkVOVF9ESVNQQVRD
SEVSX1BSRU1BVFVSRV9ST1VORElORyAwCiAjZGVmaW5lIEVOQUJMRV9NT01FTlRVTV9FVkVOVF9E
SVNQQVRDSEVSX1RFTVBPUkFSWV9MT0dHSU5HIDEKIAogI2luY2x1ZGUgIkRpc3BsYXlMaW5rT2Jz
ZXJ2ZXJJRC5oIgpAQCAtODAsNiArNzgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlzcGF0Y2hT
eW50aGV0aWNNb21lbnR1bUV2ZW50KFdlYldoZWVsRXZlbnQ6OlBoYXNlLCBXZWJDb3JlOjpGbG9h
dFNpemUgZGVsdGEpOwogCiAgICAgdm9pZCBidWlsZE9mZnNldFRhYmxlV2l0aEluaXRpYWxEZWx0
YShXZWJDb3JlOjpGbG9hdFNpemUpOworICAgIHZvaWQgZXF1YWxpemVUYWlsR2FwcygpOwogCiAg
ICAgLy8gT25jZSBjb25zdW1lZCwgdGhpcyBkZWx0YSAqbXVzdCogYmUgZGlzcGF0Y2hlZCBpbiBh
biBldmVudC4KICAgICBXZWJDb3JlOjpGbG9hdFNpemUgY29uc3VtZURlbHRhRm9yQ3VycmVudFRp
bWUoKTsKQEAgLTkxLDcgKzkwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVTY3Jv
bGxFdmVudChjb25zdCBXZWJXaGVlbEV2ZW50Jik7CiAKICNpZiBFTkFCTEUoTU9NRU5UVU1fRVZF
TlRfRElTUEFUQ0hFUl9URU1QT1JBUllfTE9HR0lORykKLSAgICB2b2lkIHB1c2hMb2dFbnRyeSgp
OworICAgIHZvaWQgcHVzaExvZ0VudHJ5KHVpbnQzMl90IGdlbmVyYXRlZFBoYXNlLCB1aW50MzJf
dCBldmVudFBoYXNlKTsKICAgICB2b2lkIGZsdXNoTG9nKCk7CiAKICAgICBXZWJDb3JlOjpGbG9h
dFNpemUgbV9sYXN0QWN0aXZlUGhhc2VEZWx0YTsKQEAgLTEwMiw4ICsxMDEsOCBAQCBwcml2YXRl
OgogICAgICAgICBmbG9hdCB0b3RhbEdlbmVyYXRlZE9mZnNldCB7IDAgfTsKICAgICAgICAgZmxv
YXQgdG90YWxFdmVudE9mZnNldCB7IDAgfTsKIAotICAgICAgICB1aW50MzJfdCBsYXRlc3RHZW5l
cmF0ZWRQaGFzZSB7IDAgfTsKLSAgICAgICAgdWludDMyX3QgbGF0ZXN0RXZlbnRQaGFzZSB7IDAg
fTsKKyAgICAgICAgdWludDMyX3QgZ2VuZXJhdGVkUGhhc2UgeyAwIH07CisgICAgICAgIHVpbnQz
Ml90IGV2ZW50UGhhc2UgeyAwIH07CiAgICAgfTsKICAgICBMb2dFbnRyeSBtX2N1cnJlbnRMb2dT
dGF0ZTsKICAgICBWZWN0b3I8TG9nRW50cnk+IG1fbG9nOwpAQCAtMTMzLDcgKzEzMiwxMCBAQCBw
cml2YXRlOgogICAgICAgICBXZWJDb3JlOjpGbG9hdFNpemUgY3VycmVudE9mZnNldDsKICAgICAg
ICAgTW9ub3RvbmljVGltZSBzdGFydFRpbWU7CiAKLSAgICAgICAgVmVjdG9yPFdlYkNvcmU6OkZs
b2F0U2l6ZT4gb2Zmc2V0VGFibGU7CisgICAgICAgIFZlY3RvcjxXZWJDb3JlOjpGbG9hdFNpemU+
IG9mZnNldFRhYmxlOyAvLyBBbHdheXMgYXQgNjBIeiBpbnRlcnZhbHMuCisgICAgICAgIFZlY3Rv
cjxXZWJDb3JlOjpGbG9hdFNpemU+IHRhaWxEZWx0YVRhYmxlOyAvLyBBbHdheXMgYXQgZXZlbnQg
ZGlzcGF0Y2ggaW50ZXJ2YWxzLgorICAgICAgICBTZWNvbmRzIHRhaWxTdGFydFRpbWU7CisgICAg
ICAgIHVuc2lnbmVkIGN1cnJlbnRUYWlsRGVsdGFJbmRleCB7IDAgfTsKIAogI2lmIEVOQUJMRShN
T01FTlRVTV9FVkVOVF9ESVNQQVRDSEVSX1RFTVBPUkFSWV9MT0dHSU5HKQogICAgICAgICBXZWJD
b3JlOjpGbG9hdFNpemUgYWNjdW11bGF0ZWRFdmVudE9mZnNldDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446335</attachid>
            <date>2021-12-08 01:51:12 -0800</date>
            <delta_ts>2021-12-08 11:46:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233993-20211208015111.patch</filename>
            <type>text/plain</type>
            <size>17348</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU5YTI0MTE5MWVjMmJkMDhl
ODk5MTE0YjM2MjI1MTEyYzViMmU2MDAuLjk1MWZkZjVjNzk4ZWVhNDM1Zjk3MTRiOGMwYmRhNDMz
ODU4NmE4MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMjEtMTItMDcgIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW9tZW50dW0gRXZlbnQg
RGlzcGF0Y2hlcjogTW9tZW50dW0gdGFpbCBzaG91bGQgaGF2ZSBtb250b25pY2FsbHkgZGVjcmVh
c2luZyBkZWx0YXMgYW5kIHRhaWwgZ2FwcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjMzOTkzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NjExODM2
Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9Nb21lbnR1bUV2ZW50RGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok1vbWVudHVtRXZlbnREaXNwYXRjaGVyOjpjb25zdW1lRGVsdGFGb3JDdXJyZW50VGlt
ZSk6CisgICAgICAgIChXZWJLaXQ6Ok1vbWVudHVtRXZlbnREaXNwYXRjaGVyOjpidWlsZE9mZnNl
dFRhYmxlV2l0aEluaXRpYWxEZWx0YSk6CisgICAgICAgIChXZWJLaXQ6Ok1vbWVudHVtRXZlbnRE
aXNwYXRjaGVyOjpjb21wdXRlTmV4dERlbHRhKToKKyAgICAgICAgSW4gb3JkZXIgdG8gYXZvaWQg
dmlzdWFsIHN0dXR0ZXIgZHVlIHRvIGludGVncmFsIHJvdW5kaW5nIG9mIHRoZQorICAgICAgICBk
ZWx0YXMgd2UgZGlzcGF0Y2ggaW4gdGhlIG1vbWVudHVtIHBoYXNlLCBzd2l0Y2ggdG8gYSB0YWJs
ZSBvZgorICAgICAgICBkZWx0YXMgaW5zdGVhZCBvZiBpbnRlcnBvbGF0aW5nIGFsb25nIHRoZSBv
ZmZzZXQgY3VydmUgZHVyaW5nIHRoZQorICAgICAgICB0YWlsIGVuZCBvZiB0aGUgYW5pbWF0aW9u
ICh3aGVuIHRoZSByb3VuZGluZyBtYWtlcyB1cCBhIGxhcmdlCisgICAgICAgIHByb3BvcnRpb24g
b2YgZWFjaCBkZWx0YSkuCisKKyAgICAgICAgKFdlYktpdDo6TW9tZW50dW1FdmVudERpc3BhdGNo
ZXI6OmVxdWFsaXplVGFpbEdhcHMpOgorICAgICAgICBTb3J0IHRoZSBkZWx0YXMgdXAgdW50aWwg
dGhlIGZpcnN0IHplcm8gdG8gZW5zdXJlIGEgbGFjayBvZiB1bmV4cGVjdGVkCisgICAgICAgIHBl
cmNlcHR1YWwgYWNjZWxlcmF0aW9uLCBhbmQgdGhlbiBpbmplY3Qgc2tpcHBlZCBmcmFtZXMgaW4g
b3JkZXIgdG8KKyAgICAgICAgZW5zdXJlIHRoYXQgZnJhbWVzIHRoYXQgaGF2ZSBlZmZlY3RpdmUg
c2Nyb2xsIG1vdmVtZW50IChub24temVybyBkZWx0YXMpCisgICAgICAgIGFyZSBhbHdheXMgc3Bh
Y2VkIGVxdWFsbHktb3ItZnVydGhlciBhcGFydCB0aGFuIGVhcmxpZXIgb25lcywgYnV0CisgICAg
ICAgIG5ldmVyIGNsb3NlciB0b2dldGhlciAod2hpY2gsIGFnYWluLCB3b3VsZCBiZSBwZXJjaWV2
ZWQgYXMgYWNjZWxlcmF0aW9uKS4KKworICAgICAgICAoV2ViS2l0OjpNb21lbnR1bUV2ZW50RGlz
cGF0Y2hlcjo6aGFuZGxlV2hlZWxFdmVudCk6CisgICAgICAgIChXZWJLaXQ6Ok1vbWVudHVtRXZl
bnREaXNwYXRjaGVyOjpwdXNoTG9nRW50cnkpOgorICAgICAgICAoV2ViS2l0OjpNb21lbnR1bUV2
ZW50RGlzcGF0Y2hlcjo6Zmx1c2hMb2cpOgorICAgICAgICBMYXN0bHksIGFkanVzdCBzb21lIGxv
Z2dpbmcgdG8gbWFrZSBpdCBlYXNpZXIgdG8gdGVsbCB3aGljaCByb3cgaW4KKyAgICAgICAgdGhl
IG91dHB1dCBjb3JyZXNwb25kcyB0byBhbiBldmVudCBkZWx0YSBvciBnZW5lcmF0ZWQgZGVsdGEs
IHNvIGl0J3MKKyAgICAgICAgZWFzaWVyIHRvIGZpbmQgc2tpcHBlZCBmcmFtZXMuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL01vbWVudHVtRXZlbnREaXNwYXRjaGVyLmg6CisKIDIwMjEt
MTItMDYgIFBlciBBcm5lICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gUmVt
b3ZlIG1hY2ggc2VydmljZSBleHRlbnNpb25zIGZvciB0aGUgV2ViQ29udGVudCBwcm9jZXNzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Nb21lbnR1bUV2ZW50
RGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Nb21lbnR1
bUV2ZW50RGlzcGF0Y2hlci5jcHAKaW5kZXggNDc5OTU4N2I2OTE5ZmVkMmY5MzhiODI4NjhlYmZi
N2U3YjZiOWE5ZC4uOTQ2ZTkyNjBiYjlhN2I5ZDIxZmNhZjFhZjRjZjFkOWVhNDIxMTkxYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvTW9tZW50dW1FdmVudERp
c3BhdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL01vbWVu
dHVtRXZlbnREaXNwYXRjaGVyLmNwcApAQCAtMTEzLDE1ICsxMTMsMTUgQEAgYm9vbCBNb21lbnR1
bUV2ZW50RGlzcGF0Y2hlcjo6aGFuZGxlV2hlZWxFdmVudChXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBwYWdlSWRlbnQKICAgICAgICAgbV9jdXJyZW50R2VzdHVyZS5hY2N1bXVsYXRlZEV2ZW50T2Zm
c2V0ICs9IGV2ZW50LmRlbHRhKCk7CiAKICAgICBhdXRvIGNvbWJpbmVkUGhhc2UgPSAoZXZlbnQu
cGhhc2UoKSA8PCA4KSB8IChldmVudC5tb21lbnR1bVBoYXNlKCkpOwotICAgIG1fY3VycmVudExv
Z1N0YXRlLmxhdGVzdEV2ZW50UGhhc2UgPSBjb21iaW5lZFBoYXNlOwogICAgIG1fY3VycmVudExv
Z1N0YXRlLnRvdGFsRXZlbnRPZmZzZXQgKz0gZXZlbnQuZGVsdGEoKS5oZWlnaHQoKTsKICAgICBp
ZiAoIWlzTW9tZW50dW1FdmVudER1cmluZ1N5bnRoZXRpY0dlc3R1cmUpIHsKICAgICAgICAgLy8g
TG9nIGV2ZW50cyB0aGF0IHdlIGRvbid0IGJsb2NrIHRvIHRoZSBnZW5lcmF0ZWQgb2Zmc2V0cyBs
b2cgYXMgd2VsbCwKICAgICAgICAgLy8gZXZlbiB0aG91Z2ggd2UgZGlkbid0IHRlY2huaWNhbGx5
IGdlbmVyYXRlIHRoZW0sIGp1c3QgcGFzc2VkIHRoZW0gdGhyb3VnaC4KLSAgICAgICAgbV9jdXJy
ZW50TG9nU3RhdGUubGF0ZXN0R2VuZXJhdGVkUGhhc2UgPSBjb21iaW5lZFBoYXNlOwogICAgICAg
ICBtX2N1cnJlbnRMb2dTdGF0ZS50b3RhbEdlbmVyYXRlZE9mZnNldCArPSBldmVudC5kZWx0YSgp
LmhlaWdodCgpOwotICAgIH0KLSAgICBwdXNoTG9nRW50cnkoKTsKKyAgICAgICAgcHVzaExvZ0Vu
dHJ5KGNvbWJpbmVkUGhhc2UsIGNvbWJpbmVkUGhhc2UpOworICAgIH0gZWxzZQorICAgICAgICBw
dXNoTG9nRW50cnkoMCwgY29tYmluZWRQaGFzZSk7CisgICAgCiAjZW5kaWYKIAogICAgIC8vIENv
bnN1bWUgYW55IG5vcm1hbCBtb21lbnR1bSBldmVudHMgd2hpbGUgd2UncmUgaW5zaWRlIGEgc3lu
dGhldGljIG1vbWVudHVtIGdlc3R1cmUuCkBAIC0xNzcsOSArMTc3LDggQEAgdm9pZCBNb21lbnR1
bUV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTeW50aGV0aWNNb21lbnR1bUV2ZW50KFdlYldoZWVs
RXZlbnQ6OlBoYXMKICAgICBtX2Rpc3BhdGNoZXIuaW50ZXJuYWxXaGVlbEV2ZW50KG1fY3VycmVu
dEdlc3R1cmUucGFnZUlkZW50aWZpZXIsIHN5bnRoZXRpY0V2ZW50LCBtX2xhc3RSdWJiZXJCYW5k
YWJsZUVkZ2VzLCBFdmVudERpc3BhdGNoZXI6OldoZWVsRXZlbnRPcmlnaW46Ok1vbWVudHVtRXZl
bnREaXNwYXRjaGVyKTsKIAogI2lmIEVOQUJMRShNT01FTlRVTV9FVkVOVF9ESVNQQVRDSEVSX1RF
TVBPUkFSWV9MT0dHSU5HKQotICAgIG1fY3VycmVudExvZ1N0YXRlLmxhdGVzdEdlbmVyYXRlZFBo
YXNlID0gcGhhc2U7CiAgICAgbV9jdXJyZW50TG9nU3RhdGUudG90YWxHZW5lcmF0ZWRPZmZzZXQg
Kz0gYXBwS2l0QWNjZWxlcmF0ZWREZWx0YS5oZWlnaHQoKTsKLSAgICBwdXNoTG9nRW50cnkoKTsK
KyAgICBwdXNoTG9nRW50cnkocGhhc2UsIDApOwogI2VuZGlmCiB9CiAKQEAgLTIxOSw3ICsyMTgs
NyBAQCB2b2lkIE1vbWVudHVtRXZlbnREaXNwYXRjaGVyOjpkaWRFbmRNb21lbnR1bVBoYXNlKCkK
ICAgICBkaXNwYXRjaFN5bnRoZXRpY01vbWVudHVtRXZlbnQoV2ViV2hlZWxFdmVudDo6UGhhc2VF
bmRlZCwgeyB9KTsKIAogI2lmIEVOQUJMRShNT01FTlRVTV9FVkVOVF9ESVNQQVRDSEVSX1RFTVBP
UkFSWV9MT0dHSU5HKQotICAgIFJFTEVBU0VfTE9HKFNjcm9sbEFuaW1hdGlvbnMsICJNb21lbnR1
bUV2ZW50RGlzcGF0Y2hlciBzYXcgbW9tZW50dW0gZW5kIHBoYXNlIHdpdGggdG90YWwgb2Zmc2V0
ICUuMWYgJS4xZiwgZHVyYXRpb24gJWYgKGV2ZW50IG9mZnNldCB3b3VsZCBoYXZlIGJlZW4gJS4x
ZiAlLjFmKSIsIG1fY3VycmVudEdlc3R1cmUuY3VycmVudE9mZnNldC53aWR0aCgpLCBtX2N1cnJl
bnRHZXN0dXJlLmN1cnJlbnRPZmZzZXQuaGVpZ2h0KCksIChNb25vdG9uaWNUaW1lOjpub3coKSAt
IG1fY3VycmVudEdlc3R1cmUuc3RhcnRUaW1lKS5zZWNvbmRzKCksIG1fY3VycmVudEdlc3R1cmUu
YWNjdW11bGF0ZWRFdmVudE9mZnNldC53aWR0aCgpLCBtX2N1cnJlbnRHZXN0dXJlLmFjY3VtdWxh
dGVkRXZlbnRPZmZzZXQuaGVpZ2h0KCkpOworICAgIFJFTEVBU0VfTE9HKFNjcm9sbEFuaW1hdGlv
bnMsICJNb21lbnR1bUV2ZW50RGlzcGF0Y2hlciBzYXcgbW9tZW50dW0gZW5kIHBoYXNlIHdpdGgg
dG90YWwgb2Zmc2V0ICUuMWYgJS4xZiwgZHVyYXRpb24gJWYgKGV2ZW50IG9mZnNldCB3b3VsZCBo
YXZlIGJlZW4gJS4xZiAlLjFmKSAodGFpbCBpbmRleCAlZCBvZiAlenUpIiwgbV9jdXJyZW50R2Vz
dHVyZS5jdXJyZW50T2Zmc2V0LndpZHRoKCksIG1fY3VycmVudEdlc3R1cmUuY3VycmVudE9mZnNl
dC5oZWlnaHQoKSwgKE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV9jdXJyZW50R2VzdHVyZS5zdGFy
dFRpbWUpLnNlY29uZHMoKSwgbV9jdXJyZW50R2VzdHVyZS5hY2N1bXVsYXRlZEV2ZW50T2Zmc2V0
LndpZHRoKCksIG1fY3VycmVudEdlc3R1cmUuYWNjdW11bGF0ZWRFdmVudE9mZnNldC5oZWlnaHQo
KSwgbV9jdXJyZW50R2VzdHVyZS5jdXJyZW50VGFpbERlbHRhSW5kZXgsIG1fY3VycmVudEdlc3R1
cmUudGFpbERlbHRhVGFibGUuc2l6ZSgpKTsKICAgICBtX2Rpc3BhdGNoZXIucXVldWUoKS5kaXNw
YXRjaEFmdGVyKDFfcywgW3RoaXNdIHsKICAgICAgICAgZmx1c2hMb2coKTsKICAgICB9KTsKQEAg
LTI5NCwxNSArMjkzLDE4IEBAIHZvaWQgTW9tZW50dW1FdmVudERpc3BhdGNoZXI6OnBhZ2VTY3Jl
ZW5EaWRDaGFuZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlECiAKIFdlYkNvcmU6OkZs
b2F0U2l6ZSBNb21lbnR1bUV2ZW50RGlzcGF0Y2hlcjo6Y29uc3VtZURlbHRhRm9yQ3VycmVudFRp
bWUoKQogewotICAgIGF1dG8gYW5pbWF0aW9uVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpIC0g
bV9jdXJyZW50R2VzdHVyZS5zdGFydFRpbWU7Ci0gICAgYXV0byBkZXNpcmVkT2Zmc2V0ID0gb2Zm
c2V0QXRUaW1lKGFuaW1hdGlvblRpbWUpOworICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBkZWx0YTsK
IAotI2lmICFFTkFCTEUoTU9NRU5UVU1fRVZFTlRfRElTUEFUQ0hFUl9QUkVNQVRVUkVfUk9VTkRJ
TkcpCi0gICAgLy8gSW50ZW50aW9uYWwgZGVsdGEgcm91bmRpbmcgKGJ1dCBhdCB0aGUgZW5kISku
Ci0gICAgV2ViQ29yZTo6RmxvYXRTaXplIGRlbHRhID0gcm91bmRlZEludFNpemUoZGVzaXJlZE9m
ZnNldCAtIG1fY3VycmVudEdlc3R1cmUuY3VycmVudE9mZnNldCk7Ci0jZWxzZQotICAgIFdlYkNv
cmU6OkZsb2F0U2l6ZSBkZWx0YSA9IGRlc2lyZWRPZmZzZXQgLSBtX2N1cnJlbnRHZXN0dXJlLmN1
cnJlbnRPZmZzZXQ7Ci0jZW5kaWYKKyAgICBhdXRvIGFuaW1hdGlvblRpbWUgPSBNb25vdG9uaWNU
aW1lOjpub3coKSAtIG1fY3VycmVudEdlc3R1cmUuc3RhcnRUaW1lOworICAgIGlmIChhbmltYXRp
b25UaW1lIDwgbV9jdXJyZW50R2VzdHVyZS50YWlsU3RhcnRUaW1lKSB7CisgICAgICAgIGF1dG8g
ZGVzaXJlZE9mZnNldCA9IG9mZnNldEF0VGltZShhbmltYXRpb25UaW1lKTsKKyAgICAgICAgZGVs
dGEgPSByb3VuZGVkSW50U2l6ZShkZXNpcmVkT2Zmc2V0IC0gbV9jdXJyZW50R2VzdHVyZS5jdXJy
ZW50T2Zmc2V0KTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAobV9jdXJyZW50R2VzdHVyZS5j
dXJyZW50VGFpbERlbHRhSW5kZXggPCBtX2N1cnJlbnRHZXN0dXJlLnRhaWxEZWx0YVRhYmxlLnNp
emUoKSkKKyAgICAgICAgICAgIGRlbHRhID0gLW1fY3VycmVudEdlc3R1cmUudGFpbERlbHRhVGFi
bGVbbV9jdXJyZW50R2VzdHVyZS5jdXJyZW50VGFpbERlbHRhSW5kZXgrK107CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGRlbHRhID0geyB9OworICAgIH0KIAogICAgIG1fY3VycmVudEdlc3R1
cmUuY3VycmVudE9mZnNldCArPSBkZWx0YTsKIApAQCAtMzYzLDI3ICszNjUsMTEyIEBAIHZvaWQg
TW9tZW50dW1FdmVudERpc3BhdGNoZXI6OmRpZFJlY2VpdmVTY3JvbGxFdmVudChjb25zdCBXZWJX
aGVlbEV2ZW50JiBldmVudCkKIAogdm9pZCBNb21lbnR1bUV2ZW50RGlzcGF0Y2hlcjo6YnVpbGRP
ZmZzZXRUYWJsZVdpdGhJbml0aWFsRGVsdGEoV2ViQ29yZTo6RmxvYXRTaXplIGluaXRpYWxVbmFj
Y2VsZXJhdGVkRGVsdGEpCiB7Ci0jaWYgRU5BQkxFKE1PTUVOVFVNX0VWRU5UX0RJU1BBVENIRVJf
UFJFTUFUVVJFX1JPVU5ESU5HKQotICAgIG1fY3VycmVudEdlc3R1cmUuY2FycnlPZmZzZXQgPSB7
IH07Ci0jZW5kaWYKICAgICBtX2N1cnJlbnRHZXN0dXJlLm9mZnNldFRhYmxlLmNsZWFyKCk7CiAK
ICAgICBXZWJDb3JlOjpGbG9hdFNpemUgYWNjdW11bGF0ZWRPZmZzZXQ7CiAgICAgV2ViQ29yZTo6
RmxvYXRTaXplIHVuYWNjZWxlcmF0ZWREZWx0YSA9IGluaXRpYWxVbmFjY2VsZXJhdGVkRGVsdGE7
CiAKKyAgICBmbG9hdCBwaHlzaWNhbEN1cnZlTXVsdGlwbGllciA9IGlkZWFsQ3VydmVGcmFtZVJh
dGUgLyBtX2N1cnJlbnRHZXN0dXJlLmFjY2VsZXJhdGlvbkN1cnZlLT5mcmFtZVJhdGUoKTsKKyAg
ICBib29sIGluVGFpbCA9IGZhbHNlOworICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSB0YWlsQ2Fycnk7
CisKICAgICBkbyB7CiAgICAgICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBhY2NlbGVyYXRlZERlbHRh
OwogICAgICAgICBzdGQ6OnRpZSh1bmFjY2VsZXJhdGVkRGVsdGEsIGFjY2VsZXJhdGVkRGVsdGEp
ID0gY29tcHV0ZU5leHREZWx0YSh1bmFjY2VsZXJhdGVkRGVsdGEpOwogCisgICAgICAgIGNvbnN0
IGZsb2F0IHRhaWxTdGFydFVuYWNjZWxlcmF0ZWREZWx0YSA9IDYuZjsKKyAgICAgICAgaWYgKCFp
blRhaWwgJiYgc3RkOjphYnModW5hY2NlbGVyYXRlZERlbHRhLndpZHRoKCkpIDwgdGFpbFN0YXJ0
VW5hY2NlbGVyYXRlZERlbHRhICYmIHN0ZDo6YWJzKHVuYWNjZWxlcmF0ZWREZWx0YS5oZWlnaHQo
KSkgPCB0YWlsU3RhcnRVbmFjY2VsZXJhdGVkRGVsdGEpIHsKKyAgICAgICAgICAgIGluVGFpbCA9
IHRydWU7CisgICAgICAgICAgICBtX2N1cnJlbnRHZXN0dXJlLnRhaWxTdGFydFRpbWUgPSBpZGVh
bEN1cnZlRnJhbWVJbnRlcnZhbCAqIG1fY3VycmVudEdlc3R1cmUub2Zmc2V0VGFibGUuc2l6ZSgp
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKGluVGFpbCkgeworICAgICAgICAgICAgYXV0byB0
YWlsRGVsdGEgPSBhY2NlbGVyYXRlZERlbHRhICogcGh5c2ljYWxDdXJ2ZU11bHRpcGxpZXI7Cisg
ICAgICAgICAgICBhdXRvIGRlbHRhV2l0aENhcnJ5ID0gdGFpbERlbHRhICsgdGFpbENhcnJ5Owor
ICAgICAgICAgICAgYXV0byBxdWFudGl6ZWREZWx0YSA9IHJvdW5kZWRJbnRTaXplKGRlbHRhV2l0
aENhcnJ5KTsKKyAgICAgICAgICAgIHRhaWxDYXJyeSA9IGRlbHRhV2l0aENhcnJ5IC0gcXVhbnRp
emVkRGVsdGE7CisgICAgICAgICAgICBtX2N1cnJlbnRHZXN0dXJlLnRhaWxEZWx0YVRhYmxlLmFw
cGVuZChxdWFudGl6ZWREZWx0YSk7CisgICAgICAgIH0KKwogICAgICAgICBhY2N1bXVsYXRlZE9m
ZnNldCArPSBhY2NlbGVyYXRlZERlbHRhOwogICAgICAgICBtX2N1cnJlbnRHZXN0dXJlLm9mZnNl
dFRhYmxlLmFwcGVuZChhY2N1bXVsYXRlZE9mZnNldCk7CisKICAgICB9IHdoaWxlIChzdGQ6OmFi
cyh1bmFjY2VsZXJhdGVkRGVsdGEud2lkdGgoKSkgPiAwLjUgfHwgc3RkOjphYnModW5hY2NlbGVy
YXRlZERlbHRhLmhlaWdodCgpKSA+IDAuNSk7CiAKKyAgICBlcXVhbGl6ZVRhaWxHYXBzKCk7CisK
ICNpZiBFTkFCTEUoTU9NRU5UVU1fRVZFTlRfRElTUEFUQ0hFUl9URU1QT1JBUllfTE9HR0lORykK
LSAgICBSRUxFQVNFX0xPRyhTY3JvbGxBbmltYXRpb25zLCAiTW9tZW50dW1FdmVudERpc3BhdGNo
ZXIgYnVpbHQgdGFibGUgd2l0aCAlbGQgZnJhbWVzLCBpbml0aWFsIGRlbHRhICVmICVmLCBkaXN0
YW5jZSAlZiAlZiAoaW5pdGlhbCBkZWx0YSBmcm9tIGxhc3QgY2hhbmdlZCBldmVudCAlZiAlZiki
LCBtX2N1cnJlbnRHZXN0dXJlLm9mZnNldFRhYmxlLnNpemUoKSwgaW5pdGlhbFVuYWNjZWxlcmF0
ZWREZWx0YS53aWR0aCgpLCBpbml0aWFsVW5hY2NlbGVyYXRlZERlbHRhLmhlaWdodCgpLCBhY2N1
bXVsYXRlZE9mZnNldC53aWR0aCgpLCBhY2N1bXVsYXRlZE9mZnNldC5oZWlnaHQoKSwgbV9sYXN0
QWN0aXZlUGhhc2VEZWx0YS53aWR0aCgpLCBtX2xhc3RBY3RpdmVQaGFzZURlbHRhLmhlaWdodCgp
KTsKKyAgICBSRUxFQVNFX0xPRyhTY3JvbGxBbmltYXRpb25zLCAiTW9tZW50dW1FdmVudERpc3Bh
dGNoZXIgYnVpbHQgdGFibGUgd2l0aCAlbGQgZnJhbWVzLCAlLjFmIHNlY29uZHMgKCVsZCB0YWls
IGZyYW1lcywgJS4xZiBzZWNvbmRzLCBzdGFydGluZyBhdCAlLjFmKSwgaW5pdGlhbCBkZWx0YSAl
LjFmICUuMWYsIGRpc3RhbmNlICUuMWYgJS4xZiAoaW5pdGlhbCBkZWx0YSBmcm9tIGxhc3QgY2hh
bmdlZCBldmVudCAlLjFmICUuMWYpIiwgbV9jdXJyZW50R2VzdHVyZS5vZmZzZXRUYWJsZS5zaXpl
KCksIGlkZWFsQ3VydmVGcmFtZUludGVydmFsLnNlY29uZHMoKSAqIG1fY3VycmVudEdlc3R1cmUu
b2Zmc2V0VGFibGUuc2l6ZSgpLCBtX2N1cnJlbnRHZXN0dXJlLnRhaWxEZWx0YVRhYmxlLnNpemUo
KSwgbV9jdXJyZW50R2VzdHVyZS50YWlsRGVsdGFUYWJsZS5zaXplKCkgKiAoMS5mIC8gbV9jdXJy
ZW50R2VzdHVyZS5hY2NlbGVyYXRpb25DdXJ2ZS0+ZnJhbWVSYXRlKCkpLCBtX2N1cnJlbnRHZXN0
dXJlLnRhaWxTdGFydFRpbWUuc2Vjb25kcygpLCBpbml0aWFsVW5hY2NlbGVyYXRlZERlbHRhLndp
ZHRoKCksIGluaXRpYWxVbmFjY2VsZXJhdGVkRGVsdGEuaGVpZ2h0KCksIGFjY3VtdWxhdGVkT2Zm
c2V0LndpZHRoKCksIGFjY3VtdWxhdGVkT2Zmc2V0LmhlaWdodCgpLCBtX2xhc3RBY3RpdmVQaGFz
ZURlbHRhLndpZHRoKCksIG1fbGFzdEFjdGl2ZVBoYXNlRGVsdGEuaGVpZ2h0KCkpOwogI2VuZGlm
CiB9CiAKK3ZvaWQgTW9tZW50dW1FdmVudERpc3BhdGNoZXI6OmVxdWFsaXplVGFpbEdhcHMoKQor
eworICAgIGF1dG8mIHRhYmxlID0gbV9jdXJyZW50R2VzdHVyZS50YWlsRGVsdGFUYWJsZTsKKyAg
ICBzaXplX3QgaW5pdGlhbFRhYmxlU2l6ZSA9IHRhYmxlLnNpemUoKTsKKworICAgIFZlY3Rvcjxm
bG9hdD4gZGVsdGFzWzJdOworICAgIGRlbHRhc1swXS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGlu
aXRpYWxUYWJsZVNpemUpOworICAgIGRlbHRhc1sxXS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGlu
aXRpYWxUYWJsZVNpemUpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbml0aWFsVGFi
bGVTaXplOyBpKyspIHsKKyAgICAgICAgZGVsdGFzWzBdLnVuY2hlY2tlZEFwcGVuZCh0YWJsZVtp
XS53aWR0aCgpKTsKKyAgICAgICAgZGVsdGFzWzFdLnVuY2hlY2tlZEFwcGVuZCh0YWJsZVtpXS5o
ZWlnaHQoKSk7CisgICAgfQorICAgIAorICAgIGlmIChhdXRvIGZpcnN0WmVyb0luZGV4ID0gZGVs
dGFzWzBdLmZpbmQoMCkpCisgICAgICAgIHN0ZDo6c29ydChkZWx0YXNbMF0uYmVnaW4oKSwgc3Rk
OjpuZXh0KGRlbHRhc1swXS5iZWdpbigpLCBmaXJzdFplcm9JbmRleCkpOworICAgIGlmIChhdXRv
IGZpcnN0WmVyb0luZGV4ID0gZGVsdGFzWzFdLmZpbmQoMCkpCisgICAgICAgIHN0ZDo6c29ydChk
ZWx0YXNbMV0uYmVnaW4oKSwgc3RkOjpuZXh0KGRlbHRhc1sxXS5iZWdpbigpLCBmaXJzdFplcm9J
bmRleCkpOworCisgICAgdHlwZWRlZiB1bnNpZ25lZCBHYXBTaXplWzJdOworICAgIEdhcFNpemUg
bWluaW11bUdhcCA9IHsgMCwgMCB9OworICAgIEdhcFNpemUgY3VycmVudEdhcCA9IHsgMCwgMCB9
OworICAgIEdhcFNpemUgcmVtYWluaW5nR2FwVG9HZW5lcmF0ZSA9IHsgMCwgMCB9OworICAgIHVu
c2lnbmVkIG9yaWdpbmFsVGFibGVJbmRleFsyXSA9IHsgMCwgMCB9OworCisgICAgYXV0byB0YWtl
TmV4dERlbHRhID0gWyZdICh1aW50OF90IGF4aXMpIC0+IGZsb2F0IHsKKyAgICAgICAgaWYgKG9y
aWdpbmFsVGFibGVJbmRleFtheGlzXSA+PSBpbml0aWFsVGFibGVTaXplKQorICAgICAgICAgICAg
cmV0dXJuIDAuZjsKKworICAgICAgICBpZiAocmVtYWluaW5nR2FwVG9HZW5lcmF0ZVtheGlzXSkg
eworICAgICAgICAgICAgcmVtYWluaW5nR2FwVG9HZW5lcmF0ZVtheGlzXS0tOworICAgICAgICAg
ICAgY3VycmVudEdhcFtheGlzXSsrOworICAgICAgICAgICAgcmV0dXJuIDAuZjsKKyAgICAgICAg
fQorCisgICAgICAgIGF1dG8gdmFsdWUgPSBkZWx0YXNbYXhpc11bb3JpZ2luYWxUYWJsZUluZGV4
W2F4aXNdXTsKKyAgICAgICAgaWYgKHZhbHVlKSB7CisgICAgICAgICAgICBtaW5pbXVtR2FwW2F4
aXNdID0gc3RkOjptYXgobWluaW11bUdhcFtheGlzXSwgY3VycmVudEdhcFtheGlzXSk7CisgICAg
ICAgICAgICByZW1haW5pbmdHYXBUb0dlbmVyYXRlW2F4aXNdID0gbWluaW11bUdhcFtheGlzXSAt
IGN1cnJlbnRHYXBbYXhpc107CisgICAgICAgICAgICBpZiAocmVtYWluaW5nR2FwVG9HZW5lcmF0
ZVtheGlzXSkgeworICAgICAgICAgICAgICAgIHJlbWFpbmluZ0dhcFRvR2VuZXJhdGVbYXhpc10t
LTsKKyAgICAgICAgICAgICAgICBjdXJyZW50R2FwW2F4aXNdKys7CisgICAgICAgICAgICAgICAg
cmV0dXJuIDAuZjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY3VycmVudEdhcFtheGlz
XSA9IDA7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgY3VycmVudEdhcFtheGlzXSsrOwor
CisgICAgICAgIG9yaWdpbmFsVGFibGVJbmRleFtheGlzXSsrOworCisgICAgICAgIHJldHVybiB2
YWx1ZTsKKyAgICB9OworCisgICAgc2l6ZV90IGZpbmFsVGFibGVTaXplID0gMDsKKyAgICB0YWJs
ZS5zaHJpbmsoMCk7CisKKyAgICB3aGlsZSAob3JpZ2luYWxUYWJsZUluZGV4WzBdIDwgaW5pdGlh
bFRhYmxlU2l6ZSB8fCBvcmlnaW5hbFRhYmxlSW5kZXhbMV0gPCBpbml0aWFsVGFibGVTaXplKSB7
CisgICAgICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBkZWx0YSh0YWtlTmV4dERlbHRhKDApLCB0YWtl
TmV4dERlbHRhKDEpKTsKKyAgICAgICAgdGFibGUuYXBwZW5kKGRlbHRhKTsKKworICAgICAgICBp
ZiAoIWRlbHRhLmlzWmVybygpKQorICAgICAgICAgICAgZmluYWxUYWJsZVNpemUgPSB0YWJsZS5z
aXplKCk7CisgICAgfQorCisgICAgdGFibGUuc2hyaW5rKGZpbmFsVGFibGVTaXplKTsKK30KKwog
c3RhdGljIGZsb2F0IGludGVycG9sYXRlKGZsb2F0IGEsIGZsb2F0IGIsIGZsb2F0IHQpCiB7CiAg
ICAgcmV0dXJuIGEgKyB0ICogKGIgLSBhKTsKQEAgLTQzMywyOCArNTIwLDggQEAgc3RkOjpwYWly
PFdlYkNvcmU6OkZsb2F0U2l6ZSwgV2ViQ29yZTo6RmxvYXRTaXplPiBNb21lbnR1bUV2ZW50RGlz
cGF0Y2hlcjo6Y29tcHUKICAgICBmbG9hdCBkZWNheVJhdGUgPSBtb21lbnR1bURlY2F5UmF0ZSh1
bmFjY2VsZXJhdGVkRGVsdGEsIGlkZWFsQ3VydmVGcmFtZUludGVydmFsKTsKICAgICB1bmFjY2Vs
ZXJhdGVkRGVsdGEuc2NhbGUoZGVjYXlSYXRlKTsKIAotICAgIGF1dG8gcXVhbnRpemVkVW5hY2Nl
bGVyYXRlZERlbHRhID0gdW5hY2NlbGVyYXRlZERlbHRhOwotCi0jaWYgRU5BQkxFKE1PTUVOVFVN
X0VWRU5UX0RJU1BBVENIRVJfUFJFTUFUVVJFX1JPVU5ESU5HKQotICAgIC8vIFJvdW5kIGFuZCBj
YXJyeS4KLSAgICBpbnQzMl90IHF1YW50aXplZFggPSBzdGQ6OnJvdW5kKHF1YW50aXplZFVuYWNj
ZWxlcmF0ZWREZWx0YS53aWR0aCgpKTsKLSAgICBpbnQzMl90IHF1YW50aXplZFkgPSBzdGQ6OnJv
dW5kKHF1YW50aXplZFVuYWNjZWxlcmF0ZWREZWx0YS5oZWlnaHQoKSk7Ci0KLSAgICBpZiAoc3Rk
OjphYnMocXVhbnRpemVkVW5hY2NlbGVyYXRlZERlbHRhLndpZHRoKCkpIDwgMSAmJiBzdGQ6OmFi
cyhxdWFudGl6ZWRVbmFjY2VsZXJhdGVkRGVsdGEuaGVpZ2h0KCkpIDwgMSkgewotICAgICAgICBm
bG9hdCBkZWx0YVhJbmNsdWRpbmdDYXJyeSA9IHF1YW50aXplZFVuYWNjZWxlcmF0ZWREZWx0YS53
aWR0aCgpICsgbV9jdXJyZW50R2VzdHVyZS5jYXJyeU9mZnNldC53aWR0aCgpOwotICAgICAgICBm
bG9hdCBkZWx0YVlJbmNsdWRpbmdDYXJyeSA9IHF1YW50aXplZFVuYWNjZWxlcmF0ZWREZWx0YS5o
ZWlnaHQoKSArIG1fY3VycmVudEdlc3R1cmUuY2FycnlPZmZzZXQuaGVpZ2h0KCk7Ci0KLSAgICAg
ICAgLy8gSW50ZW50aW9uYWwgdHJ1bmNhdGlvbi4KLSAgICAgICAgcXVhbnRpemVkWCA9IGRlbHRh
WEluY2x1ZGluZ0NhcnJ5OwotICAgICAgICBxdWFudGl6ZWRZID0gZGVsdGFZSW5jbHVkaW5nQ2Fy
cnk7Ci0gICAgICAgIG1fY3VycmVudEdlc3R1cmUuY2FycnlPZmZzZXQgPSB7IGRlbHRhWEluY2x1
ZGluZ0NhcnJ5IC0gcXVhbnRpemVkWCwgZGVsdGFZSW5jbHVkaW5nQ2FycnkgLSBxdWFudGl6ZWRZ
IH07Ci0gICAgfQotCi0gICAgcXVhbnRpemVkVW5hY2NlbGVyYXRlZERlbHRhID0geyBzdGF0aWNf
Y2FzdDxmbG9hdD4ocXVhbnRpemVkWCksIHN0YXRpY19jYXN0PGZsb2F0PihxdWFudGl6ZWRZKSB9
OwotI2VuZGlmCi0KICAgICAvLyBUaGUgZGVsdGEgcXVldWUgb3BlcmF0ZXMgb24gcHJlLWFjY2Vs
ZXJhdGlvbiBkZWx0YXMsIHNvIGluc2VydCB0aGUgbmV3IGV2ZW50ICpiZWZvcmUqIGFjY2VsZXJh
dGluZy4KLSAgICBkaWRSZWNlaXZlU2Nyb2xsRXZlbnRXaXRoSW50ZXJ2YWwocXVhbnRpemVkVW5h
Y2NlbGVyYXRlZERlbHRhLCBpZGVhbEN1cnZlRnJhbWVJbnRlcnZhbCk7CisgICAgZGlkUmVjZWl2
ZVNjcm9sbEV2ZW50V2l0aEludGVydmFsKHVuYWNjZWxlcmF0ZWREZWx0YSwgaWRlYWxDdXJ2ZUZy
YW1lSW50ZXJ2YWwpOwogCiAgICAgYXV0byBhY2NlbGVyYXRlQXhpcyA9IFsmXSAoSGlzdG9yaWNh
bERlbHRhcyYgZGVsdGFzLCBmbG9hdCB2YWx1ZSkgewogICAgICAgICBmbG9hdCB0b3RhbERlbHRh
ID0gMDsKQEAgLTQ5OSw4ICs1NjYsOCBAQCBzdGQ6OnBhaXI8V2ViQ29yZTo6RmxvYXRTaXplLCBX
ZWJDb3JlOjpGbG9hdFNpemU+IE1vbWVudHVtRXZlbnREaXNwYXRjaGVyOjpjb21wdQogICAgIH07
CiAKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgYWNjZWxlcmF0ZWREZWx0YSgKLSAgICAgICAgYWNj
ZWxlcmF0ZUF4aXMobV9kZWx0YUhpc3RvcnlYLCBxdWFudGl6ZWRVbmFjY2VsZXJhdGVkRGVsdGEu
d2lkdGgoKSksCi0gICAgICAgIGFjY2VsZXJhdGVBeGlzKG1fZGVsdGFIaXN0b3J5WSwgcXVhbnRp
emVkVW5hY2NlbGVyYXRlZERlbHRhLmhlaWdodCgpKQorICAgICAgICBhY2NlbGVyYXRlQXhpcyht
X2RlbHRhSGlzdG9yeVgsIHVuYWNjZWxlcmF0ZWREZWx0YS53aWR0aCgpKSwKKyAgICAgICAgYWNj
ZWxlcmF0ZUF4aXMobV9kZWx0YUhpc3RvcnlZLCB1bmFjY2VsZXJhdGVkRGVsdGEuaGVpZ2h0KCkp
CiAgICAgKTsKIAogI2lmIEVOQUJMRShNT01FTlRVTV9FVkVOVF9ESVNQQVRDSEVSX1RFTVBPUkFS
WV9MT0dHSU5HKQpAQCAtNTEyLDkgKzU3OSwxMSBAQCBzdGQ6OnBhaXI8V2ViQ29yZTo6RmxvYXRT
aXplLCBXZWJDb3JlOjpGbG9hdFNpemU+IE1vbWVudHVtRXZlbnREaXNwYXRjaGVyOjpjb21wdQog
CiAjaWYgRU5BQkxFKE1PTUVOVFVNX0VWRU5UX0RJU1BBVENIRVJfVEVNUE9SQVJZX0xPR0dJTkcp
CiAKLXZvaWQgTW9tZW50dW1FdmVudERpc3BhdGNoZXI6OnB1c2hMb2dFbnRyeSgpCit2b2lkIE1v
bWVudHVtRXZlbnREaXNwYXRjaGVyOjpwdXNoTG9nRW50cnkodWludDMyX3QgZ2VuZXJhdGVkUGhh
c2UsIHVpbnQzMl90IGV2ZW50UGhhc2UpCiB7CiAgICAgbV9jdXJyZW50TG9nU3RhdGUudGltZSA9
IE1vbm90b25pY1RpbWU6Om5vdygpOworICAgIG1fY3VycmVudExvZ1N0YXRlLmdlbmVyYXRlZFBo
YXNlID0gZ2VuZXJhdGVkUGhhc2U7CisgICAgbV9jdXJyZW50TG9nU3RhdGUuZXZlbnRQaGFzZSA9
IGV2ZW50UGhhc2U7CiAgICAgbV9sb2cuYXBwZW5kKG1fY3VycmVudExvZ1N0YXRlKTsKIH0KIApA
QCAtNTI5LDcgKzU5OCw3IEBAIHZvaWQgTW9tZW50dW1FdmVudERpc3BhdGNoZXI6OmZsdXNoTG9n
KCkKICAgICBhdXRvIHN0YXJ0VGltZSA9IG1fbG9nWzBdLnRpbWU7CiAgICAgUkVMRUFTRV9MT0co
U2Nyb2xsQW5pbWF0aW9ucywgIk1vbWVudHVtRXZlbnREaXNwYXRjaGVyIGV2ZW50IGxvZzogdGlt
ZSxnZW5lcmF0ZWRPZmZzZXQsZ2VuZXJhdGVkUGhhc2UsZXZlbnRPZmZzZXQsZXZlbnRQaGFzZSIp
OwogICAgIGZvciAoY29uc3QgYXV0byYgZW50cnkgOiBtX2xvZykKLSAgICAgICAgUkVMRUFTRV9M
T0coU2Nyb2xsQW5pbWF0aW9ucywgIk1vbWVudHVtRXZlbnREaXNwYXRjaGVyIGV2ZW50IGxvZzog
JWYsJWYsJWQsJWYsJWQiLCAoZW50cnkudGltZSAtIHN0YXJ0VGltZSkuc2Vjb25kcygpLCBlbnRy
eS50b3RhbEdlbmVyYXRlZE9mZnNldCwgZW50cnkubGF0ZXN0R2VuZXJhdGVkUGhhc2UsIGVudHJ5
LnRvdGFsRXZlbnRPZmZzZXQsIGVudHJ5LmxhdGVzdEV2ZW50UGhhc2UpOworICAgICAgICBSRUxF
QVNFX0xPRyhTY3JvbGxBbmltYXRpb25zLCAiTW9tZW50dW1FdmVudERpc3BhdGNoZXIgZXZlbnQg
bG9nOiAlZiwlZiwlZCwlZiwlZCIsIChlbnRyeS50aW1lIC0gc3RhcnRUaW1lKS5zZWNvbmRzKCks
IGVudHJ5LnRvdGFsR2VuZXJhdGVkT2Zmc2V0LCBlbnRyeS5nZW5lcmF0ZWRQaGFzZSwgZW50cnku
dG90YWxFdmVudE9mZnNldCwgZW50cnkuZXZlbnRQaGFzZSk7CiAKICAgICBtX2xvZy5jbGVhcigp
OwogICAgIG1fY3VycmVudExvZ1N0YXRlID0geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvTW9tZW50dW1FdmVudERpc3BhdGNoZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL01vbWVudHVtRXZlbnREaXNwYXRjaGVyLmgKaW5kZXgg
ZTk5YzYwMGExZDI4MWYwYjVkNTllOTlhYTMwMjAwYTI3YjI1MjRjMC4uOTNmZDM0N2M0NTVlNGNl
NTg1ZTdkZDg3OTJhMjA5MDRjZmYzNzExNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvTW9tZW50dW1FdmVudERpc3BhdGNoZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Nb21lbnR1bUV2ZW50RGlzcGF0Y2hlci5oCkBAIC0yNyw4
ICsyNyw2IEBACiAKICNpZiBFTkFCTEUoTU9NRU5UVU1fRVZFTlRfRElTUEFUQ0hFUikKIAotLy8g
RklYTUU6IFJlbW92ZSB0aGlzIG9uY2Ugd2UgZGVjaWRlIHdoaWNoIHZlcnNpb24gd2Ugd2FudC4K
LSNkZWZpbmUgRU5BQkxFX01PTUVOVFVNX0VWRU5UX0RJU1BBVENIRVJfUFJFTUFUVVJFX1JPVU5E
SU5HIDAKICNkZWZpbmUgRU5BQkxFX01PTUVOVFVNX0VWRU5UX0RJU1BBVENIRVJfVEVNUE9SQVJZ
X0xPR0dJTkcgMQogCiAjaW5jbHVkZSAiRGlzcGxheUxpbmtPYnNlcnZlcklELmgiCkBAIC04MCw2
ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNwYXRjaFN5bnRoZXRpY01vbWVudHVtRXZl
bnQoV2ViV2hlZWxFdmVudDo6UGhhc2UsIFdlYkNvcmU6OkZsb2F0U2l6ZSBkZWx0YSk7CiAKICAg
ICB2b2lkIGJ1aWxkT2Zmc2V0VGFibGVXaXRoSW5pdGlhbERlbHRhKFdlYkNvcmU6OkZsb2F0U2l6
ZSk7CisgICAgdm9pZCBlcXVhbGl6ZVRhaWxHYXBzKCk7CiAKICAgICAvLyBPbmNlIGNvbnN1bWVk
LCB0aGlzIGRlbHRhICptdXN0KiBiZSBkaXNwYXRjaGVkIGluIGFuIGV2ZW50LgogICAgIFdlYkNv
cmU6OkZsb2F0U2l6ZSBjb25zdW1lRGVsdGFGb3JDdXJyZW50VGltZSgpOwpAQCAtOTEsNyArOTAs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVNjcm9sbEV2ZW50KGNvbnN0IFdlYldo
ZWVsRXZlbnQmKTsKIAogI2lmIEVOQUJMRShNT01FTlRVTV9FVkVOVF9ESVNQQVRDSEVSX1RFTVBP
UkFSWV9MT0dHSU5HKQotICAgIHZvaWQgcHVzaExvZ0VudHJ5KCk7CisgICAgdm9pZCBwdXNoTG9n
RW50cnkodWludDMyX3QgZ2VuZXJhdGVkUGhhc2UsIHVpbnQzMl90IGV2ZW50UGhhc2UpOwogICAg
IHZvaWQgZmx1c2hMb2coKTsKIAogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtX2xhc3RBY3RpdmVQ
aGFzZURlbHRhOwpAQCAtMTAyLDggKzEwMSw4IEBAIHByaXZhdGU6CiAgICAgICAgIGZsb2F0IHRv
dGFsR2VuZXJhdGVkT2Zmc2V0IHsgMCB9OwogICAgICAgICBmbG9hdCB0b3RhbEV2ZW50T2Zmc2V0
IHsgMCB9OwogCi0gICAgICAgIHVpbnQzMl90IGxhdGVzdEdlbmVyYXRlZFBoYXNlIHsgMCB9Owot
ICAgICAgICB1aW50MzJfdCBsYXRlc3RFdmVudFBoYXNlIHsgMCB9OworICAgICAgICB1aW50MzJf
dCBnZW5lcmF0ZWRQaGFzZSB7IDAgfTsKKyAgICAgICAgdWludDMyX3QgZXZlbnRQaGFzZSB7IDAg
fTsKICAgICB9OwogICAgIExvZ0VudHJ5IG1fY3VycmVudExvZ1N0YXRlOwogICAgIFZlY3RvcjxM
b2dFbnRyeT4gbV9sb2c7CkBAIC0xMzMsNyArMTMyLDEwIEBAIHByaXZhdGU6CiAgICAgICAgIFdl
YkNvcmU6OkZsb2F0U2l6ZSBjdXJyZW50T2Zmc2V0OwogICAgICAgICBNb25vdG9uaWNUaW1lIHN0
YXJ0VGltZTsKIAotICAgICAgICBWZWN0b3I8V2ViQ29yZTo6RmxvYXRTaXplPiBvZmZzZXRUYWJs
ZTsKKyAgICAgICAgVmVjdG9yPFdlYkNvcmU6OkZsb2F0U2l6ZT4gb2Zmc2V0VGFibGU7IC8vIEFs
d2F5cyBhdCA2MEh6IGludGVydmFscy4KKyAgICAgICAgVmVjdG9yPFdlYkNvcmU6OkZsb2F0U2l6
ZT4gdGFpbERlbHRhVGFibGU7IC8vIEFsd2F5cyBhdCBldmVudCBkaXNwYXRjaCBpbnRlcnZhbHMu
CisgICAgICAgIFNlY29uZHMgdGFpbFN0YXJ0VGltZTsKKyAgICAgICAgdW5zaWduZWQgY3VycmVu
dFRhaWxEZWx0YUluZGV4IHsgMCB9OwogCiAjaWYgRU5BQkxFKE1PTUVOVFVNX0VWRU5UX0RJU1BB
VENIRVJfVEVNUE9SQVJZX0xPR0dJTkcpCiAgICAgICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBhY2N1
bXVsYXRlZEV2ZW50T2Zmc2V0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446399</attachid>
            <date>2021-12-08 11:46:44 -0800</date>
            <delta_ts>2021-12-08 11:46:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233993-20211208114643.patch</filename>
            <type>text/plain</type>
            <size>18138</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NjYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDY4N2ZkNzk4YzIxOTU1ZWQx
NTg5NDVkYTk3YzhiZjY5ZTNjYTBiM2QuLjdlM2U4NGNhOTE0NjNmMWIwNWY2ODBiMDNkNjFhYTJl
YWY3YTIwMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMjEtMTItMDggIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW9tZW50dW0gRXZlbnQg
RGlzcGF0Y2hlcjogTW9tZW50dW0gdGFpbCBzaG91bGQgaGF2ZSBtb250b25pY2FsbHkgZGVjcmVh
c2luZyBkZWx0YXMgYW5kIHRhaWwgZ2FwcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjMzOTkzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NjExODM2
Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvTW9tZW50dW1FdmVudERpc3BhdGNoZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpNb21lbnR1bUV2ZW50RGlzcGF0Y2hlcjo6Y29uc3VtZURlbHRhRm9yQ3VycmVudFRpbWUp
OgorICAgICAgICAoV2ViS2l0OjpNb21lbnR1bUV2ZW50RGlzcGF0Y2hlcjo6YnVpbGRPZmZzZXRU
YWJsZVdpdGhJbml0aWFsRGVsdGEpOgorICAgICAgICAoV2ViS2l0OjpNb21lbnR1bUV2ZW50RGlz
cGF0Y2hlcjo6Y29tcHV0ZU5leHREZWx0YSk6CisgICAgICAgIEluIG9yZGVyIHRvIGF2b2lkIHZp
c3VhbCBzdHV0dGVyIGR1ZSB0byBpbnRlZ3JhbCByb3VuZGluZyBvZiB0aGUKKyAgICAgICAgZGVs
dGFzIHdlIGRpc3BhdGNoIGluIHRoZSBtb21lbnR1bSBwaGFzZSwgc3dpdGNoIHRvIGEgdGFibGUg
b2YKKyAgICAgICAgZGVsdGFzIGluc3RlYWQgb2YgaW50ZXJwb2xhdGluZyBhbG9uZyB0aGUgb2Zm
c2V0IGN1cnZlIGR1cmluZyB0aGUKKyAgICAgICAgdGFpbCBlbmQgb2YgdGhlIGFuaW1hdGlvbiAo
d2hlbiB0aGUgcm91bmRpbmcgbWFrZXMgdXAgYSBsYXJnZQorICAgICAgICBwcm9wb3J0aW9uIG9m
IGVhY2ggZGVsdGEpLgorCisgICAgICAgIChXZWJLaXQ6Ok1vbWVudHVtRXZlbnREaXNwYXRjaGVy
OjplcXVhbGl6ZVRhaWxHYXBzKToKKyAgICAgICAgU29ydCB0aGUgZGVsdGFzIHVwIHVudGlsIHRo
ZSBmaXJzdCB6ZXJvIHRvIGVuc3VyZSBhIGxhY2sgb2YgdW5leHBlY3RlZAorICAgICAgICBwZXJj
ZXB0dWFsIGFjY2VsZXJhdGlvbiwgYW5kIHRoZW4gaW5qZWN0IHNraXBwZWQgZnJhbWVzIGluIG9y
ZGVyIHRvCisgICAgICAgIGVuc3VyZSB0aGF0IGZyYW1lcyB0aGF0IGhhdmUgZWZmZWN0aXZlIHNj
cm9sbCBtb3ZlbWVudCAobm9uLXplcm8gZGVsdGFzKQorICAgICAgICBhcmUgYWx3YXlzIHNwYWNl
ZCBlcXVhbGx5LW9yLWZ1cnRoZXIgYXBhcnQgdGhhbiBlYXJsaWVyIG9uZXMsIGJ1dAorICAgICAg
ICBuZXZlciBjbG9zZXIgdG9nZXRoZXIgKHdoaWNoLCBhZ2Fpbiwgd291bGQgYmUgcGVyY2lldmVk
IGFzIGFjY2VsZXJhdGlvbikuCisKKyAgICAgICAgKFdlYktpdDo6TW9tZW50dW1FdmVudERpc3Bh
dGNoZXI6OmhhbmRsZVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpNb21lbnR1bUV2ZW50
RGlzcGF0Y2hlcjo6cHVzaExvZ0VudHJ5KToKKyAgICAgICAgKFdlYktpdDo6TW9tZW50dW1FdmVu
dERpc3BhdGNoZXI6OmZsdXNoTG9nKToKKyAgICAgICAgTGFzdGx5LCBhZGp1c3Qgc29tZSBsb2dn
aW5nIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHRlbGwgd2hpY2ggcm93IGluCisgICAgICAgIHRoZSBv
dXRwdXQgY29ycmVzcG9uZHMgdG8gYW4gZXZlbnQgZGVsdGEgb3IgZ2VuZXJhdGVkIGRlbHRhLCBz
byBpdCdzCisgICAgICAgIGVhc2llciB0byBmaW5kIHNraXBwZWQgZnJhbWVzLgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9Nb21lbnR1bUV2ZW50RGlzcGF0Y2hlci5oOgorCiAyMDIxLTEy
LTA4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBLVk8g
d29yayBmb3IgV0tXZWJwYWdlUHJlZmVyZW5jZXMuX2NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvTW9tZW50dW1FdmVu
dERpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvTW9tZW50
dW1FdmVudERpc3BhdGNoZXIuY3BwCmluZGV4IDQ3OTk1ODdiNjkxOWZlZDJmOTM4YjgyODY4ZWJm
YjdlN2I2YjlhOWQuLmEwNDVjODNkMThkNjZhYmZkMDUwMGY2ZWRmMGY2ZWI2MGJlZDMzNWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL01vbWVudHVtRXZlbnRE
aXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Nb21l
bnR1bUV2ZW50RGlzcGF0Y2hlci5jcHAKQEAgLTExMywxNSArMTEzLDE1IEBAIGJvb2wgTW9tZW50
dW1FdmVudERpc3BhdGNoZXI6OmhhbmRsZVdoZWVsRXZlbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgcGFnZUlkZW50CiAgICAgICAgIG1fY3VycmVudEdlc3R1cmUuYWNjdW11bGF0ZWRFdmVudE9m
ZnNldCArPSBldmVudC5kZWx0YSgpOwogCiAgICAgYXV0byBjb21iaW5lZFBoYXNlID0gKGV2ZW50
LnBoYXNlKCkgPDwgOCkgfCAoZXZlbnQubW9tZW50dW1QaGFzZSgpKTsKLSAgICBtX2N1cnJlbnRM
b2dTdGF0ZS5sYXRlc3RFdmVudFBoYXNlID0gY29tYmluZWRQaGFzZTsKICAgICBtX2N1cnJlbnRM
b2dTdGF0ZS50b3RhbEV2ZW50T2Zmc2V0ICs9IGV2ZW50LmRlbHRhKCkuaGVpZ2h0KCk7CiAgICAg
aWYgKCFpc01vbWVudHVtRXZlbnREdXJpbmdTeW50aGV0aWNHZXN0dXJlKSB7CiAgICAgICAgIC8v
IExvZyBldmVudHMgdGhhdCB3ZSBkb24ndCBibG9jayB0byB0aGUgZ2VuZXJhdGVkIG9mZnNldHMg
bG9nIGFzIHdlbGwsCiAgICAgICAgIC8vIGV2ZW4gdGhvdWdoIHdlIGRpZG4ndCB0ZWNobmljYWxs
eSBnZW5lcmF0ZSB0aGVtLCBqdXN0IHBhc3NlZCB0aGVtIHRocm91Z2guCi0gICAgICAgIG1fY3Vy
cmVudExvZ1N0YXRlLmxhdGVzdEdlbmVyYXRlZFBoYXNlID0gY29tYmluZWRQaGFzZTsKICAgICAg
ICAgbV9jdXJyZW50TG9nU3RhdGUudG90YWxHZW5lcmF0ZWRPZmZzZXQgKz0gZXZlbnQuZGVsdGEo
KS5oZWlnaHQoKTsKLSAgICB9Ci0gICAgcHVzaExvZ0VudHJ5KCk7CisgICAgICAgIHB1c2hMb2dF
bnRyeShjb21iaW5lZFBoYXNlLCBjb21iaW5lZFBoYXNlKTsKKyAgICB9IGVsc2UKKyAgICAgICAg
cHVzaExvZ0VudHJ5KDAsIGNvbWJpbmVkUGhhc2UpOworICAgIAogI2VuZGlmCiAKICAgICAvLyBD
b25zdW1lIGFueSBub3JtYWwgbW9tZW50dW0gZXZlbnRzIHdoaWxlIHdlJ3JlIGluc2lkZSBhIHN5
bnRoZXRpYyBtb21lbnR1bSBnZXN0dXJlLgpAQCAtMTc3LDkgKzE3Nyw4IEBAIHZvaWQgTW9tZW50
dW1FdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoU3ludGhldGljTW9tZW50dW1FdmVudChXZWJXaGVl
bEV2ZW50OjpQaGFzCiAgICAgbV9kaXNwYXRjaGVyLmludGVybmFsV2hlZWxFdmVudChtX2N1cnJl
bnRHZXN0dXJlLnBhZ2VJZGVudGlmaWVyLCBzeW50aGV0aWNFdmVudCwgbV9sYXN0UnViYmVyQmFu
ZGFibGVFZGdlcywgRXZlbnREaXNwYXRjaGVyOjpXaGVlbEV2ZW50T3JpZ2luOjpNb21lbnR1bUV2
ZW50RGlzcGF0Y2hlcik7CiAKICNpZiBFTkFCTEUoTU9NRU5UVU1fRVZFTlRfRElTUEFUQ0hFUl9U
RU1QT1JBUllfTE9HR0lORykKLSAgICBtX2N1cnJlbnRMb2dTdGF0ZS5sYXRlc3RHZW5lcmF0ZWRQ
aGFzZSA9IHBoYXNlOwogICAgIG1fY3VycmVudExvZ1N0YXRlLnRvdGFsR2VuZXJhdGVkT2Zmc2V0
ICs9IGFwcEtpdEFjY2VsZXJhdGVkRGVsdGEuaGVpZ2h0KCk7Ci0gICAgcHVzaExvZ0VudHJ5KCk7
CisgICAgcHVzaExvZ0VudHJ5KHBoYXNlLCAwKTsKICNlbmRpZgogfQogCkBAIC0yMTksNyArMjE4
LDcgQEAgdm9pZCBNb21lbnR1bUV2ZW50RGlzcGF0Y2hlcjo6ZGlkRW5kTW9tZW50dW1QaGFzZSgp
CiAgICAgZGlzcGF0Y2hTeW50aGV0aWNNb21lbnR1bUV2ZW50KFdlYldoZWVsRXZlbnQ6OlBoYXNl
RW5kZWQsIHsgfSk7CiAKICNpZiBFTkFCTEUoTU9NRU5UVU1fRVZFTlRfRElTUEFUQ0hFUl9URU1Q
T1JBUllfTE9HR0lORykKLSAgICBSRUxFQVNFX0xPRyhTY3JvbGxBbmltYXRpb25zLCAiTW9tZW50
dW1FdmVudERpc3BhdGNoZXIgc2F3IG1vbWVudHVtIGVuZCBwaGFzZSB3aXRoIHRvdGFsIG9mZnNl
dCAlLjFmICUuMWYsIGR1cmF0aW9uICVmIChldmVudCBvZmZzZXQgd291bGQgaGF2ZSBiZWVuICUu
MWYgJS4xZikiLCBtX2N1cnJlbnRHZXN0dXJlLmN1cnJlbnRPZmZzZXQud2lkdGgoKSwgbV9jdXJy
ZW50R2VzdHVyZS5jdXJyZW50T2Zmc2V0LmhlaWdodCgpLCAoTW9ub3RvbmljVGltZTo6bm93KCkg
LSBtX2N1cnJlbnRHZXN0dXJlLnN0YXJ0VGltZSkuc2Vjb25kcygpLCBtX2N1cnJlbnRHZXN0dXJl
LmFjY3VtdWxhdGVkRXZlbnRPZmZzZXQud2lkdGgoKSwgbV9jdXJyZW50R2VzdHVyZS5hY2N1bXVs
YXRlZEV2ZW50T2Zmc2V0LmhlaWdodCgpKTsKKyAgICBSRUxFQVNFX0xPRyhTY3JvbGxBbmltYXRp
b25zLCAiTW9tZW50dW1FdmVudERpc3BhdGNoZXIgc2F3IG1vbWVudHVtIGVuZCBwaGFzZSB3aXRo
IHRvdGFsIG9mZnNldCAlLjFmICUuMWYsIGR1cmF0aW9uICVmIChldmVudCBvZmZzZXQgd291bGQg
aGF2ZSBiZWVuICUuMWYgJS4xZikgKHRhaWwgaW5kZXggJWQgb2YgJXp1KSIsIG1fY3VycmVudEdl
c3R1cmUuY3VycmVudE9mZnNldC53aWR0aCgpLCBtX2N1cnJlbnRHZXN0dXJlLmN1cnJlbnRPZmZz
ZXQuaGVpZ2h0KCksIChNb25vdG9uaWNUaW1lOjpub3coKSAtIG1fY3VycmVudEdlc3R1cmUuc3Rh
cnRUaW1lKS5zZWNvbmRzKCksIG1fY3VycmVudEdlc3R1cmUuYWNjdW11bGF0ZWRFdmVudE9mZnNl
dC53aWR0aCgpLCBtX2N1cnJlbnRHZXN0dXJlLmFjY3VtdWxhdGVkRXZlbnRPZmZzZXQuaGVpZ2h0
KCksIG1fY3VycmVudEdlc3R1cmUuY3VycmVudFRhaWxEZWx0YUluZGV4LCBtX2N1cnJlbnRHZXN0
dXJlLnRhaWxEZWx0YVRhYmxlLnNpemUoKSk7CiAgICAgbV9kaXNwYXRjaGVyLnF1ZXVlKCkuZGlz
cGF0Y2hBZnRlcigxX3MsIFt0aGlzXSB7CiAgICAgICAgIGZsdXNoTG9nKCk7CiAgICAgfSk7CkBA
IC0yOTQsMTUgKzI5MywxOCBAQCB2b2lkIE1vbWVudHVtRXZlbnREaXNwYXRjaGVyOjpwYWdlU2Ny
ZWVuRGlkQ2hhbmdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRAogCiBXZWJDb3JlOjpG
bG9hdFNpemUgTW9tZW50dW1FdmVudERpc3BhdGNoZXI6OmNvbnN1bWVEZWx0YUZvckN1cnJlbnRU
aW1lKCkKIHsKLSAgICBhdXRvIGFuaW1hdGlvblRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKSAt
IG1fY3VycmVudEdlc3R1cmUuc3RhcnRUaW1lOwotICAgIGF1dG8gZGVzaXJlZE9mZnNldCA9IG9m
ZnNldEF0VGltZShhbmltYXRpb25UaW1lKTsKKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgZGVsdGE7
CiAKLSNpZiAhRU5BQkxFKE1PTUVOVFVNX0VWRU5UX0RJU1BBVENIRVJfUFJFTUFUVVJFX1JPVU5E
SU5HKQotICAgIC8vIEludGVudGlvbmFsIGRlbHRhIHJvdW5kaW5nIChidXQgYXQgdGhlIGVuZCEp
LgotICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBkZWx0YSA9IHJvdW5kZWRJbnRTaXplKGRlc2lyZWRP
ZmZzZXQgLSBtX2N1cnJlbnRHZXN0dXJlLmN1cnJlbnRPZmZzZXQpOwotI2Vsc2UKLSAgICBXZWJD
b3JlOjpGbG9hdFNpemUgZGVsdGEgPSBkZXNpcmVkT2Zmc2V0IC0gbV9jdXJyZW50R2VzdHVyZS5j
dXJyZW50T2Zmc2V0OwotI2VuZGlmCisgICAgYXV0byBhbmltYXRpb25UaW1lID0gTW9ub3Rvbmlj
VGltZTo6bm93KCkgLSBtX2N1cnJlbnRHZXN0dXJlLnN0YXJ0VGltZTsKKyAgICBpZiAoYW5pbWF0
aW9uVGltZSA8IG1fY3VycmVudEdlc3R1cmUudGFpbFN0YXJ0RGVsYXkpIHsKKyAgICAgICAgYXV0
byBkZXNpcmVkT2Zmc2V0ID0gb2Zmc2V0QXRUaW1lKGFuaW1hdGlvblRpbWUpOworICAgICAgICBk
ZWx0YSA9IHJvdW5kZWRJbnRTaXplKGRlc2lyZWRPZmZzZXQgLSBtX2N1cnJlbnRHZXN0dXJlLmN1
cnJlbnRPZmZzZXQpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChtX2N1cnJlbnRHZXN0dXJl
LmN1cnJlbnRUYWlsRGVsdGFJbmRleCA8IG1fY3VycmVudEdlc3R1cmUudGFpbERlbHRhVGFibGUu
c2l6ZSgpKQorICAgICAgICAgICAgZGVsdGEgPSAtbV9jdXJyZW50R2VzdHVyZS50YWlsRGVsdGFU
YWJsZVttX2N1cnJlbnRHZXN0dXJlLmN1cnJlbnRUYWlsRGVsdGFJbmRleCsrXTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgZGVsdGEgPSB7IH07CisgICAgfQogCiAgICAgbV9jdXJyZW50R2Vz
dHVyZS5jdXJyZW50T2Zmc2V0ICs9IGRlbHRhOwogCkBAIC0zNjMsMjcgKzM2NSwxMjYgQEAgdm9p
ZCBNb21lbnR1bUV2ZW50RGlzcGF0Y2hlcjo6ZGlkUmVjZWl2ZVNjcm9sbEV2ZW50KGNvbnN0IFdl
YldoZWVsRXZlbnQmIGV2ZW50KQogCiB2b2lkIE1vbWVudHVtRXZlbnREaXNwYXRjaGVyOjpidWls
ZE9mZnNldFRhYmxlV2l0aEluaXRpYWxEZWx0YShXZWJDb3JlOjpGbG9hdFNpemUgaW5pdGlhbFVu
YWNjZWxlcmF0ZWREZWx0YSkKIHsKLSNpZiBFTkFCTEUoTU9NRU5UVU1fRVZFTlRfRElTUEFUQ0hF
Ul9QUkVNQVRVUkVfUk9VTkRJTkcpCi0gICAgbV9jdXJyZW50R2VzdHVyZS5jYXJyeU9mZnNldCA9
IHsgfTsKLSNlbmRpZgogICAgIG1fY3VycmVudEdlc3R1cmUub2Zmc2V0VGFibGUuY2xlYXIoKTsK
IAogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBhY2N1bXVsYXRlZE9mZnNldDsKICAgICBXZWJDb3Jl
OjpGbG9hdFNpemUgdW5hY2NlbGVyYXRlZERlbHRhID0gaW5pdGlhbFVuYWNjZWxlcmF0ZWREZWx0
YTsKIAorICAgIGZsb2F0IHBoeXNpY2FsQ3VydmVNdWx0aXBsaWVyID0gaWRlYWxDdXJ2ZUZyYW1l
UmF0ZSAvIG1fY3VycmVudEdlc3R1cmUuYWNjZWxlcmF0aW9uQ3VydmUtPmZyYW1lUmF0ZSgpOwor
ICAgIGJvb2wgaW5UYWlsID0gZmFsc2U7CisgICAgV2ViQ29yZTo6RmxvYXRTaXplIHRhaWxDYXJy
eTsKKwogICAgIGRvIHsKICAgICAgICAgV2ViQ29yZTo6RmxvYXRTaXplIGFjY2VsZXJhdGVkRGVs
dGE7CiAgICAgICAgIHN0ZDo6dGllKHVuYWNjZWxlcmF0ZWREZWx0YSwgYWNjZWxlcmF0ZWREZWx0
YSkgPSBjb21wdXRlTmV4dERlbHRhKHVuYWNjZWxlcmF0ZWREZWx0YSk7CiAKKyAgICAgICAgY29u
c3QgZmxvYXQgdGFpbFN0YXJ0VW5hY2NlbGVyYXRlZERlbHRhID0gNi5mOworICAgICAgICBpZiAo
IWluVGFpbCAmJiBzdGQ6OmFicyh1bmFjY2VsZXJhdGVkRGVsdGEud2lkdGgoKSkgPCB0YWlsU3Rh
cnRVbmFjY2VsZXJhdGVkRGVsdGEgJiYgc3RkOjphYnModW5hY2NlbGVyYXRlZERlbHRhLmhlaWdo
dCgpKSA8IHRhaWxTdGFydFVuYWNjZWxlcmF0ZWREZWx0YSkgeworICAgICAgICAgICAgaW5UYWls
ID0gdHJ1ZTsKKyAgICAgICAgICAgIG1fY3VycmVudEdlc3R1cmUudGFpbFN0YXJ0RGVsYXkgPSBp
ZGVhbEN1cnZlRnJhbWVJbnRlcnZhbCAqIG1fY3VycmVudEdlc3R1cmUub2Zmc2V0VGFibGUuc2l6
ZSgpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGluVGFpbCkgeworICAgICAgICAgICAgYXV0
byB0YWlsRGVsdGEgPSBhY2NlbGVyYXRlZERlbHRhICogcGh5c2ljYWxDdXJ2ZU11bHRpcGxpZXI7
CisgICAgICAgICAgICBhdXRvIGRlbHRhV2l0aENhcnJ5ID0gdGFpbERlbHRhICsgdGFpbENhcnJ5
OworICAgICAgICAgICAgYXV0byBxdWFudGl6ZWREZWx0YSA9IHJvdW5kZWRJbnRTaXplKGRlbHRh
V2l0aENhcnJ5KTsKKyAgICAgICAgICAgIHRhaWxDYXJyeSA9IGRlbHRhV2l0aENhcnJ5IC0gcXVh
bnRpemVkRGVsdGE7CisgICAgICAgICAgICBtX2N1cnJlbnRHZXN0dXJlLnRhaWxEZWx0YVRhYmxl
LmFwcGVuZChxdWFudGl6ZWREZWx0YSk7CisgICAgICAgIH0KKwogICAgICAgICBhY2N1bXVsYXRl
ZE9mZnNldCArPSBhY2NlbGVyYXRlZERlbHRhOwogICAgICAgICBtX2N1cnJlbnRHZXN0dXJlLm9m
ZnNldFRhYmxlLmFwcGVuZChhY2N1bXVsYXRlZE9mZnNldCk7CisKICAgICB9IHdoaWxlIChzdGQ6
OmFicyh1bmFjY2VsZXJhdGVkRGVsdGEud2lkdGgoKSkgPiAwLjUgfHwgc3RkOjphYnModW5hY2Nl
bGVyYXRlZERlbHRhLmhlaWdodCgpKSA+IDAuNSk7CiAKKyAgICBlcXVhbGl6ZVRhaWxHYXBzKCk7
CisKICNpZiBFTkFCTEUoTU9NRU5UVU1fRVZFTlRfRElTUEFUQ0hFUl9URU1QT1JBUllfTE9HR0lO
RykKLSAgICBSRUxFQVNFX0xPRyhTY3JvbGxBbmltYXRpb25zLCAiTW9tZW50dW1FdmVudERpc3Bh
dGNoZXIgYnVpbHQgdGFibGUgd2l0aCAlbGQgZnJhbWVzLCBpbml0aWFsIGRlbHRhICVmICVmLCBk
aXN0YW5jZSAlZiAlZiAoaW5pdGlhbCBkZWx0YSBmcm9tIGxhc3QgY2hhbmdlZCBldmVudCAlZiAl
ZikiLCBtX2N1cnJlbnRHZXN0dXJlLm9mZnNldFRhYmxlLnNpemUoKSwgaW5pdGlhbFVuYWNjZWxl
cmF0ZWREZWx0YS53aWR0aCgpLCBpbml0aWFsVW5hY2NlbGVyYXRlZERlbHRhLmhlaWdodCgpLCBh
Y2N1bXVsYXRlZE9mZnNldC53aWR0aCgpLCBhY2N1bXVsYXRlZE9mZnNldC5oZWlnaHQoKSwgbV9s
YXN0QWN0aXZlUGhhc2VEZWx0YS53aWR0aCgpLCBtX2xhc3RBY3RpdmVQaGFzZURlbHRhLmhlaWdo
dCgpKTsKKyAgICBSRUxFQVNFX0xPRyhTY3JvbGxBbmltYXRpb25zLCAiTW9tZW50dW1FdmVudERp
c3BhdGNoZXIgYnVpbHQgdGFibGUgd2l0aCAlbGQgZnJhbWVzLCAlLjFmIHNlY29uZHMgKCVsZCB0
YWlsIGZyYW1lcywgJS4xZiBzZWNvbmRzLCBzdGFydGluZyBhdCAlLjFmKSwgaW5pdGlhbCBkZWx0
YSAlLjFmICUuMWYsIGRpc3RhbmNlICUuMWYgJS4xZiAoaW5pdGlhbCBkZWx0YSBmcm9tIGxhc3Qg
Y2hhbmdlZCBldmVudCAlLjFmICUuMWYpIiwgbV9jdXJyZW50R2VzdHVyZS5vZmZzZXRUYWJsZS5z
aXplKCksIGlkZWFsQ3VydmVGcmFtZUludGVydmFsLnNlY29uZHMoKSAqIG1fY3VycmVudEdlc3R1
cmUub2Zmc2V0VGFibGUuc2l6ZSgpLCBtX2N1cnJlbnRHZXN0dXJlLnRhaWxEZWx0YVRhYmxlLnNp
emUoKSwgbV9jdXJyZW50R2VzdHVyZS50YWlsRGVsdGFUYWJsZS5zaXplKCkgKiAoMS5mIC8gbV9j
dXJyZW50R2VzdHVyZS5hY2NlbGVyYXRpb25DdXJ2ZS0+ZnJhbWVSYXRlKCkpLCBtX2N1cnJlbnRH
ZXN0dXJlLnRhaWxTdGFydERlbGF5LnNlY29uZHMoKSwgaW5pdGlhbFVuYWNjZWxlcmF0ZWREZWx0
YS53aWR0aCgpLCBpbml0aWFsVW5hY2NlbGVyYXRlZERlbHRhLmhlaWdodCgpLCBhY2N1bXVsYXRl
ZE9mZnNldC53aWR0aCgpLCBhY2N1bXVsYXRlZE9mZnNldC5oZWlnaHQoKSwgbV9sYXN0QWN0aXZl
UGhhc2VEZWx0YS53aWR0aCgpLCBtX2xhc3RBY3RpdmVQaGFzZURlbHRhLmhlaWdodCgpKTsKICNl
bmRpZgogfQogCit2b2lkIE1vbWVudHVtRXZlbnREaXNwYXRjaGVyOjplcXVhbGl6ZVRhaWxHYXBz
KCkKK3sKKyAgICAvLyBTb3J0IHRoZSBkZWx0YXMgdXAgdW50aWwgdGhlIGZpcnN0IHplcm8gdG8g
ZW5zdXJlIGEgbGFjayBvZiB1bmV4cGVjdGVkCisgICAgLy8gcGVyY2VwdHVhbCBhY2NlbGVyYXRp
b24sIGFuZCB0aGVuIGluamVjdCBza2lwcGVkIGZyYW1lcyBpbiBvcmRlciB0bworICAgIC8vIGVu
c3VyZSB0aGF0IGZyYW1lcyB0aGF0IGhhdmUgZWZmZWN0aXZlIHNjcm9sbCBtb3ZlbWVudCAobm9u
LXplcm8gZGVsdGFzKQorICAgIC8vIGFyZSBhbHdheXMgc3BhY2VkIGVxdWFsbHktb3ItZnVydGhl
ciBhcGFydCB0aGFuIGVhcmxpZXIgb25lcywgYnV0CisgICAgLy8gbmV2ZXIgY2xvc2VyIHRvZ2V0
aGVyLgorCisgICAgYXV0byYgdGFibGUgPSBtX2N1cnJlbnRHZXN0dXJlLnRhaWxEZWx0YVRhYmxl
OworICAgIHNpemVfdCBpbml0aWFsVGFibGVTaXplID0gdGFibGUuc2l6ZSgpOworCisgICAgZW51
bSBBeGlzIHsgSG9yaXpvbnRhbCwgVmVydGljYWwgfTsKKyAgICBWZWN0b3I8ZmxvYXQ+IGRlbHRh
c1syXTsKKyAgICB1bnNpZ25lZCBmaXJzdFplcm9JbmRleFsyXSA9IHsgMCwgMCB9OworICAgIGRl
bHRhc1tIb3Jpem9udGFsXS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGluaXRpYWxUYWJsZVNpemUp
OworICAgIGRlbHRhc1tWZXJ0aWNhbF0ucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShpbml0aWFsVGFi
bGVTaXplKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW5pdGlhbFRhYmxlU2l6ZTsg
aSsrKSB7CisgICAgICAgIGRlbHRhc1tIb3Jpem9udGFsXS51bmNoZWNrZWRBcHBlbmQodGFibGVb
aV0ud2lkdGgoKSk7CisgICAgICAgIGlmICghZmlyc3RaZXJvSW5kZXhbSG9yaXpvbnRhbF0gJiYg
IXRhYmxlW2ldLndpZHRoKCkpCisgICAgICAgICAgICBmaXJzdFplcm9JbmRleFtIb3Jpem9udGFs
XSA9IGk7CisKKyAgICAgICAgZGVsdGFzW1ZlcnRpY2FsXS51bmNoZWNrZWRBcHBlbmQodGFibGVb
aV0uaGVpZ2h0KCkpOworICAgICAgICBpZiAoIWZpcnN0WmVyb0luZGV4W1ZlcnRpY2FsXSAmJiAh
dGFibGVbaV0uaGVpZ2h0KCkpCisgICAgICAgICAgICBmaXJzdFplcm9JbmRleFtWZXJ0aWNhbF0g
PSBpOworICAgIH0KKyAgICAKKyAgICBpZiAoYXV0byBpbmRleCA9IGZpcnN0WmVyb0luZGV4W0hv
cml6b250YWxdKQorICAgICAgICBzdGQ6OnNvcnQoZGVsdGFzW0hvcml6b250YWxdLmJlZ2luKCks
IHN0ZDo6bmV4dChkZWx0YXNbSG9yaXpvbnRhbF0uYmVnaW4oKSwgaW5kZXgpKTsKKyAgICBpZiAo
YXV0byBpbmRleCA9IGZpcnN0WmVyb0luZGV4W1ZlcnRpY2FsXSkKKyAgICAgICAgc3RkOjpzb3J0
KGRlbHRhc1tWZXJ0aWNhbF0uYmVnaW4oKSwgc3RkOjpuZXh0KGRlbHRhc1tWZXJ0aWNhbF0uYmVn
aW4oKSwgaW5kZXgpKTsKKworICAgIC8vIEdhcFNpemUgaXMgYSBjb3VudCBvZiBjb250aWd1b3Vz
IGZyYW1lcyB3aXRoIHplcm8gZGVsdGFzLgorICAgIHR5cGVkZWYgdW5zaWduZWQgR2FwU2l6ZVsy
XTsKKyAgICBHYXBTaXplIG1pbmltdW1HYXAgPSB7IDAsIDAgfTsKKyAgICBHYXBTaXplIGN1cnJl
bnRHYXAgPSB7IDAsIDAgfTsKKyAgICBHYXBTaXplIHJlbWFpbmluZ0dhcFRvR2VuZXJhdGUgPSB7
IDAsIDAgfTsKKyAgICB1bnNpZ25lZCBvcmlnaW5hbFRhYmxlSW5kZXhbMl0gPSB7IDAsIDAgfTsK
KworICAgIGF1dG8gdGFrZU5leHREZWx0YSA9IFsmXSAodWludDhfdCBheGlzKSAtPiBmbG9hdCB7
CisgICAgICAgIGlmIChvcmlnaW5hbFRhYmxlSW5kZXhbYXhpc10gPj0gaW5pdGlhbFRhYmxlU2l6
ZSkKKyAgICAgICAgICAgIHJldHVybiAwLmY7CisKKyAgICAgICAgaWYgKHJlbWFpbmluZ0dhcFRv
R2VuZXJhdGVbYXhpc10pIHsKKyAgICAgICAgICAgIC0tcmVtYWluaW5nR2FwVG9HZW5lcmF0ZVth
eGlzXTsKKyAgICAgICAgICAgICsrY3VycmVudEdhcFtheGlzXTsKKyAgICAgICAgICAgIHJldHVy
biAwLmY7CisgICAgICAgIH0KKworICAgICAgICBhdXRvIHZhbHVlID0gZGVsdGFzW2F4aXNdW29y
aWdpbmFsVGFibGVJbmRleFtheGlzXV07CisgICAgICAgIGlmICh2YWx1ZSkgeworICAgICAgICAg
ICAgbWluaW11bUdhcFtheGlzXSA9IHN0ZDo6bWF4KG1pbmltdW1HYXBbYXhpc10sIGN1cnJlbnRH
YXBbYXhpc10pOworICAgICAgICAgICAgcmVtYWluaW5nR2FwVG9HZW5lcmF0ZVtheGlzXSA9IG1p
bmltdW1HYXBbYXhpc10gLSBjdXJyZW50R2FwW2F4aXNdOworICAgICAgICAgICAgaWYgKHJlbWFp
bmluZ0dhcFRvR2VuZXJhdGVbYXhpc10pIHsKKyAgICAgICAgICAgICAgICAtLXJlbWFpbmluZ0dh
cFRvR2VuZXJhdGVbYXhpc107CisgICAgICAgICAgICAgICAgKytjdXJyZW50R2FwW2F4aXNdOwor
ICAgICAgICAgICAgICAgIHJldHVybiAwLmY7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGN1cnJlbnRHYXBbYXhpc10gPSAwOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICsrY3Vy
cmVudEdhcFtheGlzXTsKKworICAgICAgICArK29yaWdpbmFsVGFibGVJbmRleFtheGlzXTsKKwor
ICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgfTsKKworICAgIHNpemVfdCBmaW5hbFRhYmxlU2l6
ZSA9IDA7CisgICAgdGFibGUuc2hyaW5rKDApOworCisgICAgd2hpbGUgKG9yaWdpbmFsVGFibGVJ
bmRleFtIb3Jpem9udGFsXSA8IGluaXRpYWxUYWJsZVNpemUgfHwgb3JpZ2luYWxUYWJsZUluZGV4
W1ZlcnRpY2FsXSA8IGluaXRpYWxUYWJsZVNpemUpIHsKKyAgICAgICAgV2ViQ29yZTo6RmxvYXRT
aXplIGRlbHRhKHRha2VOZXh0RGVsdGEoSG9yaXpvbnRhbCksIHRha2VOZXh0RGVsdGEoVmVydGlj
YWwpKTsKKyAgICAgICAgdGFibGUuYXBwZW5kKGRlbHRhKTsKKworICAgICAgICBpZiAoIWRlbHRh
LmlzWmVybygpKQorICAgICAgICAgICAgZmluYWxUYWJsZVNpemUgPSB0YWJsZS5zaXplKCk7Cisg
ICAgfQorCisgICAgdGFibGUuc2hyaW5rKGZpbmFsVGFibGVTaXplKTsKK30KKwogc3RhdGljIGZs
b2F0IGludGVycG9sYXRlKGZsb2F0IGEsIGZsb2F0IGIsIGZsb2F0IHQpCiB7CiAgICAgcmV0dXJu
IGEgKyB0ICogKGIgLSBhKTsKQEAgLTQzMywyOCArNTM0LDggQEAgc3RkOjpwYWlyPFdlYkNvcmU6
OkZsb2F0U2l6ZSwgV2ViQ29yZTo6RmxvYXRTaXplPiBNb21lbnR1bUV2ZW50RGlzcGF0Y2hlcjo6
Y29tcHUKICAgICBmbG9hdCBkZWNheVJhdGUgPSBtb21lbnR1bURlY2F5UmF0ZSh1bmFjY2VsZXJh
dGVkRGVsdGEsIGlkZWFsQ3VydmVGcmFtZUludGVydmFsKTsKICAgICB1bmFjY2VsZXJhdGVkRGVs
dGEuc2NhbGUoZGVjYXlSYXRlKTsKIAotICAgIGF1dG8gcXVhbnRpemVkVW5hY2NlbGVyYXRlZERl
bHRhID0gdW5hY2NlbGVyYXRlZERlbHRhOwotCi0jaWYgRU5BQkxFKE1PTUVOVFVNX0VWRU5UX0RJ
U1BBVENIRVJfUFJFTUFUVVJFX1JPVU5ESU5HKQotICAgIC8vIFJvdW5kIGFuZCBjYXJyeS4KLSAg
ICBpbnQzMl90IHF1YW50aXplZFggPSBzdGQ6OnJvdW5kKHF1YW50aXplZFVuYWNjZWxlcmF0ZWRE
ZWx0YS53aWR0aCgpKTsKLSAgICBpbnQzMl90IHF1YW50aXplZFkgPSBzdGQ6OnJvdW5kKHF1YW50
aXplZFVuYWNjZWxlcmF0ZWREZWx0YS5oZWlnaHQoKSk7Ci0KLSAgICBpZiAoc3RkOjphYnMocXVh
bnRpemVkVW5hY2NlbGVyYXRlZERlbHRhLndpZHRoKCkpIDwgMSAmJiBzdGQ6OmFicyhxdWFudGl6
ZWRVbmFjY2VsZXJhdGVkRGVsdGEuaGVpZ2h0KCkpIDwgMSkgewotICAgICAgICBmbG9hdCBkZWx0
YVhJbmNsdWRpbmdDYXJyeSA9IHF1YW50aXplZFVuYWNjZWxlcmF0ZWREZWx0YS53aWR0aCgpICsg
bV9jdXJyZW50R2VzdHVyZS5jYXJyeU9mZnNldC53aWR0aCgpOwotICAgICAgICBmbG9hdCBkZWx0
YVlJbmNsdWRpbmdDYXJyeSA9IHF1YW50aXplZFVuYWNjZWxlcmF0ZWREZWx0YS5oZWlnaHQoKSAr
IG1fY3VycmVudEdlc3R1cmUuY2FycnlPZmZzZXQuaGVpZ2h0KCk7Ci0KLSAgICAgICAgLy8gSW50
ZW50aW9uYWwgdHJ1bmNhdGlvbi4KLSAgICAgICAgcXVhbnRpemVkWCA9IGRlbHRhWEluY2x1ZGlu
Z0NhcnJ5OwotICAgICAgICBxdWFudGl6ZWRZID0gZGVsdGFZSW5jbHVkaW5nQ2Fycnk7Ci0gICAg
ICAgIG1fY3VycmVudEdlc3R1cmUuY2FycnlPZmZzZXQgPSB7IGRlbHRhWEluY2x1ZGluZ0NhcnJ5
IC0gcXVhbnRpemVkWCwgZGVsdGFZSW5jbHVkaW5nQ2FycnkgLSBxdWFudGl6ZWRZIH07Ci0gICAg
fQotCi0gICAgcXVhbnRpemVkVW5hY2NlbGVyYXRlZERlbHRhID0geyBzdGF0aWNfY2FzdDxmbG9h
dD4ocXVhbnRpemVkWCksIHN0YXRpY19jYXN0PGZsb2F0PihxdWFudGl6ZWRZKSB9OwotI2VuZGlm
Ci0KICAgICAvLyBUaGUgZGVsdGEgcXVldWUgb3BlcmF0ZXMgb24gcHJlLWFjY2VsZXJhdGlvbiBk
ZWx0YXMsIHNvIGluc2VydCB0aGUgbmV3IGV2ZW50ICpiZWZvcmUqIGFjY2VsZXJhdGluZy4KLSAg
ICBkaWRSZWNlaXZlU2Nyb2xsRXZlbnRXaXRoSW50ZXJ2YWwocXVhbnRpemVkVW5hY2NlbGVyYXRl
ZERlbHRhLCBpZGVhbEN1cnZlRnJhbWVJbnRlcnZhbCk7CisgICAgZGlkUmVjZWl2ZVNjcm9sbEV2
ZW50V2l0aEludGVydmFsKHVuYWNjZWxlcmF0ZWREZWx0YSwgaWRlYWxDdXJ2ZUZyYW1lSW50ZXJ2
YWwpOwogCiAgICAgYXV0byBhY2NlbGVyYXRlQXhpcyA9IFsmXSAoSGlzdG9yaWNhbERlbHRhcyYg
ZGVsdGFzLCBmbG9hdCB2YWx1ZSkgewogICAgICAgICBmbG9hdCB0b3RhbERlbHRhID0gMDsKQEAg
LTQ5OSw4ICs1ODAsOCBAQCBzdGQ6OnBhaXI8V2ViQ29yZTo6RmxvYXRTaXplLCBXZWJDb3JlOjpG
bG9hdFNpemU+IE1vbWVudHVtRXZlbnREaXNwYXRjaGVyOjpjb21wdQogICAgIH07CiAKICAgICBX
ZWJDb3JlOjpGbG9hdFNpemUgYWNjZWxlcmF0ZWREZWx0YSgKLSAgICAgICAgYWNjZWxlcmF0ZUF4
aXMobV9kZWx0YUhpc3RvcnlYLCBxdWFudGl6ZWRVbmFjY2VsZXJhdGVkRGVsdGEud2lkdGgoKSks
Ci0gICAgICAgIGFjY2VsZXJhdGVBeGlzKG1fZGVsdGFIaXN0b3J5WSwgcXVhbnRpemVkVW5hY2Nl
bGVyYXRlZERlbHRhLmhlaWdodCgpKQorICAgICAgICBhY2NlbGVyYXRlQXhpcyhtX2RlbHRhSGlz
dG9yeVgsIHVuYWNjZWxlcmF0ZWREZWx0YS53aWR0aCgpKSwKKyAgICAgICAgYWNjZWxlcmF0ZUF4
aXMobV9kZWx0YUhpc3RvcnlZLCB1bmFjY2VsZXJhdGVkRGVsdGEuaGVpZ2h0KCkpCiAgICAgKTsK
IAogI2lmIEVOQUJMRShNT01FTlRVTV9FVkVOVF9ESVNQQVRDSEVSX1RFTVBPUkFSWV9MT0dHSU5H
KQpAQCAtNTEyLDkgKzU5MywxMSBAQCBzdGQ6OnBhaXI8V2ViQ29yZTo6RmxvYXRTaXplLCBXZWJD
b3JlOjpGbG9hdFNpemU+IE1vbWVudHVtRXZlbnREaXNwYXRjaGVyOjpjb21wdQogCiAjaWYgRU5B
QkxFKE1PTUVOVFVNX0VWRU5UX0RJU1BBVENIRVJfVEVNUE9SQVJZX0xPR0dJTkcpCiAKLXZvaWQg
TW9tZW50dW1FdmVudERpc3BhdGNoZXI6OnB1c2hMb2dFbnRyeSgpCit2b2lkIE1vbWVudHVtRXZl
bnREaXNwYXRjaGVyOjpwdXNoTG9nRW50cnkodWludDMyX3QgZ2VuZXJhdGVkUGhhc2UsIHVpbnQz
Ml90IGV2ZW50UGhhc2UpCiB7CiAgICAgbV9jdXJyZW50TG9nU3RhdGUudGltZSA9IE1vbm90b25p
Y1RpbWU6Om5vdygpOworICAgIG1fY3VycmVudExvZ1N0YXRlLmdlbmVyYXRlZFBoYXNlID0gZ2Vu
ZXJhdGVkUGhhc2U7CisgICAgbV9jdXJyZW50TG9nU3RhdGUuZXZlbnRQaGFzZSA9IGV2ZW50UGhh
c2U7CiAgICAgbV9sb2cuYXBwZW5kKG1fY3VycmVudExvZ1N0YXRlKTsKIH0KIApAQCAtNTI5LDcg
KzYxMiw3IEBAIHZvaWQgTW9tZW50dW1FdmVudERpc3BhdGNoZXI6OmZsdXNoTG9nKCkKICAgICBh
dXRvIHN0YXJ0VGltZSA9IG1fbG9nWzBdLnRpbWU7CiAgICAgUkVMRUFTRV9MT0coU2Nyb2xsQW5p
bWF0aW9ucywgIk1vbWVudHVtRXZlbnREaXNwYXRjaGVyIGV2ZW50IGxvZzogdGltZSxnZW5lcmF0
ZWRPZmZzZXQsZ2VuZXJhdGVkUGhhc2UsZXZlbnRPZmZzZXQsZXZlbnRQaGFzZSIpOwogICAgIGZv
ciAoY29uc3QgYXV0byYgZW50cnkgOiBtX2xvZykKLSAgICAgICAgUkVMRUFTRV9MT0coU2Nyb2xs
QW5pbWF0aW9ucywgIk1vbWVudHVtRXZlbnREaXNwYXRjaGVyIGV2ZW50IGxvZzogJWYsJWYsJWQs
JWYsJWQiLCAoZW50cnkudGltZSAtIHN0YXJ0VGltZSkuc2Vjb25kcygpLCBlbnRyeS50b3RhbEdl
bmVyYXRlZE9mZnNldCwgZW50cnkubGF0ZXN0R2VuZXJhdGVkUGhhc2UsIGVudHJ5LnRvdGFsRXZl
bnRPZmZzZXQsIGVudHJ5LmxhdGVzdEV2ZW50UGhhc2UpOworICAgICAgICBSRUxFQVNFX0xPRyhT
Y3JvbGxBbmltYXRpb25zLCAiTW9tZW50dW1FdmVudERpc3BhdGNoZXIgZXZlbnQgbG9nOiAlZiwl
ZiwlZCwlZiwlZCIsIChlbnRyeS50aW1lIC0gc3RhcnRUaW1lKS5zZWNvbmRzKCksIGVudHJ5LnRv
dGFsR2VuZXJhdGVkT2Zmc2V0LCBlbnRyeS5nZW5lcmF0ZWRQaGFzZSwgZW50cnkudG90YWxFdmVu
dE9mZnNldCwgZW50cnkuZXZlbnRQaGFzZSk7CiAKICAgICBtX2xvZy5jbGVhcigpOwogICAgIG1f
Y3VycmVudExvZ1N0YXRlID0geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvTW9tZW50dW1FdmVudERpc3BhdGNoZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL01vbWVudHVtRXZlbnREaXNwYXRjaGVyLmgKaW5kZXggZTk5YzYwMGEx
ZDI4MWYwYjVkNTllOTlhYTMwMjAwYTI3YjI1MjRjMC4uM2U1NWQyN2EyM2U4MzkwNjFlYWM1YWNm
ZjE4NzMyNjljZTg0ZjQzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvTW9tZW50dW1FdmVudERpc3BhdGNoZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Nb21lbnR1bUV2ZW50RGlzcGF0Y2hlci5oCkBAIC0yNyw4ICsyNyw2IEBA
CiAKICNpZiBFTkFCTEUoTU9NRU5UVU1fRVZFTlRfRElTUEFUQ0hFUikKIAotLy8gRklYTUU6IFJl
bW92ZSB0aGlzIG9uY2Ugd2UgZGVjaWRlIHdoaWNoIHZlcnNpb24gd2Ugd2FudC4KLSNkZWZpbmUg
RU5BQkxFX01PTUVOVFVNX0VWRU5UX0RJU1BBVENIRVJfUFJFTUFUVVJFX1JPVU5ESU5HIDAKICNk
ZWZpbmUgRU5BQkxFX01PTUVOVFVNX0VWRU5UX0RJU1BBVENIRVJfVEVNUE9SQVJZX0xPR0dJTkcg
MQogCiAjaW5jbHVkZSAiRGlzcGxheUxpbmtPYnNlcnZlcklELmgiCkBAIC04MCw2ICs3OCw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkaXNwYXRjaFN5bnRoZXRpY01vbWVudHVtRXZlbnQoV2ViV2hl
ZWxFdmVudDo6UGhhc2UsIFdlYkNvcmU6OkZsb2F0U2l6ZSBkZWx0YSk7CiAKICAgICB2b2lkIGJ1
aWxkT2Zmc2V0VGFibGVXaXRoSW5pdGlhbERlbHRhKFdlYkNvcmU6OkZsb2F0U2l6ZSk7CisgICAg
dm9pZCBlcXVhbGl6ZVRhaWxHYXBzKCk7CiAKICAgICAvLyBPbmNlIGNvbnN1bWVkLCB0aGlzIGRl
bHRhICptdXN0KiBiZSBkaXNwYXRjaGVkIGluIGFuIGV2ZW50LgogICAgIFdlYkNvcmU6OkZsb2F0
U2l6ZSBjb25zdW1lRGVsdGFGb3JDdXJyZW50VGltZSgpOwpAQCAtOTEsNyArOTAsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVNjcm9sbEV2ZW50KGNvbnN0IFdlYldoZWVsRXZlbnQm
KTsKIAogI2lmIEVOQUJMRShNT01FTlRVTV9FVkVOVF9ESVNQQVRDSEVSX1RFTVBPUkFSWV9MT0dH
SU5HKQotICAgIHZvaWQgcHVzaExvZ0VudHJ5KCk7CisgICAgdm9pZCBwdXNoTG9nRW50cnkodWlu
dDMyX3QgZ2VuZXJhdGVkUGhhc2UsIHVpbnQzMl90IGV2ZW50UGhhc2UpOwogICAgIHZvaWQgZmx1
c2hMb2coKTsKIAogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtX2xhc3RBY3RpdmVQaGFzZURlbHRh
OwpAQCAtMTAyLDggKzEwMSw4IEBAIHByaXZhdGU6CiAgICAgICAgIGZsb2F0IHRvdGFsR2VuZXJh
dGVkT2Zmc2V0IHsgMCB9OwogICAgICAgICBmbG9hdCB0b3RhbEV2ZW50T2Zmc2V0IHsgMCB9Owog
Ci0gICAgICAgIHVpbnQzMl90IGxhdGVzdEdlbmVyYXRlZFBoYXNlIHsgMCB9OwotICAgICAgICB1
aW50MzJfdCBsYXRlc3RFdmVudFBoYXNlIHsgMCB9OworICAgICAgICB1aW50MzJfdCBnZW5lcmF0
ZWRQaGFzZSB7IDAgfTsKKyAgICAgICAgdWludDMyX3QgZXZlbnRQaGFzZSB7IDAgfTsKICAgICB9
OwogICAgIExvZ0VudHJ5IG1fY3VycmVudExvZ1N0YXRlOwogICAgIFZlY3RvcjxMb2dFbnRyeT4g
bV9sb2c7CkBAIC0xMzMsNyArMTMyLDEwIEBAIHByaXZhdGU6CiAgICAgICAgIFdlYkNvcmU6OkZs
b2F0U2l6ZSBjdXJyZW50T2Zmc2V0OwogICAgICAgICBNb25vdG9uaWNUaW1lIHN0YXJ0VGltZTsK
IAotICAgICAgICBWZWN0b3I8V2ViQ29yZTo6RmxvYXRTaXplPiBvZmZzZXRUYWJsZTsKKyAgICAg
ICAgVmVjdG9yPFdlYkNvcmU6OkZsb2F0U2l6ZT4gb2Zmc2V0VGFibGU7IC8vIEFsd2F5cyBhdCA2
MEh6IGludGVydmFscy4KKyAgICAgICAgVmVjdG9yPFdlYkNvcmU6OkZsb2F0U2l6ZT4gdGFpbERl
bHRhVGFibGU7IC8vIEFsd2F5cyBhdCBldmVudCBkaXNwYXRjaCBpbnRlcnZhbHMuCisgICAgICAg
IFNlY29uZHMgdGFpbFN0YXJ0RGVsYXk7CisgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRUYWlsRGVs
dGFJbmRleCB7IDAgfTsKIAogI2lmIEVOQUJMRShNT01FTlRVTV9FVkVOVF9ESVNQQVRDSEVSX1RF
TVBPUkFSWV9MT0dHSU5HKQogICAgICAgICBXZWJDb3JlOjpGbG9hdFNpemUgYWNjdW11bGF0ZWRF
dmVudE9mZnNldDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>