<?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>192128</bug_id>
          
          <creation_ts>2018-11-28 18:18:27 -0800</creation_ts>
          <short_desc>Make generic ScrollAnimator</short_desc>
          <delta_ts>2018-11-29 10:37:21 -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>Platform</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="Don Olmstead">don.olmstead</reporter>
          <assigned_to name="Don Olmstead">don.olmstead</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fred.wang</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1482781</commentid>
    <comment_count>0</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2018-11-28 18:18:27 -0800</bug_when>
    <thetext>The contents of platform/gtk/ScrollAnimatorGtk doesn&apos;t contain anything thats GTK specific. Use that as a shared generic implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482785</commentid>
    <comment_count>1</comment_count>
      <attachid>355956</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2018-11-28 18:21:19 -0800</bug_when>
    <thetext>Created attachment 355956
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482788</commentid>
    <comment_count>2</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2018-11-28 18:31:44 -0800</bug_when>
    <thetext>I think EWS is having a problem because of unified sources....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482921</commentid>
    <comment_count>3</comment_count>
      <attachid>355956</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2018-11-29 05:38:49 -0800</bug_when>
    <thetext>Comment on attachment 355956
Patch

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

&gt; Source/WebCore/ChangeLog:15
&gt; +        compile at this time.

ScrollAnimatorSmooth seems to be still used on GTK: https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/SourcesGTK.txt#L59

Also, I&apos;ve been relying on this to implement CSS smooth scrolling on all ports bug 188043. So unless reviewers say my approach is incorrect, please keep the file for now :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482922</commentid>
    <comment_count>4</comment_count>
      <attachid>355956</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2018-11-29 05:50:20 -0800</bug_when>
    <thetext>Comment on attachment 355956
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:15
&gt;&gt; +        compile at this time.
&gt; 
&gt; ScrollAnimatorSmooth seems to be still used on GTK: https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/SourcesGTK.txt#L59
&gt; 
&gt; Also, I&apos;ve been relying on this to implement CSS smooth scrolling on all ports bug 188043. So unless reviewers say my approach is incorrect, please keep the file for now :-)

OK, I stand corrected, what I need is ScrollAnimationSmooth!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482952</commentid>
    <comment_count>5</comment_count>
      <attachid>355956</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-11-29 08:21:14 -0800</bug_when>
    <thetext>Comment on attachment 355956
Patch

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

&gt;&gt;&gt; Source/WebCore/ChangeLog:15
&gt;&gt;&gt; +        compile at this time.
&gt;&gt; 
&gt;&gt; ScrollAnimatorSmooth seems to be still used on GTK: https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/SourcesGTK.txt#L59
&gt;&gt; 
&gt;&gt; Also, I&apos;ve been relying on this to implement CSS smooth scrolling on all ports bug 188043. So unless reviewers say my approach is incorrect, please keep the file for now :-)
&gt; 
&gt; OK, I stand corrected, what I need is ScrollAnimationSmooth!

What is it you really need? (Not ScrollAnimatorSmooth.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482954</commentid>
    <comment_count>6</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2018-11-29 08:26:51 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #5)
&gt; What is it you really need? (Not ScrollAnimatorSmooth.)

I&apos;m using ScrollAnimaTIONSmooth to implement programmatic smooth scrolling. Don is removing ScrollAnimaTORSmooth.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482972</commentid>
    <comment_count>7</comment_count>
      <attachid>356013</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2018-11-29 09:26:29 -0800</bug_when>
    <thetext>Created attachment 356013
Patch

Including potential build fix due to unified sources.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482979</commentid>
    <comment_count>8</comment_count>
      <attachid>356013</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2018-11-29 09:40:34 -0800</bug_when>
    <thetext>Comment on attachment 356013
Patch

Ok GTK is happy now. Ready for a review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482989</commentid>
    <comment_count>9</comment_count>
      <attachid>356013</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-11-29 09:56:05 -0800</bug_when>
    <thetext>Comment on attachment 356013
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +       No new tests. No change in behavior.

This line is one space too far to the left!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482996</commentid>
    <comment_count>10</comment_count>
      <attachid>356015</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2018-11-29 10:03:50 -0800</bug_when>
    <thetext>Created attachment 356015
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483022</commentid>
    <comment_count>11</comment_count>
      <attachid>356015</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-29 10:36:38 -0800</bug_when>
    <thetext>Comment on attachment 356015
Patch

Clearing flags on attachment: 356015

Committed r238675: &lt;https://trac.webkit.org/changeset/238675&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483023</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-29 10:36:39 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483024</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-11-29 10:37:21 -0800</bug_when>
    <thetext>&lt;rdar://problem/46346604&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355956</attachid>
            <date>2018-11-28 18:21:19 -0800</date>
            <delta_ts>2018-11-29 09:26:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192128.diff</filename>
            <type>text/plain</type>
            <size>23945</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2ZmEyOGE1Y2U3Ny4uOTRjNmY0NzIxOTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NCBAQAorMjAxOC0xMS0yOCAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnku
Y29tPgorCisgICAgICAgIE1ha2UgZ2VuZXJpYyBTY3JvbGxBbmltYXRvcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyMTI4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBObyBjaGFu
Z2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgTW92ZXMgU2Nyb2xsQW5pbWF0b3JHdGsgaW50byBT
Y3JvbGxBbmltYXRvckdlbmVyaWMgd2hlcmUgaXQgY2FuIGJlIHVzZWQKKyAgICAgICAgYnkgb3Ro
ZXIgaW1wbGVtZW50YXRpb25zLiBGaXhlZCBzb21lIGNvbXBpbGF0aW9uIGlzc3VlcyBhcm91bmQg
dXNpbmcKKyAgICAgICAgdGhpcyBhcyBhIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCisKKyAgICAg
ICAgUmVtb3ZpbmcgU2Nyb2xsQW5pbWF0b3JTbW9vdGggc2luY2UgaXQgaXMgZGVhZCBjb2RlIGFu
ZCBkb2Vzbid0IGV2ZW4KKyAgICAgICAgY29tcGlsZSBhdCB0aGlzIHRpbWUuCisKKyAgICAgICAg
KiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzR1RLLnR4dDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtV2hlZWxFdmVudDo6c3dpcGVWZWxvY2l0eSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
U2Nyb2xsQW5pbWF0b3JTbW9vdGguY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL1Nj
cm9sbEFuaW1hdG9yU21vb3RoLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJp
Yy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1Njcm9sbEFuaW1hdG9yR3RrLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbEFuaW1hdG9yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JH
ZW5lcmljOjpTY3JvbGxBbmltYXRvckdlbmVyaWMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
QW5pbWF0b3JHZW5lcmljOjplbnN1cmVTbW9vdGhTY3JvbGxpbmdBbmltYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpzY3JvbGwpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpzY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpjb21wdXRlVmVs
b2NpdHkpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpoYW5kbGVX
aGVlbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6d2ls
bEVuZExpdmVSZXNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmlj
Ojp1cGRhdGVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvckdlbmVy
aWM6OmRpZEFkZFZlcnRpY2FsU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFu
aW1hdG9yR2VuZXJpYzo6ZGlkQWRkSG9yaXpvbnRhbFNjcm9sbGJhcik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxBbmltYXRvckdlbmVyaWM6OndpbGxSZW1vdmVWZXJ0aWNhbFNjcm9sbGJhcik6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvckdlbmVyaWM6OndpbGxSZW1vdmVIb3Jp
em9udGFsU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yR2VuZXJp
Yzo6dXBkYXRlT3ZlcmxheVNjcm9sbGJhcnNPcGFjaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbEFuaW1hdG9yR2VuZXJpYzo6b3ZlcmxheVNjcm9sbGJhckFuaW1hdGlvblRpbWVyRmlyZWQp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpzaG93T3ZlcmxheVNj
cm9sbGJhcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpoaWRl
T3ZlcmxheVNjcm9sbGJhcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5l
cmljOjptb3VzZUVudGVyZWRDb250ZW50QXJlYSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxB
bmltYXRvckdlbmVyaWM6Om1vdXNlRXhpdGVkQ29udGVudEFyZWEpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjptb3VzZU1vdmVkSW5Db250ZW50QXJlYSk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvckdlbmVyaWM6OmNvbnRlbnRBcmVhRGlkU2hvdyk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvckdlbmVyaWM6OmNvbnRlbnRBcmVhRGlk
SGlkZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvckdlbmVyaWM6Om5vdGlmeUNv
bnRlbnRBcmVhU2Nyb2xsZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5l
cmljOjpsb2NrT3ZlcmxheVNjcm9sbGJhclN0YXRlVG9IaWRkZW4pOgorICAgICAgICAqIHBsYXRm
b3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsQW5pbWF0b3JHdGsuaC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ndGsvUGxhdGZvcm1XaGVlbEV2ZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtV2hlZWxFdmVudDo6c3dpcGVWZWxvY2l0eSBjb25zdCk6IERlbGV0ZWQuCisKIDIwMTgt
MTEtMjggIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBSZW1vdmUgZGVhZCBjb2RlIGZyb20gYW4gZWFybGllciBhdHRlbXB0IGF0IGltcGxlbWVu
dGluZyBzYWZlIGJyb3dzaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdU
Sy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IGM0MWNhYTVm
Y2JkLi5lMGRkOWNkOTEyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsu
Y21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTIwLDYgKzIw
LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VC
Q09SRV9ESVJ9L2FjY2Vzc2liaWxpdHkvYXRrIgogICAgICIke1dFQkNPUkVfRElSfS9lZGl0aW5n
L2F0ayIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGFnZS9ndGsiCisgICAgIiR7V0VCQ09SRV9ESVJ9
L3BsYXRmb3JtL2dlbmVyaWMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dlb2NsdWUi
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2d0ayIKICAgICAiJHtXRUJDT1JFX0RJUn0v
cGxhdGZvcm0vZ3JhcGhpY3MvZWdsIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNl
c0dUSy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dAppbmRleCBlNjE2ZjI3ZTVi
ZS4uNWUyMzU2ZGJiNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNHVEsudHh0
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNHVEsudHh0CkBAIC01OSw2ICs1OSw4IEBAIHBs
YXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwCiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRp
b25TbW9vdGguY3BwCiBwbGF0Zm9ybS9Vc2VyQWdlbnRRdWlya3MuY3BwCiAKK3BsYXRmb3JtL2dl
bmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcAorCiBwbGF0Zm9ybS9nZW9jbHVlL0dlb2xv
Y2F0aW9uUHJvdmlkZXJHZW9jbHVlLmNwcAogCiBwbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQu
Y3BwIEBuby11bmlmeQpAQCAtODksNyArOTEsNiBAQCBwbGF0Zm9ybS9ncmFwaGljcy94MTEvWFVu
aXF1ZVJlc291cmNlLmNwcCBAbm8tdW5pZnkKIHBsYXRmb3JtL2d0ay9EcmFnRGF0YUd0ay5jcHAK
IHBsYXRmb3JtL2d0ay9Mb2NhbGl6ZWRTdHJpbmdzR3RrLmNwcAogcGxhdGZvcm0vZ3RrL1Bhc3Rl
Ym9hcmRHdGsuY3BwCi1wbGF0Zm9ybS9ndGsvU2Nyb2xsQW5pbWF0b3JHdGsuY3BwCiBwbGF0Zm9y
bS9ndGsvU2VsZWN0aW9uRGF0YS5jcHAKIAogcGxhdGZvcm0vdGV4dC9IeXBoZW5hdGlvbi5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgKaW5kZXggOTAw
MzIyNTYxMGQuLjIxZTk3MDk3YTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybVdoZWVsRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybVdoZWVsRXZlbnQuaApAQCAtMTI2LDcgKzEyNiw2IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRG
T1JNKEdUSykKICAgICBleHBsaWNpdCBQbGF0Zm9ybVdoZWVsRXZlbnQoR2RrRXZlbnRTY3JvbGwq
KTsKLSAgICBGbG9hdFBvaW50IHN3aXBlVmVsb2NpdHkoKSBjb25zdDsKICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCkBAIC0xNTEsNiArMTUwLDcgQEAgcHVibGljOgogICAgIFBsYXRmb3Jt
V2hlZWxFdmVudFBoYXNlIG1vbWVudHVtUGhhc2UoKSBjb25zdCB7IHJldHVybiBtX21vbWVudHVt
UGhhc2U7IH0KICAgICBib29sIGlzRW5kT2ZOb25Nb21lbnR1bVNjcm9sbCgpIGNvbnN0OwogICAg
IGJvb2wgaXNUcmFuc2l0aW9uaW5nVG9Nb21lbnR1bVNjcm9sbCgpIGNvbnN0OworICAgIEZsb2F0
UG9pbnQgc3dpcGVWZWxvY2l0eSgpIGNvbnN0OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShXSU4p
CkBAIC0yMDksMTAgKzIwOSw2IEBAIGlubGluZSBib29sIFBsYXRmb3JtV2hlZWxFdmVudDo6aXNF
bmRPZk1vbWVudHVtU2Nyb2xsKCkgY29uc3QKICAgICByZXR1cm4gbV9waGFzZSA9PSBQbGF0Zm9y
bVdoZWVsRXZlbnRQaGFzZU5vbmUgJiYgbV9tb21lbnR1bVBoYXNlID09IFBsYXRmb3JtV2hlZWxF
dmVudFBoYXNlRW5kZWQ7CiB9CiAKLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBM
QVRGT1JNKEdUSykKLQogaW5saW5lIGJvb2wgUGxhdGZvcm1XaGVlbEV2ZW50Ojppc0VuZE9mTm9u
TW9tZW50dW1TY3JvbGwoKSBjb25zdAogewogICAgIHJldHVybiBtX3BoYXNlID09IFBsYXRmb3Jt
V2hlZWxFdmVudFBoYXNlRW5kZWQgJiYgbV9tb21lbnR1bVBoYXNlID09IFBsYXRmb3JtV2hlZWxF
dmVudFBoYXNlTm9uZTsKQEAgLTIyMiw2ICsyMTgsMTMgQEAgaW5saW5lIGJvb2wgUGxhdGZvcm1X
aGVlbEV2ZW50Ojppc1RyYW5zaXRpb25pbmdUb01vbWVudHVtU2Nyb2xsKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbV9waGFzZSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZU5vbmUgJiYgbV9tb21l
bnR1bVBoYXNlID09IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlQmVnYW47CiB9Ci0jZW5kaWYKKwor
aW5saW5lIEZsb2F0UG9pbnQgUGxhdGZvcm1XaGVlbEV2ZW50Ojpzd2lwZVZlbG9jaXR5KCkgY29u
c3QKK3sKKyAgICAvLyBUaGUgc3dpcGluZyB2ZWxvY2l0eSBpcyBzdG9yZWQgaW4gdGhlIGRlbHRh
cyBvZiB0aGUgZXZlbnQgZGVjbGFyaW5nIGl0LgorICAgIHJldHVybiBpc1RyYW5zaXRpb25pbmdU
b01vbWVudHVtU2Nyb2xsKCkgPyBGbG9hdFBvaW50KG1fd2hlZWxUaWNrc1gsIG1fd2hlZWxUaWNr
c1kpIDogRmxvYXRQb2ludCgpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElO
RykKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JTbW9vdGguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsQW5pbWF0b3JTbW9vdGguY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBkZWZjM2YxOTc4Zi4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsQW5pbWF0b3JTbW9vdGguY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTA4ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot
ICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2Nyb2xsQW5pbWF0b3JTbW9vdGguaCIKLQot
I2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQotCi0jaW5jbHVkZSAiU2Nyb2xsQW5pbWF0aW9u
U21vb3RoLmgiCi0jaW5jbHVkZSAiU2Nyb2xsYWJsZUFyZWEuaCIKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1zdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQW5pbWF0b3I+IFNjcm9sbEFuaW1hdG9yOjpj
cmVhdGUoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhKQotewotICAgIGlmIChzY3JvbGxh
YmxlQXJlYS5zY3JvbGxBbmltYXRvckVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8U2Nyb2xsQW5pbWF0b3JTbW9vdGg+KHNjcm9sbGFibGVBcmVhKTsKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxBbmltYXRvcj4oc2Nyb2xsYWJsZUFyZWEpOwotfQot
Ci1TY3JvbGxBbmltYXRvclNtb290aDo6U2Nyb2xsQW5pbWF0b3JTbW9vdGgoU2Nyb2xsYWJsZUFy
ZWEmIHNjcm9sbGFibGVBcmVhKQotICAgIDogU2Nyb2xsQW5pbWF0b3Ioc2Nyb2xsYWJsZUFyZWEp
Ci0gICAgLCBtX2FuaW1hdGlvbihzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbEFuaW1hdGlvblNtb290
aD4oc2Nyb2xsYWJsZUFyZWEsIG1fY3VycmVudFBvc2l0aW9uLCBbdGhpc10oRmxvYXRQb2ludCYm
IHBvc2l0aW9uKSB7Ci0gICAgICAgIEZsb2F0U2l6ZSBkZWx0YSA9IHBvc2l0aW9uIC0gbV9jdXJy
ZW50UG9zaXRpb247Ci0gICAgICAgIG1fY3VycmVudFBvc2l0aW9uID0gV1RGTW92ZShwb3NpdGlv
bik7Ci0gICAgICAgIG5vdGlmeVBvc2l0aW9uQ2hhbmdlZChkZWx0YSk7Ci0gICAgfSkpCi17Ci19
Ci0KLVNjcm9sbEFuaW1hdG9yU21vb3RoOjp+U2Nyb2xsQW5pbWF0b3JTbW9vdGgoKSA9IGRlZmF1
bHQ7Ci0KLWJvb2wgU2Nyb2xsQW5pbWF0b3JTbW9vdGg6OnNjcm9sbChTY3JvbGxiYXJPcmllbnRh
dGlvbiBvcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGZsb2F0IHN0
ZXAsIGZsb2F0IG11bHRpcGxpZXIpCi17Ci0gICAgaWYgKCFtX3Njcm9sbGFibGVBcmVhLnNjcm9s
bEFuaW1hdG9yRW5hYmxlZCgpKQotICAgICAgICByZXR1cm4gU2Nyb2xsQW5pbWF0b3I6OnNjcm9s
bChvcmllbnRhdGlvbiwgZ3JhbnVsYXJpdHksIHN0ZXAsIG11bHRpcGxpZXIpOwotCi0gICAgcmV0
dXJuIG1fYW5pbWF0aW9uLT5zY3JvbGwob3JpZW50YXRpb24sIGdyYW51bGFyaXR5LCBzdGVwLCBt
dWx0aXBsaWVyKTsKLX0KLQotdm9pZCBTY3JvbGxBbmltYXRvclNtb290aDo6c2Nyb2xsVG9PZmZz
ZXRXaXRob3V0QW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIG9mZnNldCkKLXsKLSAgICBGbG9h
dFBvaW50IHBvc2l0aW9uID0gU2Nyb2xsYWJsZUFyZWE6OnNjcm9sbFBvc2l0aW9uRnJvbU9mZnNl
dChvZmZzZXQsIHRvRmxvYXRTaXplKG1fc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsT3JpZ2luKCkpKTsK
LSAgICBtX2FuaW1hdGlvbi0+c2V0Q3VycmVudFBvc2l0aW9uKHBvc2l0aW9uKTsKLQotICAgIEZs
b2F0U2l6ZSBkZWx0YSA9IHBvc2l0aW9uIC0gbV9jdXJyZW50UG9zaXRpb247Ci0gICAgbV9jdXJy
ZW50UG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICBub3RpZnlQb3NpdGlvbkNoYW5nZWQoZGVsdGEp
OwotfQotCi0jaWYgIVVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9USU1FUikKLXZvaWQgU2Ny
b2xsQW5pbWF0b3JTbW9vdGg6OmNhbmNlbEFuaW1hdGlvbnMoKQotewotICAgIG1fYW5pbWF0aW9u
LT5zdG9wKCk7Ci19Ci0KLXZvaWQgU2Nyb2xsQW5pbWF0b3JTbW9vdGg6OnNlcnZpY2VTY3JvbGxB
bmltYXRpb25zKCkKLXsKLSAgICBtX2FuaW1hdGlvbi0+c2VydmljZUFuaW1hdGlvbigpOwotfQot
I2VuZGlmCi0KLXZvaWQgU2Nyb2xsQW5pbWF0b3JTbW9vdGg6OndpbGxFbmRMaXZlUmVzaXplKCkK
LXsKLSAgICBtX2FuaW1hdGlvbi0+dXBkYXRlVmlzaWJsZUxlbmd0aHMoKTsKLX0KLQotdm9pZCBT
Y3JvbGxBbmltYXRvclNtb290aDo6ZGlkQWRkVmVydGljYWxTY3JvbGxiYXIoU2Nyb2xsYmFyKikK
LXsKLSAgICBtX2FuaW1hdGlvbi0+dXBkYXRlVmlzaWJsZUxlbmd0aHMoKTsKLX0KLQotdm9pZCBT
Y3JvbGxBbmltYXRvclNtb290aDo6ZGlkQWRkSG9yaXpvbnRhbFNjcm9sbGJhcihTY3JvbGxiYXIq
KQotewotICAgIG1fYW5pbWF0aW9uLT51cGRhdGVWaXNpYmxlTGVuZ3RocygpOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoU01PT1RIX1NDUk9MTElORykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yU21vb3Ro
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvclNtb290aC5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YzZhYzAzNTg2Mi4uMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JTbW9vdGguaAorKysgL2Rldi9u
dWxsCkBAIC0xLDY5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTEsIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFNjcm9sbEFuaW1hdG9yU21vb3RoX2gKLSNkZWZp
bmUgU2Nyb2xsQW5pbWF0b3JTbW9vdGhfaAotCi0jaW5jbHVkZSAiU2Nyb2xsQW5pbWF0b3IuaCIK
LQotI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LWNsYXNzIFNjcm9sbEFuaW1hdGlvbjsKLQotY2xhc3MgU2Nyb2xsQW5pbWF0b3JTbW9vdGggZmlu
YWwgOiBwdWJsaWMgU2Nyb2xsQW5pbWF0b3IgewotcHVibGljOgotICAgIGV4cGxpY2l0IFNjcm9s
bEFuaW1hdG9yU21vb3RoKFNjcm9sbGFibGVBcmVhJik7Ci0gICAgdmlydHVhbCB+U2Nyb2xsQW5p
bWF0b3JTbW9vdGgoKTsKLQotICAgIGJvb2wgc2Nyb2xsKFNjcm9sbGJhck9yaWVudGF0aW9uLCBT
Y3JvbGxHcmFudWxhcml0eSwgZmxvYXQgc3RlcCwgZmxvYXQgbXVsdGlwbGllcikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBzY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24oY29uc3QgRmxvYXRQb2lu
dCYpIG92ZXJyaWRlOwotCi0jaWYgIVVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9USU1FUikK
LSAgICB2b2lkIGNhbmNlbEFuaW1hdGlvbnMoKSBvdmVycmlkZTsKLSAgICB2b2lkIHNlcnZpY2VT
Y3JvbGxBbmltYXRpb25zKCkgb3ZlcnJpZGU7Ci0jZW5kaWYKLQotICAgIHZvaWQgd2lsbEVuZExp
dmVSZXNpemUoKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZEFkZFZlcnRpY2FsU2Nyb2xsYmFyKFNj
cm9sbGJhciopIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkQWRkSG9yaXpvbnRhbFNjcm9sbGJhcihT
Y3JvbGxiYXIqKSBvdmVycmlkZTsKLQotcHJpdmF0ZToKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxT
Y3JvbGxBbmltYXRpb24+IG1fYW5pbWF0aW9uOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0KLSNlbmRpZiAvLyBTY3Jv
bGxBbmltYXRvclNtb290aF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvU2Nyb2xsQW5pbWF0b3JHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJp
Yy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3BwCnNpbWlsYXJpdHkgaW5kZXggODUlCnJlbmFtZSBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxBbmltYXRvckd0ay5jcHAKcmVu
YW1lIHRvIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5l
cmljLmNwcAppbmRleCA4MzY2ZjQ2OTY1NC4uMDM2NTNkNDJmZTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxBbmltYXRvckd0ay5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3BwCkBAIC0y
OSw3ICsyOSw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNjcm9s
bEFuaW1hdG9yR3RrLmgiCisjaW5jbHVkZSAiU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmgiCiAKICNp
bmNsdWRlICJTY3JvbGxBbmltYXRpb25LaW5ldGljLmgiCiAjaW5jbHVkZSAiU2Nyb2xsQW5pbWF0
aW9uU21vb3RoLmgiCkBAIC00NCwxMiArNDQsMTIgQEAgc3RhdGljIGNvbnN0IFNlY29uZHMgc2Ny
b2xsQ2FwdHVyZVRocmVzaG9sZCB7IDE1MF9tcyB9OwogCiBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xs
QW5pbWF0b3I+IFNjcm9sbEFuaW1hdG9yOjpjcmVhdGUoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFi
bGVBcmVhKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbEFuaW1hdG9yR3Rr
PihzY3JvbGxhYmxlQXJlYSk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsQW5p
bWF0b3JHZW5lcmljPihzY3JvbGxhYmxlQXJlYSk7CiB9CiAKLVNjcm9sbEFuaW1hdG9yR3RrOjpT
Y3JvbGxBbmltYXRvckd0ayhTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCitTY3JvbGxB
bmltYXRvckdlbmVyaWM6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYyhTY3JvbGxhYmxlQXJlYSYgc2Ny
b2xsYWJsZUFyZWEpCiAgICAgOiBTY3JvbGxBbmltYXRvcihzY3JvbGxhYmxlQXJlYSkKLSAgICAs
IG1fb3ZlcmxheVNjcm9sbGJhckFuaW1hdGlvblRpbWVyKCp0aGlzLCAmU2Nyb2xsQW5pbWF0b3JH
dGs6Om92ZXJsYXlTY3JvbGxiYXJBbmltYXRpb25UaW1lckZpcmVkKQorICAgICwgbV9vdmVybGF5
U2Nyb2xsYmFyQW5pbWF0aW9uVGltZXIoKnRoaXMsICZTY3JvbGxBbmltYXRvckdlbmVyaWM6Om92
ZXJsYXlTY3JvbGxiYXJBbmltYXRpb25UaW1lckZpcmVkKQogewogICAgIG1fa2luZXRpY0FuaW1h
dGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4obV9zY3JvbGxh
YmxlQXJlYSwgW3RoaXNdKEZsb2F0UG9pbnQmJiBwb3NpdGlvbikgewogI2lmIEVOQUJMRShTTU9P
VEhfU0NST0xMSU5HKQpAQCAtNjUsMTAgKzY1LDEwIEBAIFNjcm9sbEFuaW1hdG9yR3RrOjpTY3Jv
bGxBbmltYXRvckd0ayhTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiAjZW5kaWYKIH0K
IAotU2Nyb2xsQW5pbWF0b3JHdGs6On5TY3JvbGxBbmltYXRvckd0aygpID0gZGVmYXVsdDsKK1Nj
cm9sbEFuaW1hdG9yR2VuZXJpYzo6flNjcm9sbEFuaW1hdG9yR2VuZXJpYygpID0gZGVmYXVsdDsK
IAogI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQotdm9pZCBTY3JvbGxBbmltYXRvckd0azo6
ZW5zdXJlU21vb3RoU2Nyb2xsaW5nQW5pbWF0aW9uKCkKK3ZvaWQgU2Nyb2xsQW5pbWF0b3JHZW5l
cmljOjplbnN1cmVTbW9vdGhTY3JvbGxpbmdBbmltYXRpb24oKQogewogICAgIGlmIChtX3Ntb290
aEFuaW1hdGlvbikKICAgICAgICAgcmV0dXJuOwpAQCAtODAsNyArODAsNyBAQCB2b2lkIFNjcm9s
bEFuaW1hdG9yR3RrOjplbnN1cmVTbW9vdGhTY3JvbGxpbmdBbmltYXRpb24oKQogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKLWJvb2wgU2Nyb2xsQW5pbWF0b3JHdGs6OnNj
cm9sbChTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkg
Z3JhbnVsYXJpdHksIGZsb2F0IHN0ZXAsIGZsb2F0IG11bHRpcGxpZXIpCitib29sIFNjcm9sbEFu
aW1hdG9yR2VuZXJpYzo6c2Nyb2xsKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBT
Y3JvbGxHcmFudWxhcml0eSBncmFudWxhcml0eSwgZmxvYXQgc3RlcCwgZmxvYXQgbXVsdGlwbGll
cikKIHsKICAgICBpZiAoIW1fc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsQW5pbWF0b3JFbmFibGVkKCkp
CiAgICAgICAgIHJldHVybiBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsKG9yaWVudGF0aW9uLCBncmFu
dWxhcml0eSwgc3RlcCwgbXVsdGlwbGllcik7CkBAIC05MCw3ICs5MCw3IEBAIGJvb2wgU2Nyb2xs
QW5pbWF0b3JHdGs6OnNjcm9sbChTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgU2Ny
b2xsR3JhbnVsYXJpCiB9CiAjZW5kaWYKIAotdm9pZCBTY3JvbGxBbmltYXRvckd0azo6c2Nyb2xs
VG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIG9mZnNldCwgU2Nyb2xs
Q2xhbXBpbmcpCit2b2lkIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6c2Nyb2xsVG9PZmZzZXRXaXRo
b3V0QW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIG9mZnNldCwgU2Nyb2xsQ2xhbXBpbmcpCiB7
CiAgICAgRmxvYXRQb2ludCBwb3NpdGlvbiA9IFNjcm9sbGFibGVBcmVhOjpzY3JvbGxQb3NpdGlv
bkZyb21PZmZzZXQob2Zmc2V0LCB0b0Zsb2F0U2l6ZShtX3Njcm9sbGFibGVBcmVhLnNjcm9sbE9y
aWdpbigpKSk7CiAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5zdG9wKCk7CkBAIC0xMDQsNyArMTA0
LDcgQEAgdm9pZCBTY3JvbGxBbmltYXRvckd0azo6c2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0
aW9uKGNvbnN0IEZsb2F0UG9pbnQmIG9mZnNldCwKICAgICB1cGRhdGVQb3NpdGlvbihXVEZNb3Zl
KHBvc2l0aW9uKSk7CiB9CiAKLUZsb2F0UG9pbnQgU2Nyb2xsQW5pbWF0b3JHdGs6OmNvbXB1dGVW
ZWxvY2l0eSgpCitGbG9hdFBvaW50IFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6Y29tcHV0ZVZlbG9j
aXR5KCkKIHsKICAgICBpZiAobV9zY3JvbGxIaXN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIHsgfTsKQEAgLTEyNCw3ICsxMjQsNyBAQCBGbG9hdFBvaW50IFNjcm9sbEFuaW1hdG9yR3Rr
Ojpjb21wdXRlVmVsb2NpdHkoKQogICAgIHJldHVybiBGbG9hdFBvaW50KGFjY3VtRGVsdGEueCgp
ICogLTEgLyAobGFzdCAtIGZpcnN0KS52YWx1ZSgpLCBhY2N1bURlbHRhLnkoKSAqIC0xIC8gKGxh
c3QgLSBmaXJzdCkudmFsdWUoKSk7CiB9CiAKLWJvb2wgU2Nyb2xsQW5pbWF0b3JHdGs6OmhhbmRs
ZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCkKK2Jvb2wgU2Nyb2xs
QW5pbWF0b3JHZW5lcmljOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVu
dCYgZXZlbnQpCiB7CiAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5zdG9wKCk7CiAKQEAgLTEzMiw2
ICsxMzIsNyBAQCBib29sIFNjcm9sbEFuaW1hdG9yR3RrOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0
IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQpCiAgICAgICAgIHJldHVybiAoZXZlbnQudGltZXN0
YW1wKCkgLSBvdGhlckV2ZW50LnRpbWVzdGFtcCgpKSA+IHNjcm9sbENhcHR1cmVUaHJlc2hvbGQ7
CiAgICAgfSk7CiAKKyNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQogICAgIGlmIChldmVudC5p
c0VuZE9mTm9uTW9tZW50dW1TY3JvbGwoKSkgewogICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRv
IGFkZCB0aGUgZXZlbnQgdG8gdGhlIGhpc3RvcnkgYXMgaXRzIGRlbHRhIHdpbGwgYmUgKDAsIDAp
LgogICAgICAgICBzdGF0aWNfY2FzdDxTY3JvbGxBbmltYXRpb25LaW5ldGljKj4obV9raW5ldGlj
QW5pbWF0aW9uLmdldCgpKS0+c3RhcnQobV9jdXJyZW50UG9zaXRpb24sIGNvbXB1dGVWZWxvY2l0
eSgpLCBtX3Njcm9sbGFibGVBcmVhLmhvcml6b250YWxTY3JvbGxiYXIoKSwgbV9zY3JvbGxhYmxl
QXJlYS52ZXJ0aWNhbFNjcm9sbGJhcigpKTsKQEAgLTE0MiwxMyArMTQzLDE0IEBAIGJvb2wgU2Ny
b2xsQW5pbWF0b3JHdGs6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50
JiBldmVudCkKICAgICAgICAgc3RhdGljX2Nhc3Q8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYyo+KG1f
a2luZXRpY0FuaW1hdGlvbi5nZXQoKSktPnN0YXJ0KG1fY3VycmVudFBvc2l0aW9uLCBldmVudC5z
d2lwZVZlbG9jaXR5KCksIG1fc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbFNjcm9sbGJhcigpLCBt
X3Njcm9sbGFibGVBcmVhLnZlcnRpY2FsU2Nyb2xsYmFyKCkpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CisjZW5kaWYKIAogICAgIG1fc2Nyb2xsSGlzdG9yeS5hcHBlbmQoZXZlbnQpOwog
CiAgICAgcmV0dXJuIFNjcm9sbEFuaW1hdG9yOjpoYW5kbGVXaGVlbEV2ZW50KGV2ZW50KTsKIH0K
IAotdm9pZCBTY3JvbGxBbmltYXRvckd0azo6d2lsbEVuZExpdmVSZXNpemUoKQordm9pZCBTY3Jv
bGxBbmltYXRvckdlbmVyaWM6OndpbGxFbmRMaXZlUmVzaXplKCkKIHsKICAgICBtX2tpbmV0aWNB
bmltYXRpb24tPnVwZGF0ZVZpc2libGVMZW5ndGhzKCk7CiAKQEAgLTE1OCwxNCArMTYwLDE0IEBA
IHZvaWQgU2Nyb2xsQW5pbWF0b3JHdGs6OndpbGxFbmRMaXZlUmVzaXplKCkKICNlbmRpZgogfQog
Ci12b2lkIFNjcm9sbEFuaW1hdG9yR3RrOjp1cGRhdGVQb3NpdGlvbihGbG9hdFBvaW50JiYgcG9z
aXRpb24pCit2b2lkIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6dXBkYXRlUG9zaXRpb24oRmxvYXRQ
b2ludCYmIHBvc2l0aW9uKQogewogICAgIEZsb2F0U2l6ZSBkZWx0YSA9IHBvc2l0aW9uIC0gbV9j
dXJyZW50UG9zaXRpb247CiAgICAgbV9jdXJyZW50UG9zaXRpb24gPSBXVEZNb3ZlKHBvc2l0aW9u
KTsKICAgICBub3RpZnlQb3NpdGlvbkNoYW5nZWQoZGVsdGEpOwogfQogCi12b2lkIFNjcm9sbEFu
aW1hdG9yR3RrOjpkaWRBZGRWZXJ0aWNhbFNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikK
K3ZvaWQgU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpkaWRBZGRWZXJ0aWNhbFNjcm9sbGJhcihTY3Jv
bGxiYXIqIHNjcm9sbGJhcikKIHsKICAgICBtX2tpbmV0aWNBbmltYXRpb24tPnVwZGF0ZVZpc2li
bGVMZW5ndGhzKCk7CiAKQEAgLTE4Miw3ICsxODQsNyBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yR3Rr
OjpkaWRBZGRWZXJ0aWNhbFNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikKICAgICBoaWRl
T3ZlcmxheVNjcm9sbGJhcnMoKTsKIH0KIAotdm9pZCBTY3JvbGxBbmltYXRvckd0azo6ZGlkQWRk
SG9yaXpvbnRhbFNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikKK3ZvaWQgU2Nyb2xsQW5p
bWF0b3JHZW5lcmljOjpkaWRBZGRIb3Jpem9udGFsU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xs
YmFyKQogewogICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+dXBkYXRlVmlzaWJsZUxlbmd0aHMoKTsK
IApAQCAtMTk5LDcgKzIwMSw3IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JHdGs6OmRpZEFkZEhvcml6
b250YWxTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiAgICAgaGlkZU92ZXJsYXlTY3Jv
bGxiYXJzKCk7CiB9CiAKLXZvaWQgU2Nyb2xsQW5pbWF0b3JHdGs6OndpbGxSZW1vdmVWZXJ0aWNh
bFNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikKK3ZvaWQgU2Nyb2xsQW5pbWF0b3JHZW5l
cmljOjp3aWxsUmVtb3ZlVmVydGljYWxTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiB7
CiAgICAgaWYgKG1fdmVydGljYWxPdmVybGF5U2Nyb2xsYmFyICE9IHNjcm9sbGJhcikKICAgICAg
ICAgcmV0dXJuOwpAQCAtMjA4LDcgKzIxMCw3IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JHdGs6Ondp
bGxSZW1vdmVWZXJ0aWNhbFNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikKICAgICAgICAg
bV9vdmVybGF5U2Nyb2xsYmFyQW5pbWF0aW9uQ3VycmVudCA9IDA7CiB9CiAKLXZvaWQgU2Nyb2xs
QW5pbWF0b3JHdGs6OndpbGxSZW1vdmVIb3Jpem9udGFsU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Ny
b2xsYmFyKQordm9pZCBTY3JvbGxBbmltYXRvckdlbmVyaWM6OndpbGxSZW1vdmVIb3Jpem9udGFs
U2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogewogICAgIGlmIChtX2hvcml6b250YWxP
dmVybGF5U2Nyb2xsYmFyICE9IHNjcm9sbGJhcikKICAgICAgICAgcmV0dXJuOwpAQCAtMjE3LDcg
KzIxOSw3IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JHdGs6OndpbGxSZW1vdmVIb3Jpem9udGFsU2Ny
b2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogICAgICAgICBtX292ZXJsYXlTY3JvbGxiYXJB
bmltYXRpb25DdXJyZW50ID0gMDsKIH0KIAotdm9pZCBTY3JvbGxBbmltYXRvckd0azo6dXBkYXRl
T3ZlcmxheVNjcm9sbGJhcnNPcGFjaXR5KCkKK3ZvaWQgU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjp1
cGRhdGVPdmVybGF5U2Nyb2xsYmFyc09wYWNpdHkoKQogewogICAgIGlmIChtX3ZlcnRpY2FsT3Zl
cmxheVNjcm9sbGJhciAmJiBtX292ZXJsYXlTY3JvbGxiYXJBbmltYXRpb25DdXJyZW50ICE9IG1f
dmVydGljYWxPdmVybGF5U2Nyb2xsYmFyLT5vcGFjaXR5KCkpIHsKICAgICAgICAgbV92ZXJ0aWNh
bE92ZXJsYXlTY3JvbGxiYXItPnNldE9wYWNpdHkobV9vdmVybGF5U2Nyb2xsYmFyQW5pbWF0aW9u
Q3VycmVudCk7CkBAIC0yMzgsNyArMjQwLDcgQEAgc3RhdGljIGlubGluZSBkb3VibGUgZWFzZU91
dEN1YmljKGRvdWJsZSB0KQogICAgIHJldHVybiBwICogcCAqIHAgKyAxOwogfQogCi12b2lkIFNj
cm9sbEFuaW1hdG9yR3RrOjpvdmVybGF5U2Nyb2xsYmFyQW5pbWF0aW9uVGltZXJGaXJlZCgpCit2
b2lkIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6b3ZlcmxheVNjcm9sbGJhckFuaW1hdGlvblRpbWVy
RmlyZWQoKQogewogICAgIGlmICghbV9ob3Jpem9udGFsT3ZlcmxheVNjcm9sbGJhciAmJiAhbV92
ZXJ0aWNhbE92ZXJsYXlTY3JvbGxiYXIpCiAgICAgICAgIHJldHVybjsKQEAgLTI2NSw3ICsyNjcs
NyBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yR3RrOjpvdmVybGF5U2Nyb2xsYmFyQW5pbWF0aW9uVGlt
ZXJGaXJlZCgpCiAgICAgICAgIGhpZGVPdmVybGF5U2Nyb2xsYmFycygpOwogfQogCi12b2lkIFNj
cm9sbEFuaW1hdG9yR3RrOjpzaG93T3ZlcmxheVNjcm9sbGJhcnMoKQordm9pZCBTY3JvbGxBbmlt
YXRvckdlbmVyaWM6OnNob3dPdmVybGF5U2Nyb2xsYmFycygpCiB7CiAgICAgaWYgKG1fb3Zlcmxh
eVNjcm9sbGJhcnNMb2NrZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTI4Nyw3ICsyODksNyBAQCB2
b2lkIFNjcm9sbEFuaW1hdG9yR3RrOjpzaG93T3ZlcmxheVNjcm9sbGJhcnMoKQogICAgICAgICBo
aWRlT3ZlcmxheVNjcm9sbGJhcnMoKTsKIH0KIAotdm9pZCBTY3JvbGxBbmltYXRvckd0azo6aGlk
ZU92ZXJsYXlTY3JvbGxiYXJzKCkKK3ZvaWQgU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpoaWRlT3Zl
cmxheVNjcm9sbGJhcnMoKQogewogICAgIGlmIChtX292ZXJsYXlTY3JvbGxiYXJBbmltYXRpb25U
aW1lci5pc0FjdGl2ZSgpICYmICFtX292ZXJsYXlTY3JvbGxiYXJBbmltYXRpb25UYXJnZXQpCiAg
ICAgICAgIHJldHVybjsKQEAgLTMwNSwyNyArMzA3LDI3IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JH
dGs6OmhpZGVPdmVybGF5U2Nyb2xsYmFycygpCiAgICAgbV9vdmVybGF5U2Nyb2xsYmFyQW5pbWF0
aW9uVGltZXIuc3RhcnRPbmVTaG90KG92ZXJmbG93U2Nyb2xsYmFyc0FuaW1hdGlvbkhpZGVEZWxh
eSk7CiB9CiAKLXZvaWQgU2Nyb2xsQW5pbWF0b3JHdGs6Om1vdXNlRW50ZXJlZENvbnRlbnRBcmVh
KCkKK3ZvaWQgU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjptb3VzZUVudGVyZWRDb250ZW50QXJlYSgp
CiB7CiAgICAgc2hvd092ZXJsYXlTY3JvbGxiYXJzKCk7CiB9CiAKLXZvaWQgU2Nyb2xsQW5pbWF0
b3JHdGs6Om1vdXNlRXhpdGVkQ29udGVudEFyZWEoKQordm9pZCBTY3JvbGxBbmltYXRvckdlbmVy
aWM6Om1vdXNlRXhpdGVkQ29udGVudEFyZWEoKQogewogICAgIGhpZGVPdmVybGF5U2Nyb2xsYmFy
cygpOwogfQogCi12b2lkIFNjcm9sbEFuaW1hdG9yR3RrOjptb3VzZU1vdmVkSW5Db250ZW50QXJl
YSgpCit2b2lkIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6bW91c2VNb3ZlZEluQ29udGVudEFyZWEo
KQogewogICAgIHNob3dPdmVybGF5U2Nyb2xsYmFycygpOwogfQogCi12b2lkIFNjcm9sbEFuaW1h
dG9yR3RrOjpjb250ZW50QXJlYURpZFNob3coKQordm9pZCBTY3JvbGxBbmltYXRvckdlbmVyaWM6
OmNvbnRlbnRBcmVhRGlkU2hvdygpCiB7CiAgICAgc2hvd092ZXJsYXlTY3JvbGxiYXJzKCk7CiB9
CiAKLXZvaWQgU2Nyb2xsQW5pbWF0b3JHdGs6OmNvbnRlbnRBcmVhRGlkSGlkZSgpCit2b2lkIFNj
cm9sbEFuaW1hdG9yR2VuZXJpYzo6Y29udGVudEFyZWFEaWRIaWRlKCkKIHsKICAgICBpZiAobV9v
dmVybGF5U2Nyb2xsYmFyc0xvY2tlZCkKICAgICAgICAgcmV0dXJuOwpAQCAtMzM2LDEyICszMzgs
MTIgQEAgdm9pZCBTY3JvbGxBbmltYXRvckd0azo6Y29udGVudEFyZWFEaWRIaWRlKCkKICAgICB9
CiB9CiAKLXZvaWQgU2Nyb2xsQW5pbWF0b3JHdGs6Om5vdGlmeUNvbnRlbnRBcmVhU2Nyb2xsZWQo
Y29uc3QgRmxvYXRTaXplJikKK3ZvaWQgU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpub3RpZnlDb250
ZW50QXJlYVNjcm9sbGVkKGNvbnN0IEZsb2F0U2l6ZSYpCiB7CiAgICAgc2hvd092ZXJsYXlTY3Jv
bGxiYXJzKCk7CiB9CiAKLXZvaWQgU2Nyb2xsQW5pbWF0b3JHdGs6OmxvY2tPdmVybGF5U2Nyb2xs
YmFyU3RhdGVUb0hpZGRlbihib29sIHNob3VsZExvY2tTdGF0ZSkKK3ZvaWQgU2Nyb2xsQW5pbWF0
b3JHZW5lcmljOjpsb2NrT3ZlcmxheVNjcm9sbGJhclN0YXRlVG9IaWRkZW4oYm9vbCBzaG91bGRM
b2NrU3RhdGUpCiB7CiAgICAgaWYgKG1fb3ZlcmxheVNjcm9sbGJhcnNMb2NrZWQgPT0gc2hvdWxk
TG9ja1N0YXRlKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvU2Nyb2xsQW5pbWF0b3JHdGsuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmgKc2ltaWxhcml0eSBpbmRleCA5MyUKcmVu
YW1lIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbEFuaW1hdG9yR3RrLmgK
cmVuYW1lIHRvIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JH
ZW5lcmljLmgKaW5kZXggYjIwNDcwMzJmMGUuLmY5ZmNhODZmMzc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsQW5pbWF0b3JHdGsuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5oCkBAIC0yOCw4
ICsyOCw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgU2Nyb2xsQW5pbWF0b3JH
dGtfaAotI2RlZmluZSBTY3JvbGxBbmltYXRvckd0a19oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1
ZGUgIlNjcm9sbEFuaW1hdG9yLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKQEAgLTM4LDEwICszNywx
MCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNjcm9sbEFuaW1hdGlvbjsKIAotY2xh
c3MgU2Nyb2xsQW5pbWF0b3JHdGsgZmluYWwgOiBwdWJsaWMgU2Nyb2xsQW5pbWF0b3IgeworY2xh
c3MgU2Nyb2xsQW5pbWF0b3JHZW5lcmljIGZpbmFsIDogcHVibGljIFNjcm9sbEFuaW1hdG9yIHsK
IHB1YmxpYzoKLSAgICBleHBsaWNpdCBTY3JvbGxBbmltYXRvckd0ayhTY3JvbGxhYmxlQXJlYSYp
OwotICAgIHZpcnR1YWwgflNjcm9sbEFuaW1hdG9yR3RrKCk7CisgICAgZXhwbGljaXQgU2Nyb2xs
QW5pbWF0b3JHZW5lcmljKFNjcm9sbGFibGVBcmVhJik7CisgICAgdmlydHVhbCB+U2Nyb2xsQW5p
bWF0b3JHZW5lcmljKCk7CiAKIHByaXZhdGU6CiAjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcp
CkBAIC05Myw1ICs5MiwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBTY3JvbGxBbmltYXRvckd0a19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1XaGVlbEV2ZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVdoZWVsRXZlbnRHdGsuY3BwCmluZGV4IGEzYjQ3NzRl
MzZlLi4zMTFhNmI0ZTU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1BsYXRmb3JtV2hlZWxFdmVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1BsYXRmb3JtV2hlZWxFdmVudEd0ay5jcHAKQEAgLTExMSwxMCArMTExLDQgQEAgUGxhdGZv
cm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQoR2RrRXZlbnRTY3JvbGwqIGV2ZW50KQog
ICAgIG1fZGVsdGFZICo9IHN0YXRpY19jYXN0PGZsb2F0PihTY3JvbGxiYXI6OnBpeGVsc1Blckxp
bmVTdGVwKCkpOwogfQogCi1GbG9hdFBvaW50IFBsYXRmb3JtV2hlZWxFdmVudDo6c3dpcGVWZWxv
Y2l0eSgpIGNvbnN0Ci17Ci0gICAgLy8gVGhlIHN3aXBpbmcgdmVsb2NpdHkgaXMgc3RvcmVkIGlu
IHRoZSBkZWx0YXMgb2YgdGhlIGV2ZW50IGRlY2xhcmluZyBpdC4KLSAgICByZXR1cm4gaXNUcmFu
c2l0aW9uaW5nVG9Nb21lbnR1bVNjcm9sbCgpID8gRmxvYXRQb2ludChtX3doZWVsVGlja3NYLCBt
X3doZWVsVGlja3NZKSA6IEZsb2F0UG9pbnQoKTsKLX0KLQotfQorfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356013</attachid>
            <date>2018-11-29 09:26:29 -0800</date>
            <delta_ts>2018-11-29 10:03:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192128.diff</filename>
            <type>text/plain</type>
            <size>25060</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2ZmEyOGE1Y2U3Ny4uODlmZTkyMzFmMGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1OSBAQAorMjAxOC0xMS0yOSAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnku
Y29tPgorCisgICAgICAgIE1ha2UgZ2VuZXJpYyBTY3JvbGxBbmltYXRvcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyMTI4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICBObyBuZXcgdGVzdHMuIE5vIGNoYW5n
ZSBpbiBiZWhhdmlvci4KKworICAgICAgICBNb3ZlcyBTY3JvbGxBbmltYXRvckd0ayBpbnRvIFNj
cm9sbEFuaW1hdG9yR2VuZXJpYyB3aGVyZSBpdCBjYW4gYmUgdXNlZAorICAgICAgICBieSBvdGhl
ciBpbXBsZW1lbnRhdGlvbnMuIEZpeGVkIHNvbWUgY29tcGlsYXRpb24gaXNzdWVzIGFyb3VuZCB1
c2luZworICAgICAgICB0aGlzIGFzIGEgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KKworICAgICAg
ICBSZW1vdmluZyBTY3JvbGxBbmltYXRvclNtb290aCBzaW5jZSBpdCBpcyBkZWFkIGNvZGUgYW5k
IGRvZXNuJ3QgZXZlbgorICAgICAgICBjb21waWxlIGF0IHRoaXMgdGltZS4KKworICAgICAgICBG
aXhpbmcgYSBjb21waWxhdGlvbiBpc3N1ZSB3aXRoaW4gTG93UG93ZXJNb2RlTm90aWZpZXJHTGli
CisgICAgICAgIGltcGxlbWVudGF0aW9uIHRoYXQgYXBwZWFyZWQgZHVlIHRvIHVuaWZpZWQgc291
cmNlcyBjaGFuZ2VzLgorCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICog
U291cmNlc0dUSy50eHQ6CisgICAgICAgICogcGxhdGZvcm0vTG93UG93ZXJNb2RlTm90aWZpZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6c3dpcGVWZWxvY2l0eSBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JTbW9vdGguY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yU21vb3RoLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3BwOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbEFuaW1hdG9yR3RrLmNwcC4KKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsQW5pbWF0b3JHZW5lcmljOjpTY3JvbGxBbmltYXRvckdlbmVyaWMpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjplbnN1cmVTbW9vdGhTY3JvbGxpbmdBbmltYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpzY3JvbGwpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpzY3JvbGxUb09mZnNldFdp
dGhvdXRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmlj
Ojpjb21wdXRlVmVsb2NpdHkpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5l
cmljOjpoYW5kbGVXaGVlbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9y
R2VuZXJpYzo6d2lsbEVuZExpdmVSZXNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5p
bWF0b3JHZW5lcmljOjp1cGRhdGVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxB
bmltYXRvckdlbmVyaWM6OmRpZEFkZFZlcnRpY2FsU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6ZGlkQWRkSG9yaXpvbnRhbFNjcm9sbGJhcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvckdlbmVyaWM6OndpbGxSZW1vdmVWZXJ0aWNh
bFNjcm9sbGJhcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvckdlbmVyaWM6Ondp
bGxSZW1vdmVIb3Jpem9udGFsU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFu
aW1hdG9yR2VuZXJpYzo6dXBkYXRlT3ZlcmxheVNjcm9sbGJhcnNPcGFjaXR5KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6b3ZlcmxheVNjcm9sbGJhckFuaW1hdGlv
blRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpz
aG93T3ZlcmxheVNjcm9sbGJhcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JH
ZW5lcmljOjpoaWRlT3ZlcmxheVNjcm9sbGJhcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
QW5pbWF0b3JHZW5lcmljOjptb3VzZUVudGVyZWRDb250ZW50QXJlYSk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxBbmltYXRvckdlbmVyaWM6Om1vdXNlRXhpdGVkQ29udGVudEFyZWEpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjptb3VzZU1vdmVkSW5Db250ZW50
QXJlYSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvckdlbmVyaWM6OmNvbnRlbnRB
cmVhRGlkU2hvdyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvckdlbmVyaWM6OmNv
bnRlbnRBcmVhRGlkSGlkZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvckdlbmVy
aWM6Om5vdGlmeUNvbnRlbnRBcmVhU2Nyb2xsZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
QW5pbWF0b3JHZW5lcmljOjpsb2NrT3ZlcmxheVNjcm9sbGJhclN0YXRlVG9IaWRkZW4pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmg6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsQW5pbWF0b3JHdGsuaC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9nbGliL0xvd1Bvd2VyTW9kZU5vdGlmaWVyR0xpYi5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vZ3RrL1BsYXRmb3JtV2hlZWxFdmVudEd0ay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZlbnQ6OnN3aXBlVmVsb2NpdHkgY29uc3QpOiBEZWxldGVk
LgorCiAyMDE4LTExLTI4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgUmVtb3ZlIGRlYWQgY29kZSBmcm9tIGFuIGVhcmxpZXIgYXR0ZW1wdCBh
dCBpbXBsZW1lbnRpbmcgc2FmZSBicm93c2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRl
eCBjNDFjYWE1ZmNiZC4uZTBkZDljZDkxMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBA
IC0yMCw2ICsyMCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwog
ICAgICIke1dFQkNPUkVfRElSfS9hY2Nlc3NpYmlsaXR5L2F0ayIKICAgICAiJHtXRUJDT1JFX0RJ
Un0vZWRpdGluZy9hdGsiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BhZ2UvZ3RrIgorICAgICIke1dF
QkNPUkVfRElSfS9wbGF0Zm9ybS9nZW5lcmljIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9y
bS9nZW9jbHVlIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ndGsiCiAgICAgIiR7V0VC
Q09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2VnbCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNHVEsudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQKaW5kZXgg
ZTYxNmYyN2U1YmUuLjVlMjM1NmRiYjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzR1RLLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dApAQCAtNTksNiAr
NTksOCBAQCBwbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmNwcAogcGxhdGZvcm0vU2Ny
b2xsQW5pbWF0aW9uU21vb3RoLmNwcAogcGxhdGZvcm0vVXNlckFnZW50UXVpcmtzLmNwcAogCitw
bGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5jcHAKKwogcGxhdGZvcm0vZ2Vv
Y2x1ZS9HZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1ZS5jcHAKIAogcGxhdGZvcm0vZ3JhcGhpY3Mv
R0xDb250ZXh0LmNwcCBAbm8tdW5pZnkKQEAgLTg5LDcgKzkxLDYgQEAgcGxhdGZvcm0vZ3JhcGhp
Y3MveDExL1hVbmlxdWVSZXNvdXJjZS5jcHAgQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ndGsvRHJhZ0Rh
dGFHdGsuY3BwCiBwbGF0Zm9ybS9ndGsvTG9jYWxpemVkU3RyaW5nc0d0ay5jcHAKIHBsYXRmb3Jt
L2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAotcGxhdGZvcm0vZ3RrL1Njcm9sbEFuaW1hdG9yR3RrLmNw
cAogcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuY3BwCiAKIHBsYXRmb3JtL3RleHQvSHlwaGVu
YXRpb24uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb3dQb3dlck1v
ZGVOb3RpZmllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG93UG93ZXJNb2RlTm90aWZp
ZXIuaAppbmRleCBkZTEwM2MyMDljYy4uNmI0YjQ0Nzc0MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0xvd1Bvd2VyTW9kZU5vdGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTG93UG93ZXJNb2RlTm90aWZpZXIuaApAQCAtMzQsNyArMzQsNyBAQCBPQkpD
X0NMQVNTIFdlYkxvd1Bvd2VyTW9kZU9ic2VydmVyOwogCiAjaWYgVVNFKEdMSUIpCiAjaW5jbHVk
ZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgotdHlwZWRlZiBfR0RCdXNQcm94eSBHREJ1c1Byb3h5Owor
dHlwZWRlZiBzdHJ1Y3QgX0dEQnVzUHJveHkgR0RCdXNQcm94eTsKICNlbmRpZgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bVdoZWVsRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVu
dC5oCmluZGV4IDkwMDMyMjU2MTBkLi4yMWU5NzA5N2EzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgKQEAgLTEyNiw3ICsxMjYsNiBAQCBwdWJsaWM6
CiAKICNpZiBQTEFURk9STShHVEspCiAgICAgZXhwbGljaXQgUGxhdGZvcm1XaGVlbEV2ZW50KEdk
a0V2ZW50U2Nyb2xsKik7Ci0gICAgRmxvYXRQb2ludCBzd2lwZVZlbG9jaXR5KCkgY29uc3Q7CiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtMTUxLDYgKzE1MCw3IEBAIHB1YmxpYzoK
ICAgICBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSBtb21lbnR1bVBoYXNlKCkgY29uc3QgeyByZXR1
cm4gbV9tb21lbnR1bVBoYXNlOyB9CiAgICAgYm9vbCBpc0VuZE9mTm9uTW9tZW50dW1TY3JvbGwo
KSBjb25zdDsKICAgICBib29sIGlzVHJhbnNpdGlvbmluZ1RvTW9tZW50dW1TY3JvbGwoKSBjb25z
dDsKKyAgICBGbG9hdFBvaW50IHN3aXBlVmVsb2NpdHkoKSBjb25zdDsKICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oV0lOKQpAQCAtMjA5LDEwICsyMDksNiBAQCBpbmxpbmUgYm9vbCBQbGF0Zm9ybVdo
ZWVsRXZlbnQ6OmlzRW5kT2ZNb21lbnR1bVNjcm9sbCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGhh
c2UgPT0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VOb25lICYmIG1fbW9tZW50dW1QaGFzZSA9PSBQ
bGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUVuZGVkOwogfQogCi0jZW5kaWYKLQotI2lmIFBMQVRGT1JN
KENPQ09BKSB8fCBQTEFURk9STShHVEspCi0KIGlubGluZSBib29sIFBsYXRmb3JtV2hlZWxFdmVu
dDo6aXNFbmRPZk5vbk1vbWVudHVtU2Nyb2xsKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9waGFz
ZSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUVuZGVkICYmIG1fbW9tZW50dW1QaGFzZSA9PSBQ
bGF0Zm9ybVdoZWVsRXZlbnRQaGFzZU5vbmU7CkBAIC0yMjIsNiArMjE4LDEzIEBAIGlubGluZSBi
b29sIFBsYXRmb3JtV2hlZWxFdmVudDo6aXNUcmFuc2l0aW9uaW5nVG9Nb21lbnR1bVNjcm9sbCgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGhhc2UgPT0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VO
b25lICYmIG1fbW9tZW50dW1QaGFzZSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUJlZ2FuOwog
fQotI2VuZGlmCisKK2lubGluZSBGbG9hdFBvaW50IFBsYXRmb3JtV2hlZWxFdmVudDo6c3dpcGVW
ZWxvY2l0eSgpIGNvbnN0Cit7CisgICAgLy8gVGhlIHN3aXBpbmcgdmVsb2NpdHkgaXMgc3RvcmVk
IGluIHRoZSBkZWx0YXMgb2YgdGhlIGV2ZW50IGRlY2xhcmluZyBpdC4KKyAgICByZXR1cm4gaXNU
cmFuc2l0aW9uaW5nVG9Nb21lbnR1bVNjcm9sbCgpID8gRmxvYXRQb2ludChtX3doZWVsVGlja3NY
LCBtX3doZWVsVGlja3NZKSA6IEZsb2F0UG9pbnQoKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShB
U1lOQ19TQ1JPTExJTkcpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yU21vb3RoLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yU21vb3RoLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZGVmYzNmMTk3OGYuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yU21vb3RoLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDEwOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDExLCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBt
ZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNjcm9sbEFuaW1hdG9y
U21vb3RoLmgiCi0KLSNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKLQotI2luY2x1ZGUgIlNj
cm9sbEFuaW1hdGlvblNtb290aC5oIgotI2luY2x1ZGUgIlNjcm9sbGFibGVBcmVhLmgiCi0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdG9yPiBTY3Jv
bGxBbmltYXRvcjo6Y3JlYXRlKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKLXsKLSAg
ICBpZiAoc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsQW5pbWF0b3JFbmFibGVkKCkpCi0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbEFuaW1hdG9yU21vb3RoPihzY3JvbGxhYmxlQXJl
YSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsQW5pbWF0b3I+KHNjcm9sbGFi
bGVBcmVhKTsKLX0KLQotU2Nyb2xsQW5pbWF0b3JTbW9vdGg6OlNjcm9sbEFuaW1hdG9yU21vb3Ro
KFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKLSAgICA6IFNjcm9sbEFuaW1hdG9yKHNj
cm9sbGFibGVBcmVhKQotICAgICwgbV9hbmltYXRpb24oc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxB
bmltYXRpb25TbW9vdGg+KHNjcm9sbGFibGVBcmVhLCBtX2N1cnJlbnRQb3NpdGlvbiwgW3RoaXNd
KEZsb2F0UG9pbnQmJiBwb3NpdGlvbikgewotICAgICAgICBGbG9hdFNpemUgZGVsdGEgPSBwb3Np
dGlvbiAtIG1fY3VycmVudFBvc2l0aW9uOwotICAgICAgICBtX2N1cnJlbnRQb3NpdGlvbiA9IFdU
Rk1vdmUocG9zaXRpb24pOwotICAgICAgICBub3RpZnlQb3NpdGlvbkNoYW5nZWQoZGVsdGEpOwot
ICAgIH0pKQotewotfQotCi1TY3JvbGxBbmltYXRvclNtb290aDo6flNjcm9sbEFuaW1hdG9yU21v
b3RoKCkgPSBkZWZhdWx0OwotCi1ib29sIFNjcm9sbEFuaW1hdG9yU21vb3RoOjpzY3JvbGwoU2Ny
b2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24sIFNjcm9sbEdyYW51bGFyaXR5IGdyYW51bGFy
aXR5LCBmbG9hdCBzdGVwLCBmbG9hdCBtdWx0aXBsaWVyKQotewotICAgIGlmICghbV9zY3JvbGxh
YmxlQXJlYS5zY3JvbGxBbmltYXRvckVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuIFNjcm9sbEFu
aW1hdG9yOjpzY3JvbGwob3JpZW50YXRpb24sIGdyYW51bGFyaXR5LCBzdGVwLCBtdWx0aXBsaWVy
KTsKLQotICAgIHJldHVybiBtX2FuaW1hdGlvbi0+c2Nyb2xsKG9yaWVudGF0aW9uLCBncmFudWxh
cml0eSwgc3RlcCwgbXVsdGlwbGllcik7Ci19Ci0KLXZvaWQgU2Nyb2xsQW5pbWF0b3JTbW9vdGg6
OnNjcm9sbFRvT2Zmc2V0V2l0aG91dEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBvZmZzZXQp
Ci17Ci0gICAgRmxvYXRQb2ludCBwb3NpdGlvbiA9IFNjcm9sbGFibGVBcmVhOjpzY3JvbGxQb3Np
dGlvbkZyb21PZmZzZXQob2Zmc2V0LCB0b0Zsb2F0U2l6ZShtX3Njcm9sbGFibGVBcmVhLnNjcm9s
bE9yaWdpbigpKSk7Ci0gICAgbV9hbmltYXRpb24tPnNldEN1cnJlbnRQb3NpdGlvbihwb3NpdGlv
bik7Ci0KLSAgICBGbG9hdFNpemUgZGVsdGEgPSBwb3NpdGlvbiAtIG1fY3VycmVudFBvc2l0aW9u
OwotICAgIG1fY3VycmVudFBvc2l0aW9uID0gcG9zaXRpb247Ci0gICAgbm90aWZ5UG9zaXRpb25D
aGFuZ2VkKGRlbHRhKTsKLX0KLQotI2lmICFVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfVElN
RVIpCi12b2lkIFNjcm9sbEFuaW1hdG9yU21vb3RoOjpjYW5jZWxBbmltYXRpb25zKCkKLXsKLSAg
ICBtX2FuaW1hdGlvbi0+c3RvcCgpOwotfQotCi12b2lkIFNjcm9sbEFuaW1hdG9yU21vb3RoOjpz
ZXJ2aWNlU2Nyb2xsQW5pbWF0aW9ucygpCi17Ci0gICAgbV9hbmltYXRpb24tPnNlcnZpY2VBbmlt
YXRpb24oKTsKLX0KLSNlbmRpZgotCi12b2lkIFNjcm9sbEFuaW1hdG9yU21vb3RoOjp3aWxsRW5k
TGl2ZVJlc2l6ZSgpCi17Ci0gICAgbV9hbmltYXRpb24tPnVwZGF0ZVZpc2libGVMZW5ndGhzKCk7
Ci19Ci0KLXZvaWQgU2Nyb2xsQW5pbWF0b3JTbW9vdGg6OmRpZEFkZFZlcnRpY2FsU2Nyb2xsYmFy
KFNjcm9sbGJhciopCi17Ci0gICAgbV9hbmltYXRpb24tPnVwZGF0ZVZpc2libGVMZW5ndGhzKCk7
Ci19Ci0KLXZvaWQgU2Nyb2xsQW5pbWF0b3JTbW9vdGg6OmRpZEFkZEhvcml6b250YWxTY3JvbGxi
YXIoU2Nyb2xsYmFyKikKLXsKLSAgICBtX2FuaW1hdGlvbi0+dXBkYXRlVmlzaWJsZUxlbmd0aHMo
KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFNNT09U
SF9TQ1JPTExJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxB
bmltYXRvclNtb290aC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JT
bW9vdGguaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGM2YWMwMzU4NjIuLjAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yU21vb3Ro
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAy
MDExLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAy
MDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
LSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBTY3JvbGxBbmltYXRvclNt
b290aF9oCi0jZGVmaW5lIFNjcm9sbEFuaW1hdG9yU21vb3RoX2gKLQotI2luY2x1ZGUgIlNjcm9s
bEFuaW1hdG9yLmgiCi0KLSNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1jbGFzcyBTY3JvbGxBbmltYXRpb247Ci0KLWNsYXNzIFNjcm9sbEFuaW1h
dG9yU21vb3RoIGZpbmFsIDogcHVibGljIFNjcm9sbEFuaW1hdG9yIHsKLXB1YmxpYzoKLSAgICBl
eHBsaWNpdCBTY3JvbGxBbmltYXRvclNtb290aChTY3JvbGxhYmxlQXJlYSYpOwotICAgIHZpcnR1
YWwgflNjcm9sbEFuaW1hdG9yU21vb3RoKCk7Ci0KLSAgICBib29sIHNjcm9sbChTY3JvbGxiYXJP
cmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHksIGZsb2F0IHN0ZXAsIGZsb2F0IG11bHRpcGxp
ZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgc2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKGNv
bnN0IEZsb2F0UG9pbnQmKSBvdmVycmlkZTsKLQotI2lmICFVU0UoUkVRVUVTVF9BTklNQVRJT05f
RlJBTUVfVElNRVIpCi0gICAgdm9pZCBjYW5jZWxBbmltYXRpb25zKCkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBzZXJ2aWNlU2Nyb2xsQW5pbWF0aW9ucygpIG92ZXJyaWRlOwotI2VuZGlmCi0KLSAgICB2
b2lkIHdpbGxFbmRMaXZlUmVzaXplKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRBZGRWZXJ0aWNh
bFNjcm9sbGJhcihTY3JvbGxiYXIqKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZEFkZEhvcml6b250
YWxTY3JvbGxiYXIoU2Nyb2xsYmFyKikgb3ZlcnJpZGU7Ci0KLXByaXZhdGU6Ci0KLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8U2Nyb2xsQW5pbWF0aW9uPiBtX2FuaW1hdGlvbjsKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQotCi0j
ZW5kaWYgLy8gU2Nyb2xsQW5pbWF0b3JTbW9vdGhfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1Njcm9sbEFuaW1hdG9yR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcApzaW1pbGFyaXR5IGluZGV4
IDg1JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsQW5pbWF0
b3JHdGsuY3BwCnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9s
bEFuaW1hdG9yR2VuZXJpYy5jcHAKaW5kZXggODM2NmY0Njk2NTQuLjAzNjUzZDQyZmU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsQW5pbWF0b3JHdGsuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5l
cmljLmNwcApAQCAtMjksNyArMjksNyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJTY3JvbGxBbmltYXRvckd0ay5oIgorI2luY2x1ZGUgIlNjcm9sbEFuaW1hdG9yR2Vu
ZXJpYy5oIgogCiAjaW5jbHVkZSAiU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5oIgogI2luY2x1ZGUg
IlNjcm9sbEFuaW1hdGlvblNtb290aC5oIgpAQCAtNDQsMTIgKzQ0LDEyIEBAIHN0YXRpYyBjb25z
dCBTZWNvbmRzIHNjcm9sbENhcHR1cmVUaHJlc2hvbGQgeyAxNTBfbXMgfTsKIAogc3RkOjp1bmlx
dWVfcHRyPFNjcm9sbEFuaW1hdG9yPiBTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKFNjcm9sbGFibGVB
cmVhJiBzY3JvbGxhYmxlQXJlYSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTY3Jv
bGxBbmltYXRvckd0az4oc2Nyb2xsYWJsZUFyZWEpOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFNjcm9sbEFuaW1hdG9yR2VuZXJpYz4oc2Nyb2xsYWJsZUFyZWEpOwogfQogCi1TY3JvbGxB
bmltYXRvckd0azo6U2Nyb2xsQW5pbWF0b3JHdGsoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVB
cmVhKQorU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpTY3JvbGxBbmltYXRvckdlbmVyaWMoU2Nyb2xs
YWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhKQogICAgIDogU2Nyb2xsQW5pbWF0b3Ioc2Nyb2xsYWJs
ZUFyZWEpCi0gICAgLCBtX292ZXJsYXlTY3JvbGxiYXJBbmltYXRpb25UaW1lcigqdGhpcywgJlNj
cm9sbEFuaW1hdG9yR3RrOjpvdmVybGF5U2Nyb2xsYmFyQW5pbWF0aW9uVGltZXJGaXJlZCkKKyAg
ICAsIG1fb3ZlcmxheVNjcm9sbGJhckFuaW1hdGlvblRpbWVyKCp0aGlzLCAmU2Nyb2xsQW5pbWF0
b3JHZW5lcmljOjpvdmVybGF5U2Nyb2xsYmFyQW5pbWF0aW9uVGltZXJGaXJlZCkKIHsKICAgICBt
X2tpbmV0aWNBbmltYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbEFuaW1hdGlvbktpbmV0
aWM+KG1fc2Nyb2xsYWJsZUFyZWEsIFt0aGlzXShGbG9hdFBvaW50JiYgcG9zaXRpb24pIHsKICNp
ZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKQEAgLTY1LDEwICs2NSwxMCBAQCBTY3JvbGxBbmlt
YXRvckd0azo6U2Nyb2xsQW5pbWF0b3JHdGsoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVh
KQogI2VuZGlmCiB9CiAKLVNjcm9sbEFuaW1hdG9yR3RrOjp+U2Nyb2xsQW5pbWF0b3JHdGsoKSA9
IGRlZmF1bHQ7CitTY3JvbGxBbmltYXRvckdlbmVyaWM6On5TY3JvbGxBbmltYXRvckdlbmVyaWMo
KSA9IGRlZmF1bHQ7CiAKICNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKLXZvaWQgU2Nyb2xs
QW5pbWF0b3JHdGs6OmVuc3VyZVNtb290aFNjcm9sbGluZ0FuaW1hdGlvbigpCit2b2lkIFNjcm9s
bEFuaW1hdG9yR2VuZXJpYzo6ZW5zdXJlU21vb3RoU2Nyb2xsaW5nQW5pbWF0aW9uKCkKIHsKICAg
ICBpZiAobV9zbW9vdGhBbmltYXRpb24pCiAgICAgICAgIHJldHVybjsKQEAgLTgwLDcgKzgwLDcg
QEAgdm9pZCBTY3JvbGxBbmltYXRvckd0azo6ZW5zdXJlU21vb3RoU2Nyb2xsaW5nQW5pbWF0aW9u
KCkKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi1ib29sIFNjcm9sbEFu
aW1hdG9yR3RrOjpzY3JvbGwoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24sIFNjcm9s
bEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBmbG9hdCBzdGVwLCBmbG9hdCBtdWx0aXBsaWVyKQor
Ym9vbCBTY3JvbGxBbmltYXRvckdlbmVyaWM6OnNjcm9sbChTY3JvbGxiYXJPcmllbnRhdGlvbiBv
cmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGZsb2F0IHN0ZXAsIGZs
b2F0IG11bHRpcGxpZXIpCiB7CiAgICAgaWYgKCFtX3Njcm9sbGFibGVBcmVhLnNjcm9sbEFuaW1h
dG9yRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gU2Nyb2xsQW5pbWF0b3I6OnNjcm9sbChvcmll
bnRhdGlvbiwgZ3JhbnVsYXJpdHksIHN0ZXAsIG11bHRpcGxpZXIpOwpAQCAtOTAsNyArOTAsNyBA
QCBib29sIFNjcm9sbEFuaW1hdG9yR3RrOjpzY3JvbGwoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3Jp
ZW50YXRpb24sIFNjcm9sbEdyYW51bGFyaQogfQogI2VuZGlmCiAKLXZvaWQgU2Nyb2xsQW5pbWF0
b3JHdGs6OnNjcm9sbFRvT2Zmc2V0V2l0aG91dEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBv
ZmZzZXQsIFNjcm9sbENsYW1waW5nKQordm9pZCBTY3JvbGxBbmltYXRvckdlbmVyaWM6OnNjcm9s
bFRvT2Zmc2V0V2l0aG91dEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBvZmZzZXQsIFNjcm9s
bENsYW1waW5nKQogewogICAgIEZsb2F0UG9pbnQgcG9zaXRpb24gPSBTY3JvbGxhYmxlQXJlYTo6
c2Nyb2xsUG9zaXRpb25Gcm9tT2Zmc2V0KG9mZnNldCwgdG9GbG9hdFNpemUobV9zY3JvbGxhYmxl
QXJlYS5zY3JvbGxPcmlnaW4oKSkpOwogICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+c3RvcCgpOwpA
QCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JHdGs6OnNjcm9sbFRvT2Zmc2V0
V2l0aG91dEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBvZmZzZXQsCiAgICAgdXBkYXRlUG9z
aXRpb24oV1RGTW92ZShwb3NpdGlvbikpOwogfQogCi1GbG9hdFBvaW50IFNjcm9sbEFuaW1hdG9y
R3RrOjpjb21wdXRlVmVsb2NpdHkoKQorRmxvYXRQb2ludCBTY3JvbGxBbmltYXRvckdlbmVyaWM6
OmNvbXB1dGVWZWxvY2l0eSgpCiB7CiAgICAgaWYgKG1fc2Nyb2xsSGlzdG9yeS5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiB7IH07CkBAIC0xMjQsNyArMTI0LDcgQEAgRmxvYXRQb2ludCBTY3Jv
bGxBbmltYXRvckd0azo6Y29tcHV0ZVZlbG9jaXR5KCkKICAgICByZXR1cm4gRmxvYXRQb2ludChh
Y2N1bURlbHRhLngoKSAqIC0xIC8gKGxhc3QgLSBmaXJzdCkudmFsdWUoKSwgYWNjdW1EZWx0YS55
KCkgKiAtMSAvIChsYXN0IC0gZmlyc3QpLnZhbHVlKCkpOwogfQogCi1ib29sIFNjcm9sbEFuaW1h
dG9yR3RrOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQp
Citib29sIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0
Zm9ybVdoZWVsRXZlbnQmIGV2ZW50KQogewogICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+c3RvcCgp
OwogCkBAIC0xMzIsNiArMTMyLDcgQEAgYm9vbCBTY3JvbGxBbmltYXRvckd0azo6aGFuZGxlV2hl
ZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50KQogICAgICAgICByZXR1cm4g
KGV2ZW50LnRpbWVzdGFtcCgpIC0gb3RoZXJFdmVudC50aW1lc3RhbXAoKSkgPiBzY3JvbGxDYXB0
dXJlVGhyZXNob2xkOwogICAgIH0pOwogCisjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKICAg
ICBpZiAoZXZlbnQuaXNFbmRPZk5vbk1vbWVudHVtU2Nyb2xsKCkpIHsKICAgICAgICAgLy8gV2Ug
ZG9uJ3QgbmVlZCB0byBhZGQgdGhlIGV2ZW50IHRvIHRoZSBoaXN0b3J5IGFzIGl0cyBkZWx0YSB3
aWxsIGJlICgwLCAwKS4KICAgICAgICAgc3RhdGljX2Nhc3Q8U2Nyb2xsQW5pbWF0aW9uS2luZXRp
Yyo+KG1fa2luZXRpY0FuaW1hdGlvbi5nZXQoKSktPnN0YXJ0KG1fY3VycmVudFBvc2l0aW9uLCBj
b21wdXRlVmVsb2NpdHkoKSwgbV9zY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsU2Nyb2xsYmFyKCks
IG1fc2Nyb2xsYWJsZUFyZWEudmVydGljYWxTY3JvbGxiYXIoKSk7CkBAIC0xNDIsMTMgKzE0Mywx
NCBAQCBib29sIFNjcm9sbEFuaW1hdG9yR3RrOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRm
b3JtV2hlZWxFdmVudCYgZXZlbnQpCiAgICAgICAgIHN0YXRpY19jYXN0PFNjcm9sbEFuaW1hdGlv
bktpbmV0aWMqPihtX2tpbmV0aWNBbmltYXRpb24uZ2V0KCkpLT5zdGFydChtX2N1cnJlbnRQb3Np
dGlvbiwgZXZlbnQuc3dpcGVWZWxvY2l0eSgpLCBtX3Njcm9sbGFibGVBcmVhLmhvcml6b250YWxT
Y3JvbGxiYXIoKSwgbV9zY3JvbGxhYmxlQXJlYS52ZXJ0aWNhbFNjcm9sbGJhcigpKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQorI2VuZGlmCiAKICAgICBtX3Njcm9sbEhpc3RvcnkuYXBw
ZW5kKGV2ZW50KTsKIAogICAgIHJldHVybiBTY3JvbGxBbmltYXRvcjo6aGFuZGxlV2hlZWxFdmVu
dChldmVudCk7CiB9CiAKLXZvaWQgU2Nyb2xsQW5pbWF0b3JHdGs6OndpbGxFbmRMaXZlUmVzaXpl
KCkKK3ZvaWQgU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjp3aWxsRW5kTGl2ZVJlc2l6ZSgpCiB7CiAg
ICAgbV9raW5ldGljQW5pbWF0aW9uLT51cGRhdGVWaXNpYmxlTGVuZ3RocygpOwogCkBAIC0xNTgs
MTQgKzE2MCwxNCBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yR3RrOjp3aWxsRW5kTGl2ZVJlc2l6ZSgp
CiAjZW5kaWYKIH0KIAotdm9pZCBTY3JvbGxBbmltYXRvckd0azo6dXBkYXRlUG9zaXRpb24oRmxv
YXRQb2ludCYmIHBvc2l0aW9uKQordm9pZCBTY3JvbGxBbmltYXRvckdlbmVyaWM6OnVwZGF0ZVBv
c2l0aW9uKEZsb2F0UG9pbnQmJiBwb3NpdGlvbikKIHsKICAgICBGbG9hdFNpemUgZGVsdGEgPSBw
b3NpdGlvbiAtIG1fY3VycmVudFBvc2l0aW9uOwogICAgIG1fY3VycmVudFBvc2l0aW9uID0gV1RG
TW92ZShwb3NpdGlvbik7CiAgICAgbm90aWZ5UG9zaXRpb25DaGFuZ2VkKGRlbHRhKTsKIH0KIAot
dm9pZCBTY3JvbGxBbmltYXRvckd0azo6ZGlkQWRkVmVydGljYWxTY3JvbGxiYXIoU2Nyb2xsYmFy
KiBzY3JvbGxiYXIpCit2b2lkIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6ZGlkQWRkVmVydGljYWxT
Y3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiB7CiAgICAgbV9raW5ldGljQW5pbWF0aW9u
LT51cGRhdGVWaXNpYmxlTGVuZ3RocygpOwogCkBAIC0xODIsNyArMTg0LDcgQEAgdm9pZCBTY3Jv
bGxBbmltYXRvckd0azo6ZGlkQWRkVmVydGljYWxTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxi
YXIpCiAgICAgaGlkZU92ZXJsYXlTY3JvbGxiYXJzKCk7CiB9CiAKLXZvaWQgU2Nyb2xsQW5pbWF0
b3JHdGs6OmRpZEFkZEhvcml6b250YWxTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCit2
b2lkIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6ZGlkQWRkSG9yaXpvbnRhbFNjcm9sbGJhcihTY3Jv
bGxiYXIqIHNjcm9sbGJhcikKIHsKICAgICBtX2tpbmV0aWNBbmltYXRpb24tPnVwZGF0ZVZpc2li
bGVMZW5ndGhzKCk7CiAKQEAgLTE5OSw3ICsyMDEsNyBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yR3Rr
OjpkaWRBZGRIb3Jpem9udGFsU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogICAgIGhp
ZGVPdmVybGF5U2Nyb2xsYmFycygpOwogfQogCi12b2lkIFNjcm9sbEFuaW1hdG9yR3RrOjp3aWxs
UmVtb3ZlVmVydGljYWxTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCit2b2lkIFNjcm9s
bEFuaW1hdG9yR2VuZXJpYzo6d2lsbFJlbW92ZVZlcnRpY2FsU2Nyb2xsYmFyKFNjcm9sbGJhciog
c2Nyb2xsYmFyKQogewogICAgIGlmIChtX3ZlcnRpY2FsT3ZlcmxheVNjcm9sbGJhciAhPSBzY3Jv
bGxiYXIpCiAgICAgICAgIHJldHVybjsKQEAgLTIwOCw3ICsyMTAsNyBAQCB2b2lkIFNjcm9sbEFu
aW1hdG9yR3RrOjp3aWxsUmVtb3ZlVmVydGljYWxTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxi
YXIpCiAgICAgICAgIG1fb3ZlcmxheVNjcm9sbGJhckFuaW1hdGlvbkN1cnJlbnQgPSAwOwogfQog
Ci12b2lkIFNjcm9sbEFuaW1hdG9yR3RrOjp3aWxsUmVtb3ZlSG9yaXpvbnRhbFNjcm9sbGJhcihT
Y3JvbGxiYXIqIHNjcm9sbGJhcikKK3ZvaWQgU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjp3aWxsUmVt
b3ZlSG9yaXpvbnRhbFNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikKIHsKICAgICBpZiAo
bV9ob3Jpem9udGFsT3ZlcmxheVNjcm9sbGJhciAhPSBzY3JvbGxiYXIpCiAgICAgICAgIHJldHVy
bjsKQEAgLTIxNyw3ICsyMTksNyBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yR3RrOjp3aWxsUmVtb3Zl
SG9yaXpvbnRhbFNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikKICAgICAgICAgbV9vdmVy
bGF5U2Nyb2xsYmFyQW5pbWF0aW9uQ3VycmVudCA9IDA7CiB9CiAKLXZvaWQgU2Nyb2xsQW5pbWF0
b3JHdGs6OnVwZGF0ZU92ZXJsYXlTY3JvbGxiYXJzT3BhY2l0eSgpCit2b2lkIFNjcm9sbEFuaW1h
dG9yR2VuZXJpYzo6dXBkYXRlT3ZlcmxheVNjcm9sbGJhcnNPcGFjaXR5KCkKIHsKICAgICBpZiAo
bV92ZXJ0aWNhbE92ZXJsYXlTY3JvbGxiYXIgJiYgbV9vdmVybGF5U2Nyb2xsYmFyQW5pbWF0aW9u
Q3VycmVudCAhPSBtX3ZlcnRpY2FsT3ZlcmxheVNjcm9sbGJhci0+b3BhY2l0eSgpKSB7CiAgICAg
ICAgIG1fdmVydGljYWxPdmVybGF5U2Nyb2xsYmFyLT5zZXRPcGFjaXR5KG1fb3ZlcmxheVNjcm9s
bGJhckFuaW1hdGlvbkN1cnJlbnQpOwpAQCAtMjM4LDcgKzI0MCw3IEBAIHN0YXRpYyBpbmxpbmUg
ZG91YmxlIGVhc2VPdXRDdWJpYyhkb3VibGUgdCkKICAgICByZXR1cm4gcCAqIHAgKiBwICsgMTsK
IH0KIAotdm9pZCBTY3JvbGxBbmltYXRvckd0azo6b3ZlcmxheVNjcm9sbGJhckFuaW1hdGlvblRp
bWVyRmlyZWQoKQordm9pZCBTY3JvbGxBbmltYXRvckdlbmVyaWM6Om92ZXJsYXlTY3JvbGxiYXJB
bmltYXRpb25UaW1lckZpcmVkKCkKIHsKICAgICBpZiAoIW1faG9yaXpvbnRhbE92ZXJsYXlTY3Jv
bGxiYXIgJiYgIW1fdmVydGljYWxPdmVybGF5U2Nyb2xsYmFyKQogICAgICAgICByZXR1cm47CkBA
IC0yNjUsNyArMjY3LDcgQEAgdm9pZCBTY3JvbGxBbmltYXRvckd0azo6b3ZlcmxheVNjcm9sbGJh
ckFuaW1hdGlvblRpbWVyRmlyZWQoKQogICAgICAgICBoaWRlT3ZlcmxheVNjcm9sbGJhcnMoKTsK
IH0KIAotdm9pZCBTY3JvbGxBbmltYXRvckd0azo6c2hvd092ZXJsYXlTY3JvbGxiYXJzKCkKK3Zv
aWQgU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpzaG93T3ZlcmxheVNjcm9sbGJhcnMoKQogewogICAg
IGlmIChtX292ZXJsYXlTY3JvbGxiYXJzTG9ja2VkKQogICAgICAgICByZXR1cm47CkBAIC0yODcs
NyArMjg5LDcgQEAgdm9pZCBTY3JvbGxBbmltYXRvckd0azo6c2hvd092ZXJsYXlTY3JvbGxiYXJz
KCkKICAgICAgICAgaGlkZU92ZXJsYXlTY3JvbGxiYXJzKCk7CiB9CiAKLXZvaWQgU2Nyb2xsQW5p
bWF0b3JHdGs6OmhpZGVPdmVybGF5U2Nyb2xsYmFycygpCit2b2lkIFNjcm9sbEFuaW1hdG9yR2Vu
ZXJpYzo6aGlkZU92ZXJsYXlTY3JvbGxiYXJzKCkKIHsKICAgICBpZiAobV9vdmVybGF5U2Nyb2xs
YmFyQW5pbWF0aW9uVGltZXIuaXNBY3RpdmUoKSAmJiAhbV9vdmVybGF5U2Nyb2xsYmFyQW5pbWF0
aW9uVGFyZ2V0KQogICAgICAgICByZXR1cm47CkBAIC0zMDUsMjcgKzMwNywyNyBAQCB2b2lkIFNj
cm9sbEFuaW1hdG9yR3RrOjpoaWRlT3ZlcmxheVNjcm9sbGJhcnMoKQogICAgIG1fb3ZlcmxheVNj
cm9sbGJhckFuaW1hdGlvblRpbWVyLnN0YXJ0T25lU2hvdChvdmVyZmxvd1Njcm9sbGJhcnNBbmlt
YXRpb25IaWRlRGVsYXkpOwogfQogCi12b2lkIFNjcm9sbEFuaW1hdG9yR3RrOjptb3VzZUVudGVy
ZWRDb250ZW50QXJlYSgpCit2b2lkIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6bW91c2VFbnRlcmVk
Q29udGVudEFyZWEoKQogewogICAgIHNob3dPdmVybGF5U2Nyb2xsYmFycygpOwogfQogCi12b2lk
IFNjcm9sbEFuaW1hdG9yR3RrOjptb3VzZUV4aXRlZENvbnRlbnRBcmVhKCkKK3ZvaWQgU2Nyb2xs
QW5pbWF0b3JHZW5lcmljOjptb3VzZUV4aXRlZENvbnRlbnRBcmVhKCkKIHsKICAgICBoaWRlT3Zl
cmxheVNjcm9sbGJhcnMoKTsKIH0KIAotdm9pZCBTY3JvbGxBbmltYXRvckd0azo6bW91c2VNb3Zl
ZEluQ29udGVudEFyZWEoKQordm9pZCBTY3JvbGxBbmltYXRvckdlbmVyaWM6Om1vdXNlTW92ZWRJ
bkNvbnRlbnRBcmVhKCkKIHsKICAgICBzaG93T3ZlcmxheVNjcm9sbGJhcnMoKTsKIH0KIAotdm9p
ZCBTY3JvbGxBbmltYXRvckd0azo6Y29udGVudEFyZWFEaWRTaG93KCkKK3ZvaWQgU2Nyb2xsQW5p
bWF0b3JHZW5lcmljOjpjb250ZW50QXJlYURpZFNob3coKQogewogICAgIHNob3dPdmVybGF5U2Ny
b2xsYmFycygpOwogfQogCi12b2lkIFNjcm9sbEFuaW1hdG9yR3RrOjpjb250ZW50QXJlYURpZEhp
ZGUoKQordm9pZCBTY3JvbGxBbmltYXRvckdlbmVyaWM6OmNvbnRlbnRBcmVhRGlkSGlkZSgpCiB7
CiAgICAgaWYgKG1fb3ZlcmxheVNjcm9sbGJhcnNMb2NrZWQpCiAgICAgICAgIHJldHVybjsKQEAg
LTMzNiwxMiArMzM4LDEyIEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JHdGs6OmNvbnRlbnRBcmVhRGlk
SGlkZSgpCiAgICAgfQogfQogCi12b2lkIFNjcm9sbEFuaW1hdG9yR3RrOjpub3RpZnlDb250ZW50
QXJlYVNjcm9sbGVkKGNvbnN0IEZsb2F0U2l6ZSYpCit2b2lkIFNjcm9sbEFuaW1hdG9yR2VuZXJp
Yzo6bm90aWZ5Q29udGVudEFyZWFTY3JvbGxlZChjb25zdCBGbG9hdFNpemUmKQogewogICAgIHNo
b3dPdmVybGF5U2Nyb2xsYmFycygpOwogfQogCi12b2lkIFNjcm9sbEFuaW1hdG9yR3RrOjpsb2Nr
T3ZlcmxheVNjcm9sbGJhclN0YXRlVG9IaWRkZW4oYm9vbCBzaG91bGRMb2NrU3RhdGUpCit2b2lk
IFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6bG9ja092ZXJsYXlTY3JvbGxiYXJTdGF0ZVRvSGlkZGVu
KGJvb2wgc2hvdWxkTG9ja1N0YXRlKQogewogICAgIGlmIChtX292ZXJsYXlTY3JvbGxiYXJzTG9j
a2VkID09IHNob3VsZExvY2tTdGF0ZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbEFuaW1hdG9yR3RrLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5oCnNpbWlsYXJpdHkg
aW5kZXggOTMlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxB
bmltYXRvckd0ay5oCnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Nj
cm9sbEFuaW1hdG9yR2VuZXJpYy5oCmluZGV4IGIyMDQ3MDMyZjBlLi5mOWZjYTg2ZjM3NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbEFuaW1hdG9yR3RrLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVy
aWMuaApAQCAtMjgsOCArMjgsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFNj
cm9sbEFuaW1hdG9yR3RrX2gKLSNkZWZpbmUgU2Nyb2xsQW5pbWF0b3JHdGtfaAorI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlICJTY3JvbGxBbmltYXRvci5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCkBA
IC0zOCwxMCArMzcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTY3JvbGxBbmlt
YXRpb247CiAKLWNsYXNzIFNjcm9sbEFuaW1hdG9yR3RrIGZpbmFsIDogcHVibGljIFNjcm9sbEFu
aW1hdG9yIHsKK2NsYXNzIFNjcm9sbEFuaW1hdG9yR2VuZXJpYyBmaW5hbCA6IHB1YmxpYyBTY3Jv
bGxBbmltYXRvciB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgU2Nyb2xsQW5pbWF0b3JHdGsoU2Ny
b2xsYWJsZUFyZWEmKTsKLSAgICB2aXJ0dWFsIH5TY3JvbGxBbmltYXRvckd0aygpOworICAgIGV4
cGxpY2l0IFNjcm9sbEFuaW1hdG9yR2VuZXJpYyhTY3JvbGxhYmxlQXJlYSYpOworICAgIHZpcnR1
YWwgflNjcm9sbEFuaW1hdG9yR2VuZXJpYygpOwogCiBwcml2YXRlOgogI2lmIEVOQUJMRShTTU9P
VEhfU0NST0xMSU5HKQpAQCAtOTMsNSArOTIsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gU2Nyb2xsQW5pbWF0b3JHdGtfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9Mb3dQb3dlck1vZGVOb3RpZmllckdMaWIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9Mb3dQb3dlck1vZGVOb3RpZmllckdM
aWIuY3BwCmluZGV4IGNhYTg1Njc5Yzk4Li42Mzg3ZjFmZTVlYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9Mb3dQb3dlck1vZGVOb3RpZmllckdMaWIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvTG93UG93ZXJNb2RlTm90aWZpZXJHTGliLmNw
cApAQCAtMjIsNiArMjIsNyBAQAogCiAjaW5jbHVkZSA8Y3N0cmluZz4KICNpbmNsdWRlIDxnaW8v
Z2lvLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9y
bVdoZWVsRXZlbnRHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3Jt
V2hlZWxFdmVudEd0ay5jcHAKaW5kZXggYTNiNDc3NGUzNmUuLjMxMWE2YjRlNTk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1XaGVlbEV2ZW50R3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1XaGVlbEV2ZW50R3Rr
LmNwcApAQCAtMTExLDEwICsxMTEsNCBAQCBQbGF0Zm9ybVdoZWVsRXZlbnQ6OlBsYXRmb3JtV2hl
ZWxFdmVudChHZGtFdmVudFNjcm9sbCogZXZlbnQpCiAgICAgbV9kZWx0YVkgKj0gc3RhdGljX2Nh
c3Q8ZmxvYXQ+KFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSk7CiB9CiAKLUZsb2F0UG9p
bnQgUGxhdGZvcm1XaGVlbEV2ZW50Ojpzd2lwZVZlbG9jaXR5KCkgY29uc3QKLXsKLSAgICAvLyBU
aGUgc3dpcGluZyB2ZWxvY2l0eSBpcyBzdG9yZWQgaW4gdGhlIGRlbHRhcyBvZiB0aGUgZXZlbnQg
ZGVjbGFyaW5nIGl0LgotICAgIHJldHVybiBpc1RyYW5zaXRpb25pbmdUb01vbWVudHVtU2Nyb2xs
KCkgPyBGbG9hdFBvaW50KG1fd2hlZWxUaWNrc1gsIG1fd2hlZWxUaWNrc1kpIDogRmxvYXRQb2lu
dCgpOwotfQotCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>
<flag name="review"
          id="373063"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356015</attachid>
            <date>2018-11-29 10:03:50 -0800</date>
            <delta_ts>2018-11-29 10:36:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192128.diff</filename>
            <type>text/plain</type>
            <size>25064</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2ZmEyOGE1Y2U3Ny4uODlmZTkyMzFmMGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1OSBAQAorMjAxOC0xMS0yOSAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnku
Y29tPgorCisgICAgICAgIE1ha2UgZ2VuZXJpYyBTY3JvbGxBbmltYXRvcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyMTI4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTWljaGFlbCBDYXRhbnphcm8uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBObyBj
aGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgTW92ZXMgU2Nyb2xsQW5pbWF0b3JHdGsgaW50
byBTY3JvbGxBbmltYXRvckdlbmVyaWMgd2hlcmUgaXQgY2FuIGJlIHVzZWQKKyAgICAgICAgYnkg
b3RoZXIgaW1wbGVtZW50YXRpb25zLiBGaXhlZCBzb21lIGNvbXBpbGF0aW9uIGlzc3VlcyBhcm91
bmQgdXNpbmcKKyAgICAgICAgdGhpcyBhcyBhIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCisKKyAg
ICAgICAgUmVtb3ZpbmcgU2Nyb2xsQW5pbWF0b3JTbW9vdGggc2luY2UgaXQgaXMgZGVhZCBjb2Rl
IGFuZCBkb2Vzbid0IGV2ZW4KKyAgICAgICAgY29tcGlsZSBhdCB0aGlzIHRpbWUuCisKKyAgICAg
ICAgRml4aW5nIGEgY29tcGlsYXRpb24gaXNzdWUgd2l0aGluIExvd1Bvd2VyTW9kZU5vdGlmaWVy
R0xpYgorICAgICAgICBpbXBsZW1lbnRhdGlvbiB0aGF0IGFwcGVhcmVkIGR1ZSB0byB1bmlmaWVk
IHNvdXJjZXMgY2hhbmdlcy4KKworICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOgorICAgICAg
ICAqIFNvdXJjZXNHVEsudHh0OgorICAgICAgICAqIHBsYXRmb3JtL0xvd1Bvd2VyTW9kZU5vdGlm
aWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZlbnQ6OnN3aXBlVmVsb2NpdHkgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yU21vb3RoLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvclNtb290aC5oOiBSZW1vdmVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcDogUmVuYW1lZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxBbmltYXRvckd0ay5jcHAuCisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6ZW5zdXJlU21vb3RoU2Nyb2xsaW5nQW5p
bWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6c2Nyb2xs
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6c2Nyb2xsVG9PZmZz
ZXRXaXRob3V0QW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yR2Vu
ZXJpYzo6Y29tcHV0ZVZlbG9jaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9y
R2VuZXJpYzo6aGFuZGxlV2hlZWxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmlt
YXRvckdlbmVyaWM6OndpbGxFbmRMaXZlUmVzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bEFuaW1hdG9yR2VuZXJpYzo6dXBkYXRlUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsQW5pbWF0b3JHZW5lcmljOjpkaWRBZGRWZXJ0aWNhbFNjcm9sbGJhcik6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxBbmltYXRvckdlbmVyaWM6OmRpZEFkZEhvcml6b250YWxTY3JvbGxiYXIp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjp3aWxsUmVtb3ZlVmVy
dGljYWxTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmlj
Ojp3aWxsUmVtb3ZlSG9yaXpvbnRhbFNjcm9sbGJhcik6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxBbmltYXRvckdlbmVyaWM6OnVwZGF0ZU92ZXJsYXlTY3JvbGxiYXJzT3BhY2l0eSk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvckdlbmVyaWM6Om92ZXJsYXlTY3JvbGxiYXJBbmlt
YXRpb25UaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yR2VuZXJp
Yzo6c2hvd092ZXJsYXlTY3JvbGxiYXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1h
dG9yR2VuZXJpYzo6aGlkZU92ZXJsYXlTY3JvbGxiYXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbEFuaW1hdG9yR2VuZXJpYzo6bW91c2VFbnRlcmVkQ29udGVudEFyZWEpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjptb3VzZUV4aXRlZENvbnRlbnRBcmVhKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6bW91c2VNb3ZlZEluQ29u
dGVudEFyZWEpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpjb250
ZW50QXJlYURpZFNob3cpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmlj
Ojpjb250ZW50QXJlYURpZEhpZGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JH
ZW5lcmljOjpub3RpZnlDb250ZW50QXJlYVNjcm9sbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbEFuaW1hdG9yR2VuZXJpYzo6bG9ja092ZXJsYXlTY3JvbGxiYXJTdGF0ZVRvSGlkZGVuKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5oOiBSZW5h
bWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbEFuaW1hdG9yR3RrLmgu
CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9Mb3dQb3dlck1vZGVOb3RpZmllckdMaWIuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2d0ay9QbGF0Zm9ybVdoZWVsRXZlbnRHdGsuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50Ojpzd2lwZVZlbG9jaXR5IGNvbnN0KTogRGVs
ZXRlZC4KKwogMjAxOC0xMS0yOCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBkZWFkIGNvZGUgZnJvbSBhbiBlYXJsaWVyIGF0dGVt
cHQgYXQgaW1wbGVtZW50aW5nIHNhZmUgYnJvd3NpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UK
aW5kZXggYzQxY2FhNWZjYmQuLmUwZGQ5Y2Q5MTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFr
ZQpAQCAtMjAsNiArMjAsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJ
RVMKICAgICAiJHtXRUJDT1JFX0RJUn0vYWNjZXNzaWJpbGl0eS9hdGsiCiAgICAgIiR7V0VCQ09S
RV9ESVJ9L2VkaXRpbmcvYXRrIgogICAgICIke1dFQkNPUkVfRElSfS9wYWdlL2d0ayIKKyAgICAi
JHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ2VuZXJpYyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxh
dGZvcm0vZ2VvY2x1ZSIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3RrIgogICAgICIk
e1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzR1RLLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNHVEsudHh0Cmlu
ZGV4IGU2MTZmMjdlNWJlLi41ZTIzNTZkYmI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
U291cmNlc0dUSy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQKQEAgLTU5
LDYgKzU5LDggQEAgcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5jcHAKIHBsYXRmb3Jt
L1Njcm9sbEFuaW1hdGlvblNtb290aC5jcHAKIHBsYXRmb3JtL1VzZXJBZ2VudFF1aXJrcy5jcHAK
IAorcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3BwCisKIHBsYXRmb3Jt
L2dlb2NsdWUvR2VvbG9jYXRpb25Qcm92aWRlckdlb2NsdWUuY3BwCiAKIHBsYXRmb3JtL2dyYXBo
aWNzL0dMQ29udGV4dC5jcHAgQG5vLXVuaWZ5CkBAIC04OSw3ICs5MSw2IEBAIHBsYXRmb3JtL2dy
YXBoaWNzL3gxMS9YVW5pcXVlUmVzb3VyY2UuY3BwIEBuby11bmlmeQogcGxhdGZvcm0vZ3RrL0Ry
YWdEYXRhR3RrLmNwcAogcGxhdGZvcm0vZ3RrL0xvY2FsaXplZFN0cmluZ3NHdGsuY3BwCiBwbGF0
Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKLXBsYXRmb3JtL2d0ay9TY3JvbGxBbmltYXRvckd0
ay5jcHAKIHBsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmNwcAogCiBwbGF0Zm9ybS90ZXh0L0h5
cGhlbmF0aW9uLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG93UG93
ZXJNb2RlTm90aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvd1Bvd2VyTW9kZU5v
dGlmaWVyLmgKaW5kZXggZGUxMDNjMjA5Y2MuLjZiNGI0NDc3NDI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb3dQb3dlck1vZGVOb3RpZmllci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0xvd1Bvd2VyTW9kZU5vdGlmaWVyLmgKQEAgLTM0LDcgKzM0LDcgQEAg
T0JKQ19DTEFTUyBXZWJMb3dQb3dlck1vZGVPYnNlcnZlcjsKIAogI2lmIFVTRShHTElCKQogI2lu
Y2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KLXR5cGVkZWYgX0dEQnVzUHJveHkgR0RCdXNQcm94
eTsKK3R5cGVkZWYgc3RydWN0IF9HREJ1c1Byb3h5IEdEQnVzUHJveHk7CiAjZW5kaWYKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxh
dGZvcm1XaGVlbEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVs
RXZlbnQuaAppbmRleCA5MDAzMjI1NjEwZC4uMjFlOTcwOTdhM2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCkBAIC0xMjYsNyArMTI2LDYgQEAgcHVi
bGljOgogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIGV4cGxpY2l0IFBsYXRmb3JtV2hlZWxFdmVu
dChHZGtFdmVudFNjcm9sbCopOwotICAgIEZsb2F0UG9pbnQgc3dpcGVWZWxvY2l0eSgpIGNvbnN0
OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTE1MSw2ICsxNTAsNyBAQCBwdWJs
aWM6CiAgICAgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UgbW9tZW50dW1QaGFzZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbW9tZW50dW1QaGFzZTsgfQogICAgIGJvb2wgaXNFbmRPZk5vbk1vbWVudHVtU2Ny
b2xsKCkgY29uc3Q7CiAgICAgYm9vbCBpc1RyYW5zaXRpb25pbmdUb01vbWVudHVtU2Nyb2xsKCkg
Y29uc3Q7CisgICAgRmxvYXRQb2ludCBzd2lwZVZlbG9jaXR5KCkgY29uc3Q7CiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKFdJTikKQEAgLTIwOSwxMCArMjA5LDYgQEAgaW5saW5lIGJvb2wgUGxhdGZv
cm1XaGVlbEV2ZW50Ojppc0VuZE9mTW9tZW50dW1TY3JvbGwoKSBjb25zdAogICAgIHJldHVybiBt
X3BoYXNlID09IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlTm9uZSAmJiBtX21vbWVudHVtUGhhc2Ug
PT0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VFbmRlZDsKIH0KIAotI2VuZGlmCi0KLSNpZiBQTEFU
Rk9STShDT0NPQSkgfHwgUExBVEZPUk0oR1RLKQotCiBpbmxpbmUgYm9vbCBQbGF0Zm9ybVdoZWVs
RXZlbnQ6OmlzRW5kT2ZOb25Nb21lbnR1bVNjcm9sbCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
cGhhc2UgPT0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VFbmRlZCAmJiBtX21vbWVudHVtUGhhc2Ug
PT0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VOb25lOwpAQCAtMjIyLDYgKzIxOCwxMyBAQCBpbmxp
bmUgYm9vbCBQbGF0Zm9ybVdoZWVsRXZlbnQ6OmlzVHJhbnNpdGlvbmluZ1RvTW9tZW50dW1TY3Jv
bGwoKSBjb25zdAogewogICAgIHJldHVybiBtX3BoYXNlID09IFBsYXRmb3JtV2hlZWxFdmVudFBo
YXNlTm9uZSAmJiBtX21vbWVudHVtUGhhc2UgPT0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VCZWdh
bjsKIH0KLSNlbmRpZgorCitpbmxpbmUgRmxvYXRQb2ludCBQbGF0Zm9ybVdoZWVsRXZlbnQ6OnN3
aXBlVmVsb2NpdHkoKSBjb25zdAoreworICAgIC8vIFRoZSBzd2lwaW5nIHZlbG9jaXR5IGlzIHN0
b3JlZCBpbiB0aGUgZGVsdGFzIG9mIHRoZSBldmVudCBkZWNsYXJpbmcgaXQuCisgICAgcmV0dXJu
IGlzVHJhbnNpdGlvbmluZ1RvTW9tZW50dW1TY3JvbGwoKSA/IEZsb2F0UG9pbnQobV93aGVlbFRp
Y2tzWCwgbV93aGVlbFRpY2tzWSkgOiBGbG9hdFBvaW50KCk7Cit9CisKKyNlbmRpZiAvLyBFTkFC
TEUoQVNZTkNfU0NST0xMSU5HKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvclNtb290aC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvclNtb290aC5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGRlZmMzZjE5NzhmLi4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvclNtb290aC5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSwxMDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAxMSwgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
ICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTY3JvbGxBbmlt
YXRvclNtb290aC5oIgotCi0jaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0KLSNpbmNsdWRl
ICJTY3JvbGxBbmltYXRpb25TbW9vdGguaCIKLSNpbmNsdWRlICJTY3JvbGxhYmxlQXJlYS5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRvcj4g
U2Nyb2xsQW5pbWF0b3I6OmNyZWF0ZShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCi17
Ci0gICAgaWYgKHNjcm9sbGFibGVBcmVhLnNjcm9sbEFuaW1hdG9yRW5hYmxlZCgpKQotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxBbmltYXRvclNtb290aD4oc2Nyb2xsYWJs
ZUFyZWEpOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbEFuaW1hdG9yPihzY3Jv
bGxhYmxlQXJlYSk7Ci19Ci0KLVNjcm9sbEFuaW1hdG9yU21vb3RoOjpTY3JvbGxBbmltYXRvclNt
b290aChTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCi0gICAgOiBTY3JvbGxBbmltYXRv
cihzY3JvbGxhYmxlQXJlYSkKLSAgICAsIG1fYW5pbWF0aW9uKHN0ZDo6bWFrZV91bmlxdWU8U2Ny
b2xsQW5pbWF0aW9uU21vb3RoPihzY3JvbGxhYmxlQXJlYSwgbV9jdXJyZW50UG9zaXRpb24sIFt0
aGlzXShGbG9hdFBvaW50JiYgcG9zaXRpb24pIHsKLSAgICAgICAgRmxvYXRTaXplIGRlbHRhID0g
cG9zaXRpb24gLSBtX2N1cnJlbnRQb3NpdGlvbjsKLSAgICAgICAgbV9jdXJyZW50UG9zaXRpb24g
PSBXVEZNb3ZlKHBvc2l0aW9uKTsKLSAgICAgICAgbm90aWZ5UG9zaXRpb25DaGFuZ2VkKGRlbHRh
KTsKLSAgICB9KSkKLXsKLX0KLQotU2Nyb2xsQW5pbWF0b3JTbW9vdGg6On5TY3JvbGxBbmltYXRv
clNtb290aCgpID0gZGVmYXVsdDsKLQotYm9vbCBTY3JvbGxBbmltYXRvclNtb290aDo6c2Nyb2xs
KFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBTY3JvbGxHcmFudWxhcml0eSBncmFu
dWxhcml0eSwgZmxvYXQgc3RlcCwgZmxvYXQgbXVsdGlwbGllcikKLXsKLSAgICBpZiAoIW1fc2Ny
b2xsYWJsZUFyZWEuc2Nyb2xsQW5pbWF0b3JFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiBTY3Jv
bGxBbmltYXRvcjo6c2Nyb2xsKG9yaWVudGF0aW9uLCBncmFudWxhcml0eSwgc3RlcCwgbXVsdGlw
bGllcik7Ci0KLSAgICByZXR1cm4gbV9hbmltYXRpb24tPnNjcm9sbChvcmllbnRhdGlvbiwgZ3Jh
bnVsYXJpdHksIHN0ZXAsIG11bHRpcGxpZXIpOwotfQotCi12b2lkIFNjcm9sbEFuaW1hdG9yU21v
b3RoOjpzY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgb2Zm
c2V0KQotewotICAgIEZsb2F0UG9pbnQgcG9zaXRpb24gPSBTY3JvbGxhYmxlQXJlYTo6c2Nyb2xs
UG9zaXRpb25Gcm9tT2Zmc2V0KG9mZnNldCwgdG9GbG9hdFNpemUobV9zY3JvbGxhYmxlQXJlYS5z
Y3JvbGxPcmlnaW4oKSkpOwotICAgIG1fYW5pbWF0aW9uLT5zZXRDdXJyZW50UG9zaXRpb24ocG9z
aXRpb24pOwotCi0gICAgRmxvYXRTaXplIGRlbHRhID0gcG9zaXRpb24gLSBtX2N1cnJlbnRQb3Np
dGlvbjsKLSAgICBtX2N1cnJlbnRQb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgIG5vdGlmeVBvc2l0
aW9uQ2hhbmdlZChkZWx0YSk7Ci19Ci0KLSNpZiAhVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1F
X1RJTUVSKQotdm9pZCBTY3JvbGxBbmltYXRvclNtb290aDo6Y2FuY2VsQW5pbWF0aW9ucygpCi17
Ci0gICAgbV9hbmltYXRpb24tPnN0b3AoKTsKLX0KLQotdm9pZCBTY3JvbGxBbmltYXRvclNtb290
aDo6c2VydmljZVNjcm9sbEFuaW1hdGlvbnMoKQotewotICAgIG1fYW5pbWF0aW9uLT5zZXJ2aWNl
QW5pbWF0aW9uKCk7Ci19Ci0jZW5kaWYKLQotdm9pZCBTY3JvbGxBbmltYXRvclNtb290aDo6d2ls
bEVuZExpdmVSZXNpemUoKQotewotICAgIG1fYW5pbWF0aW9uLT51cGRhdGVWaXNpYmxlTGVuZ3Ro
cygpOwotfQotCi12b2lkIFNjcm9sbEFuaW1hdG9yU21vb3RoOjpkaWRBZGRWZXJ0aWNhbFNjcm9s
bGJhcihTY3JvbGxiYXIqKQotewotICAgIG1fYW5pbWF0aW9uLT51cGRhdGVWaXNpYmxlTGVuZ3Ro
cygpOwotfQotCi12b2lkIFNjcm9sbEFuaW1hdG9yU21vb3RoOjpkaWRBZGRIb3Jpem9udGFsU2Ny
b2xsYmFyKFNjcm9sbGJhciopCi17Ci0gICAgbV9hbmltYXRpb24tPnVwZGF0ZVZpc2libGVMZW5n
dGhzKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShT
TU9PVEhfU0NST0xMSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsQW5pbWF0b3JTbW9vdGguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1h
dG9yU21vb3RoLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjNmFjMDM1ODYyLi4w
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvclNt
b290aC5oCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
YykgMjAxMSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0g
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgU2Nyb2xsQW5pbWF0
b3JTbW9vdGhfaAotI2RlZmluZSBTY3JvbGxBbmltYXRvclNtb290aF9oCi0KLSNpbmNsdWRlICJT
Y3JvbGxBbmltYXRvci5oIgotCi0jaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU2Nyb2xsQW5pbWF0aW9uOwotCi1jbGFzcyBTY3JvbGxB
bmltYXRvclNtb290aCBmaW5hbCA6IHB1YmxpYyBTY3JvbGxBbmltYXRvciB7Ci1wdWJsaWM6Ci0g
ICAgZXhwbGljaXQgU2Nyb2xsQW5pbWF0b3JTbW9vdGgoU2Nyb2xsYWJsZUFyZWEmKTsKLSAgICB2
aXJ0dWFsIH5TY3JvbGxBbmltYXRvclNtb290aCgpOwotCi0gICAgYm9vbCBzY3JvbGwoU2Nyb2xs
YmFyT3JpZW50YXRpb24sIFNjcm9sbEdyYW51bGFyaXR5LCBmbG9hdCBzdGVwLCBmbG9hdCBtdWx0
aXBsaWVyKSBvdmVycmlkZTsKLSAgICB2b2lkIHNjcm9sbFRvT2Zmc2V0V2l0aG91dEFuaW1hdGlv
bihjb25zdCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7Ci0KLSNpZiAhVVNFKFJFUVVFU1RfQU5JTUFU
SU9OX0ZSQU1FX1RJTUVSKQotICAgIHZvaWQgY2FuY2VsQW5pbWF0aW9ucygpIG92ZXJyaWRlOwot
ICAgIHZvaWQgc2VydmljZVNjcm9sbEFuaW1hdGlvbnMoKSBvdmVycmlkZTsKLSNlbmRpZgotCi0g
ICAgdm9pZCB3aWxsRW5kTGl2ZVJlc2l6ZSgpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkQWRkVmVy
dGljYWxTY3JvbGxiYXIoU2Nyb2xsYmFyKikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRBZGRIb3Jp
em9udGFsU2Nyb2xsYmFyKFNjcm9sbGJhciopIG92ZXJyaWRlOwotCi1wcml2YXRlOgotCi0gICAg
c3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdGlvbj4gbV9hbmltYXRpb247Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoU01PT1RIX1NDUk9MTElORykK
LQotI2VuZGlmIC8vIFNjcm9sbEFuaW1hdG9yU21vb3RoX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxBbmltYXRvckd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5jcHAKc2ltaWxhcml0eSBp
bmRleCA4NSUKcmVuYW1lIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbEFu
aW1hdG9yR3RrLmNwcApyZW5hbWUgdG8gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9T
Y3JvbGxBbmltYXRvckdlbmVyaWMuY3BwCmluZGV4IDgzNjZmNDY5NjU0Li4wMzY1M2Q0MmZlNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbEFuaW1hdG9yR3Rr
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9y
R2VuZXJpYy5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiU2Nyb2xsQW5pbWF0b3JHdGsuaCIKKyNpbmNsdWRlICJTY3JvbGxBbmltYXRv
ckdlbmVyaWMuaCIKIAogI2luY2x1ZGUgIlNjcm9sbEFuaW1hdGlvbktpbmV0aWMuaCIKICNpbmNs
dWRlICJTY3JvbGxBbmltYXRpb25TbW9vdGguaCIKQEAgLTQ0LDEyICs0NCwxMiBAQCBzdGF0aWMg
Y29uc3QgU2Vjb25kcyBzY3JvbGxDYXB0dXJlVGhyZXNob2xkIHsgMTUwX21zIH07CiAKIHN0ZDo6
dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRvcj4gU2Nyb2xsQW5pbWF0b3I6OmNyZWF0ZShTY3JvbGxh
YmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
U2Nyb2xsQW5pbWF0b3JHdGs+KHNjcm9sbGFibGVBcmVhKTsKKyAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxTY3JvbGxBbmltYXRvckdlbmVyaWM+KHNjcm9sbGFibGVBcmVhKTsKIH0KIAotU2Ny
b2xsQW5pbWF0b3JHdGs6OlNjcm9sbEFuaW1hdG9yR3RrKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxh
YmxlQXJlYSkKK1Njcm9sbEFuaW1hdG9yR2VuZXJpYzo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljKFNj
cm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKICAgICA6IFNjcm9sbEFuaW1hdG9yKHNjcm9s
bGFibGVBcmVhKQotICAgICwgbV9vdmVybGF5U2Nyb2xsYmFyQW5pbWF0aW9uVGltZXIoKnRoaXMs
ICZTY3JvbGxBbmltYXRvckd0azo6b3ZlcmxheVNjcm9sbGJhckFuaW1hdGlvblRpbWVyRmlyZWQp
CisgICAgLCBtX292ZXJsYXlTY3JvbGxiYXJBbmltYXRpb25UaW1lcigqdGhpcywgJlNjcm9sbEFu
aW1hdG9yR2VuZXJpYzo6b3ZlcmxheVNjcm9sbGJhckFuaW1hdGlvblRpbWVyRmlyZWQpCiB7CiAg
ICAgbV9raW5ldGljQW5pbWF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxBbmltYXRpb25L
aW5ldGljPihtX3Njcm9sbGFibGVBcmVhLCBbdGhpc10oRmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7
CiAjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCkBAIC02NSwxMCArNjUsMTAgQEAgU2Nyb2xs
QW5pbWF0b3JHdGs6OlNjcm9sbEFuaW1hdG9yR3RrKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxl
QXJlYSkKICNlbmRpZgogfQogCi1TY3JvbGxBbmltYXRvckd0azo6flNjcm9sbEFuaW1hdG9yR3Rr
KCkgPSBkZWZhdWx0OworU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjp+U2Nyb2xsQW5pbWF0b3JHZW5l
cmljKCkgPSBkZWZhdWx0OwogCiAjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi12b2lkIFNj
cm9sbEFuaW1hdG9yR3RrOjplbnN1cmVTbW9vdGhTY3JvbGxpbmdBbmltYXRpb24oKQordm9pZCBT
Y3JvbGxBbmltYXRvckdlbmVyaWM6OmVuc3VyZVNtb290aFNjcm9sbGluZ0FuaW1hdGlvbigpCiB7
CiAgICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQogICAgICAgICByZXR1cm47CkBAIC04MCw3ICs4
MCw3IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JHdGs6OmVuc3VyZVNtb290aFNjcm9sbGluZ0FuaW1h
dGlvbigpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQotYm9vbCBTY3Jv
bGxBbmltYXRvckd0azo6c2Nyb2xsKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBT
Y3JvbGxHcmFudWxhcml0eSBncmFudWxhcml0eSwgZmxvYXQgc3RlcCwgZmxvYXQgbXVsdGlwbGll
cikKK2Jvb2wgU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpzY3JvbGwoU2Nyb2xsYmFyT3JpZW50YXRp
b24gb3JpZW50YXRpb24sIFNjcm9sbEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBmbG9hdCBzdGVw
LCBmbG9hdCBtdWx0aXBsaWVyKQogewogICAgIGlmICghbV9zY3JvbGxhYmxlQXJlYS5zY3JvbGxB
bmltYXRvckVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIFNjcm9sbEFuaW1hdG9yOjpzY3JvbGwo
b3JpZW50YXRpb24sIGdyYW51bGFyaXR5LCBzdGVwLCBtdWx0aXBsaWVyKTsKQEAgLTkwLDcgKzkw
LDcgQEAgYm9vbCBTY3JvbGxBbmltYXRvckd0azo6c2Nyb2xsKFNjcm9sbGJhck9yaWVudGF0aW9u
IG9yaWVudGF0aW9uLCBTY3JvbGxHcmFudWxhcmkKIH0KICNlbmRpZgogCi12b2lkIFNjcm9sbEFu
aW1hdG9yR3RrOjpzY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24oY29uc3QgRmxvYXRQb2lu
dCYgb2Zmc2V0LCBTY3JvbGxDbGFtcGluZykKK3ZvaWQgU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpz
Y3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgb2Zmc2V0LCBT
Y3JvbGxDbGFtcGluZykKIHsKICAgICBGbG9hdFBvaW50IHBvc2l0aW9uID0gU2Nyb2xsYWJsZUFy
ZWE6OnNjcm9sbFBvc2l0aW9uRnJvbU9mZnNldChvZmZzZXQsIHRvRmxvYXRTaXplKG1fc2Nyb2xs
YWJsZUFyZWEuc2Nyb2xsT3JpZ2luKCkpKTsKICAgICBtX2tpbmV0aWNBbmltYXRpb24tPnN0b3Ao
KTsKQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yR3RrOjpzY3JvbGxUb09m
ZnNldFdpdGhvdXRBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgb2Zmc2V0LAogICAgIHVwZGF0
ZVBvc2l0aW9uKFdURk1vdmUocG9zaXRpb24pKTsKIH0KIAotRmxvYXRQb2ludCBTY3JvbGxBbmlt
YXRvckd0azo6Y29tcHV0ZVZlbG9jaXR5KCkKK0Zsb2F0UG9pbnQgU2Nyb2xsQW5pbWF0b3JHZW5l
cmljOjpjb21wdXRlVmVsb2NpdHkoKQogewogICAgIGlmIChtX3Njcm9sbEhpc3RvcnkuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtMTI0LDcgKzEyNCw3IEBAIEZsb2F0UG9pbnQg
U2Nyb2xsQW5pbWF0b3JHdGs6OmNvbXB1dGVWZWxvY2l0eSgpCiAgICAgcmV0dXJuIEZsb2F0UG9p
bnQoYWNjdW1EZWx0YS54KCkgKiAtMSAvIChsYXN0IC0gZmlyc3QpLnZhbHVlKCksIGFjY3VtRGVs
dGEueSgpICogLTEgLyAobGFzdCAtIGZpcnN0KS52YWx1ZSgpKTsKIH0KIAotYm9vbCBTY3JvbGxB
bmltYXRvckd0azo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2
ZW50KQorYm9vbCBTY3JvbGxBbmltYXRvckdlbmVyaWM6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3Qg
UGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCkKIHsKICAgICBtX2tpbmV0aWNBbmltYXRpb24tPnN0
b3AoKTsKIApAQCAtMTMyLDYgKzEzMiw3IEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3JHdGs6OmhhbmRs
ZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCkKICAgICAgICAgcmV0
dXJuIChldmVudC50aW1lc3RhbXAoKSAtIG90aGVyRXZlbnQudGltZXN0YW1wKCkpID4gc2Nyb2xs
Q2FwdHVyZVRocmVzaG9sZDsKICAgICB9KTsKIAorI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcp
CiAgICAgaWYgKGV2ZW50LmlzRW5kT2ZOb25Nb21lbnR1bVNjcm9sbCgpKSB7CiAgICAgICAgIC8v
IFdlIGRvbid0IG5lZWQgdG8gYWRkIHRoZSBldmVudCB0byB0aGUgaGlzdG9yeSBhcyBpdHMgZGVs
dGEgd2lsbCBiZSAoMCwgMCkuCiAgICAgICAgIHN0YXRpY19jYXN0PFNjcm9sbEFuaW1hdGlvbktp
bmV0aWMqPihtX2tpbmV0aWNBbmltYXRpb24uZ2V0KCkpLT5zdGFydChtX2N1cnJlbnRQb3NpdGlv
biwgY29tcHV0ZVZlbG9jaXR5KCksIG1fc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbFNjcm9sbGJh
cigpLCBtX3Njcm9sbGFibGVBcmVhLnZlcnRpY2FsU2Nyb2xsYmFyKCkpOwpAQCAtMTQyLDEzICsx
NDMsMTQgQEAgYm9vbCBTY3JvbGxBbmltYXRvckd0azo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50KQogICAgICAgICBzdGF0aWNfY2FzdDxTY3JvbGxBbmlt
YXRpb25LaW5ldGljKj4obV9raW5ldGljQW5pbWF0aW9uLmdldCgpKS0+c3RhcnQobV9jdXJyZW50
UG9zaXRpb24sIGV2ZW50LnN3aXBlVmVsb2NpdHkoKSwgbV9zY3JvbGxhYmxlQXJlYS5ob3Jpem9u
dGFsU2Nyb2xsYmFyKCksIG1fc2Nyb2xsYWJsZUFyZWEudmVydGljYWxTY3JvbGxiYXIoKSk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KKyNlbmRpZgogCiAgICAgbV9zY3JvbGxIaXN0b3J5
LmFwcGVuZChldmVudCk7CiAKICAgICByZXR1cm4gU2Nyb2xsQW5pbWF0b3I6OmhhbmRsZVdoZWVs
RXZlbnQoZXZlbnQpOwogfQogCi12b2lkIFNjcm9sbEFuaW1hdG9yR3RrOjp3aWxsRW5kTGl2ZVJl
c2l6ZSgpCit2b2lkIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6d2lsbEVuZExpdmVSZXNpemUoKQog
ewogICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+dXBkYXRlVmlzaWJsZUxlbmd0aHMoKTsKIApAQCAt
MTU4LDE0ICsxNjAsMTQgQEAgdm9pZCBTY3JvbGxBbmltYXRvckd0azo6d2lsbEVuZExpdmVSZXNp
emUoKQogI2VuZGlmCiB9CiAKLXZvaWQgU2Nyb2xsQW5pbWF0b3JHdGs6OnVwZGF0ZVBvc2l0aW9u
KEZsb2F0UG9pbnQmJiBwb3NpdGlvbikKK3ZvaWQgU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjp1cGRh
dGVQb3NpdGlvbihGbG9hdFBvaW50JiYgcG9zaXRpb24pCiB7CiAgICAgRmxvYXRTaXplIGRlbHRh
ID0gcG9zaXRpb24gLSBtX2N1cnJlbnRQb3NpdGlvbjsKICAgICBtX2N1cnJlbnRQb3NpdGlvbiA9
IFdURk1vdmUocG9zaXRpb24pOwogICAgIG5vdGlmeVBvc2l0aW9uQ2hhbmdlZChkZWx0YSk7CiB9
CiAKLXZvaWQgU2Nyb2xsQW5pbWF0b3JHdGs6OmRpZEFkZFZlcnRpY2FsU2Nyb2xsYmFyKFNjcm9s
bGJhciogc2Nyb2xsYmFyKQordm9pZCBTY3JvbGxBbmltYXRvckdlbmVyaWM6OmRpZEFkZFZlcnRp
Y2FsU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogewogICAgIG1fa2luZXRpY0FuaW1h
dGlvbi0+dXBkYXRlVmlzaWJsZUxlbmd0aHMoKTsKIApAQCAtMTgyLDcgKzE4NCw3IEBAIHZvaWQg
U2Nyb2xsQW5pbWF0b3JHdGs6OmRpZEFkZFZlcnRpY2FsU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Ny
b2xsYmFyKQogICAgIGhpZGVPdmVybGF5U2Nyb2xsYmFycygpOwogfQogCi12b2lkIFNjcm9sbEFu
aW1hdG9yR3RrOjpkaWRBZGRIb3Jpem9udGFsU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFy
KQordm9pZCBTY3JvbGxBbmltYXRvckdlbmVyaWM6OmRpZEFkZEhvcml6b250YWxTY3JvbGxiYXIo
U2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiB7CiAgICAgbV9raW5ldGljQW5pbWF0aW9uLT51cGRhdGVW
aXNpYmxlTGVuZ3RocygpOwogCkBAIC0xOTksNyArMjAxLDcgQEAgdm9pZCBTY3JvbGxBbmltYXRv
ckd0azo6ZGlkQWRkSG9yaXpvbnRhbFNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikKICAg
ICBoaWRlT3ZlcmxheVNjcm9sbGJhcnMoKTsKIH0KIAotdm9pZCBTY3JvbGxBbmltYXRvckd0azo6
d2lsbFJlbW92ZVZlcnRpY2FsU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKQordm9pZCBT
Y3JvbGxBbmltYXRvckdlbmVyaWM6OndpbGxSZW1vdmVWZXJ0aWNhbFNjcm9sbGJhcihTY3JvbGxi
YXIqIHNjcm9sbGJhcikKIHsKICAgICBpZiAobV92ZXJ0aWNhbE92ZXJsYXlTY3JvbGxiYXIgIT0g
c2Nyb2xsYmFyKQogICAgICAgICByZXR1cm47CkBAIC0yMDgsNyArMjEwLDcgQEAgdm9pZCBTY3Jv
bGxBbmltYXRvckd0azo6d2lsbFJlbW92ZVZlcnRpY2FsU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Ny
b2xsYmFyKQogICAgICAgICBtX292ZXJsYXlTY3JvbGxiYXJBbmltYXRpb25DdXJyZW50ID0gMDsK
IH0KIAotdm9pZCBTY3JvbGxBbmltYXRvckd0azo6d2lsbFJlbW92ZUhvcml6b250YWxTY3JvbGxi
YXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCit2b2lkIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6d2ls
bFJlbW92ZUhvcml6b250YWxTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiB7CiAgICAg
aWYgKG1faG9yaXpvbnRhbE92ZXJsYXlTY3JvbGxiYXIgIT0gc2Nyb2xsYmFyKQogICAgICAgICBy
ZXR1cm47CkBAIC0yMTcsNyArMjE5LDcgQEAgdm9pZCBTY3JvbGxBbmltYXRvckd0azo6d2lsbFJl
bW92ZUhvcml6b250YWxTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiAgICAgICAgIG1f
b3ZlcmxheVNjcm9sbGJhckFuaW1hdGlvbkN1cnJlbnQgPSAwOwogfQogCi12b2lkIFNjcm9sbEFu
aW1hdG9yR3RrOjp1cGRhdGVPdmVybGF5U2Nyb2xsYmFyc09wYWNpdHkoKQordm9pZCBTY3JvbGxB
bmltYXRvckdlbmVyaWM6OnVwZGF0ZU92ZXJsYXlTY3JvbGxiYXJzT3BhY2l0eSgpCiB7CiAgICAg
aWYgKG1fdmVydGljYWxPdmVybGF5U2Nyb2xsYmFyICYmIG1fb3ZlcmxheVNjcm9sbGJhckFuaW1h
dGlvbkN1cnJlbnQgIT0gbV92ZXJ0aWNhbE92ZXJsYXlTY3JvbGxiYXItPm9wYWNpdHkoKSkgewog
ICAgICAgICBtX3ZlcnRpY2FsT3ZlcmxheVNjcm9sbGJhci0+c2V0T3BhY2l0eShtX292ZXJsYXlT
Y3JvbGxiYXJBbmltYXRpb25DdXJyZW50KTsKQEAgLTIzOCw3ICsyNDAsNyBAQCBzdGF0aWMgaW5s
aW5lIGRvdWJsZSBlYXNlT3V0Q3ViaWMoZG91YmxlIHQpCiAgICAgcmV0dXJuIHAgKiBwICogcCAr
IDE7CiB9CiAKLXZvaWQgU2Nyb2xsQW5pbWF0b3JHdGs6Om92ZXJsYXlTY3JvbGxiYXJBbmltYXRp
b25UaW1lckZpcmVkKCkKK3ZvaWQgU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpvdmVybGF5U2Nyb2xs
YmFyQW5pbWF0aW9uVGltZXJGaXJlZCgpCiB7CiAgICAgaWYgKCFtX2hvcml6b250YWxPdmVybGF5
U2Nyb2xsYmFyICYmICFtX3ZlcnRpY2FsT3ZlcmxheVNjcm9sbGJhcikKICAgICAgICAgcmV0dXJu
OwpAQCAtMjY1LDcgKzI2Nyw3IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JHdGs6Om92ZXJsYXlTY3Jv
bGxiYXJBbmltYXRpb25UaW1lckZpcmVkKCkKICAgICAgICAgaGlkZU92ZXJsYXlTY3JvbGxiYXJz
KCk7CiB9CiAKLXZvaWQgU2Nyb2xsQW5pbWF0b3JHdGs6OnNob3dPdmVybGF5U2Nyb2xsYmFycygp
Cit2b2lkIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6c2hvd092ZXJsYXlTY3JvbGxiYXJzKCkKIHsK
ICAgICBpZiAobV9vdmVybGF5U2Nyb2xsYmFyc0xvY2tlZCkKICAgICAgICAgcmV0dXJuOwpAQCAt
Mjg3LDcgKzI4OSw3IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JHdGs6OnNob3dPdmVybGF5U2Nyb2xs
YmFycygpCiAgICAgICAgIGhpZGVPdmVybGF5U2Nyb2xsYmFycygpOwogfQogCi12b2lkIFNjcm9s
bEFuaW1hdG9yR3RrOjpoaWRlT3ZlcmxheVNjcm9sbGJhcnMoKQordm9pZCBTY3JvbGxBbmltYXRv
ckdlbmVyaWM6OmhpZGVPdmVybGF5U2Nyb2xsYmFycygpCiB7CiAgICAgaWYgKG1fb3ZlcmxheVNj
cm9sbGJhckFuaW1hdGlvblRpbWVyLmlzQWN0aXZlKCkgJiYgIW1fb3ZlcmxheVNjcm9sbGJhckFu
aW1hdGlvblRhcmdldCkKICAgICAgICAgcmV0dXJuOwpAQCAtMzA1LDI3ICszMDcsMjcgQEAgdm9p
ZCBTY3JvbGxBbmltYXRvckd0azo6aGlkZU92ZXJsYXlTY3JvbGxiYXJzKCkKICAgICBtX292ZXJs
YXlTY3JvbGxiYXJBbmltYXRpb25UaW1lci5zdGFydE9uZVNob3Qob3ZlcmZsb3dTY3JvbGxiYXJz
QW5pbWF0aW9uSGlkZURlbGF5KTsKIH0KIAotdm9pZCBTY3JvbGxBbmltYXRvckd0azo6bW91c2VF
bnRlcmVkQ29udGVudEFyZWEoKQordm9pZCBTY3JvbGxBbmltYXRvckdlbmVyaWM6Om1vdXNlRW50
ZXJlZENvbnRlbnRBcmVhKCkKIHsKICAgICBzaG93T3ZlcmxheVNjcm9sbGJhcnMoKTsKIH0KIAot
dm9pZCBTY3JvbGxBbmltYXRvckd0azo6bW91c2VFeGl0ZWRDb250ZW50QXJlYSgpCit2b2lkIFNj
cm9sbEFuaW1hdG9yR2VuZXJpYzo6bW91c2VFeGl0ZWRDb250ZW50QXJlYSgpCiB7CiAgICAgaGlk
ZU92ZXJsYXlTY3JvbGxiYXJzKCk7CiB9CiAKLXZvaWQgU2Nyb2xsQW5pbWF0b3JHdGs6Om1vdXNl
TW92ZWRJbkNvbnRlbnRBcmVhKCkKK3ZvaWQgU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjptb3VzZU1v
dmVkSW5Db250ZW50QXJlYSgpCiB7CiAgICAgc2hvd092ZXJsYXlTY3JvbGxiYXJzKCk7CiB9CiAK
LXZvaWQgU2Nyb2xsQW5pbWF0b3JHdGs6OmNvbnRlbnRBcmVhRGlkU2hvdygpCit2b2lkIFNjcm9s
bEFuaW1hdG9yR2VuZXJpYzo6Y29udGVudEFyZWFEaWRTaG93KCkKIHsKICAgICBzaG93T3Zlcmxh
eVNjcm9sbGJhcnMoKTsKIH0KIAotdm9pZCBTY3JvbGxBbmltYXRvckd0azo6Y29udGVudEFyZWFE
aWRIaWRlKCkKK3ZvaWQgU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpjb250ZW50QXJlYURpZEhpZGUo
KQogewogICAgIGlmIChtX292ZXJsYXlTY3JvbGxiYXJzTG9ja2VkKQogICAgICAgICByZXR1cm47
CkBAIC0zMzYsMTIgKzMzOCwxMiBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yR3RrOjpjb250ZW50QXJl
YURpZEhpZGUoKQogICAgIH0KIH0KIAotdm9pZCBTY3JvbGxBbmltYXRvckd0azo6bm90aWZ5Q29u
dGVudEFyZWFTY3JvbGxlZChjb25zdCBGbG9hdFNpemUmKQordm9pZCBTY3JvbGxBbmltYXRvckdl
bmVyaWM6Om5vdGlmeUNvbnRlbnRBcmVhU2Nyb2xsZWQoY29uc3QgRmxvYXRTaXplJikKIHsKICAg
ICBzaG93T3ZlcmxheVNjcm9sbGJhcnMoKTsKIH0KIAotdm9pZCBTY3JvbGxBbmltYXRvckd0azo6
bG9ja092ZXJsYXlTY3JvbGxiYXJTdGF0ZVRvSGlkZGVuKGJvb2wgc2hvdWxkTG9ja1N0YXRlKQor
dm9pZCBTY3JvbGxBbmltYXRvckdlbmVyaWM6OmxvY2tPdmVybGF5U2Nyb2xsYmFyU3RhdGVUb0hp
ZGRlbihib29sIHNob3VsZExvY2tTdGF0ZSkKIHsKICAgICBpZiAobV9vdmVybGF5U2Nyb2xsYmFy
c0xvY2tlZCA9PSBzaG91bGRMb2NrU3RhdGUpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxBbmltYXRvckd0ay5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuaApzaW1pbGFy
aXR5IGluZGV4IDkzJQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Ny
b2xsQW5pbWF0b3JHdGsuaApyZW5hbWUgdG8gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJp
Yy9TY3JvbGxBbmltYXRvckdlbmVyaWMuaAppbmRleCBiMjA0NzAzMmYwZS4uZjlmY2E4NmYzNzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxBbmltYXRvckd0
ay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JH
ZW5lcmljLmgKQEAgLTI4LDggKzI4LDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRl
ZiBTY3JvbGxBbmltYXRvckd0a19oCi0jZGVmaW5lIFNjcm9sbEFuaW1hdG9yR3RrX2gKKyNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiU2Nyb2xsQW5pbWF0b3IuaCIKICNpbmNsdWRlICJUaW1lci5o
IgpAQCAtMzgsMTAgKzM3LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2Nyb2xs
QW5pbWF0aW9uOwogCi1jbGFzcyBTY3JvbGxBbmltYXRvckd0ayBmaW5hbCA6IHB1YmxpYyBTY3Jv
bGxBbmltYXRvciB7CitjbGFzcyBTY3JvbGxBbmltYXRvckdlbmVyaWMgZmluYWwgOiBwdWJsaWMg
U2Nyb2xsQW5pbWF0b3IgewogcHVibGljOgotICAgIGV4cGxpY2l0IFNjcm9sbEFuaW1hdG9yR3Rr
KFNjcm9sbGFibGVBcmVhJik7Ci0gICAgdmlydHVhbCB+U2Nyb2xsQW5pbWF0b3JHdGsoKTsKKyAg
ICBleHBsaWNpdCBTY3JvbGxBbmltYXRvckdlbmVyaWMoU2Nyb2xsYWJsZUFyZWEmKTsKKyAgICB2
aXJ0dWFsIH5TY3JvbGxBbmltYXRvckdlbmVyaWMoKTsKIAogcHJpdmF0ZToKICNpZiBFTkFCTEUo
U01PT1RIX1NDUk9MTElORykKQEAgLTkzLDUgKzkyLDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFNjcm9sbEFuaW1hdG9yR3RrX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvTG93UG93ZXJNb2RlTm90aWZpZXJH
TGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvTG93UG93ZXJNb2RlTm90aWZp
ZXJHTGliLmNwcAppbmRleCBjYWE4NTY3OWM5OC4uNjM4N2YxZmU1ZWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvTG93UG93ZXJNb2RlTm90aWZpZXJHTGliLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0xvd1Bvd2VyTW9kZU5vdGlmaWVyR0xp
Yi5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKIAogI2luY2x1ZGUgPGNzdHJpbmc+CiAjaW5jbHVkZSA8
Z2lvL2dpby5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxh
dGZvcm1XaGVlbEV2ZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0
Zm9ybVdoZWVsRXZlbnRHdGsuY3BwCmluZGV4IGEzYjQ3NzRlMzZlLi4zMTFhNmI0ZTU5NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtV2hlZWxFdmVudEd0
ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtV2hlZWxFdmVu
dEd0ay5jcHAKQEAgLTExMSwxMCArMTExLDQgQEAgUGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9y
bVdoZWVsRXZlbnQoR2RrRXZlbnRTY3JvbGwqIGV2ZW50KQogICAgIG1fZGVsdGFZICo9IHN0YXRp
Y19jYXN0PGZsb2F0PihTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVTdGVwKCkpOwogfQogCi1GbG9h
dFBvaW50IFBsYXRmb3JtV2hlZWxFdmVudDo6c3dpcGVWZWxvY2l0eSgpIGNvbnN0Ci17Ci0gICAg
Ly8gVGhlIHN3aXBpbmcgdmVsb2NpdHkgaXMgc3RvcmVkIGluIHRoZSBkZWx0YXMgb2YgdGhlIGV2
ZW50IGRlY2xhcmluZyBpdC4KLSAgICByZXR1cm4gaXNUcmFuc2l0aW9uaW5nVG9Nb21lbnR1bVNj
cm9sbCgpID8gRmxvYXRQb2ludChtX3doZWVsVGlja3NYLCBtX3doZWVsVGlja3NZKSA6IEZsb2F0
UG9pbnQoKTsKLX0KLQotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>